在小程序的开发过程中,会存在模板消息的发送,具体文档见 这里,模板消息的发送是和语言无关的,这里将简要写一下怎么用 Python 给用户发送模板消息。
通过文档可以知道,发送的时候,需要使用小程序的 access_token 以及用户提交的 form_id,这里实现小程序的发送也就主要分为三部分:
1. 获取小程序的 access_token;
2. 获取用户提交的 form_id;
3. 给用户发送模板消息。
1. 获取小程序的 access_token,由于失效期为 2 小时,为了避免每次发送的时候都要去请求接口获取,这里可以使用一个定时任务,定时的时间只需要少于两个小时就可以,获取到 access_token 后,存储在 Redis 中,这样在小程序中包括发送模板消息在内,只需要直接读取 Redis 的值就可以了。示例代码如下:
1 def get_access_token(): 2 payload = { 3 \'grant_type\': \'client_credential\', 4 \'appid\': \'appid\', 5 \'secret\': \'secret\' 6 } 7 8 req = requests.get(\'https://api.weixin.qq.com/cgi-bin/token\', params=payload, timeout=3, verify=False) 9 access_token = req.json().get(\'access_token\') 10 redis.set(\'ACCESS_TOKEN\', access_token)
2. 获取用户提交的 form_id,这里只需要提供一个接口给小程序就可以了,代码示例如下:
1 class FormHandler(RequestHandler): 2 3 def post(self): 4 req_data = self.request.body 5 req_data = json.loads(req_data) 6 form_id = req_data.get(\'form_id\') 7 template_push(form_id) # 使用消息进行模板推送
3. 发送模板消息
1 def template_push(form_id): 2 data = { 3 "touser": \'openid\', 4 "template_id": \'template_id\', 5 "page": \'pages/index/index\', 6 "form_id": form_id, 7 "data": { 8 \'keyword1\': { 9 \'value\': \'value1\' 10 } 11 }, 12 "emphasis_keyword": \'\' 13 } 14 access_token = redis.get(\'ACCESS_TOKEN\') 15 push_url = \'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token={}\'.format(access_token) 16 requests.post(push_url, json=data, timeout=3, verify=False)
至此,用户就会收到消息了。