大家好,又见面了,我是你们的朋友全栈君。
api 文档就是这里啦。
https://work.weixin.qq.com/api/doc#90000/90135/90236/%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF
我感觉腾讯并没有把这个error code做得很细,反之,非常笼统,让你看到这个err不知所措不晓得到底啥问题。
我这边要用微信接收系统发出来的alert,比如哪个服务器cpu负荷高,io高,啥的。。对吧。很自然,看到腾讯的大神们提供的例子如下,很明显怎么使用,这都不用说。
query_string =
{
"touser" : "UserID1|UserID2|UserID3",
"toparty" : "PartyID1|PartyID2",
"totag" : "TagID1 | TagID2",
"msgtype" : "text",
"agentid" : 1,
"text" : {
"content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
},
"safe":0,
"enable_id_trans": 0,
"enable_duplicate_check": 0,
}
但是这个json对象,直接用python的requset发送过去,不管我怎么改,它就是不对,永远40008。。
然后我用postman调试,生成例子代码,发现在发送之前,这个json对象被转义成纯文本了。。。
所以我这边在发送之前,对它做个json.dump()的操作就可以了:
def sendWechatAlertMsg(alert):
token = getWechatToken()
url = getWechatAPIURL()
querystring = {'access_token': token}
payload = {
"touser": "somebody",
"msgtype": "text",
"agentid": "123456789",
"text": {
"content": "You jump, I jump, we all jump, you all family jump!!!",
},
"safe": 0,
"enable_id_trans": 0,
"enable_duplicate_check": 0,
}
headers = {
'cache-control': 'no-cache'
}
# 这里加一个 json.dumps()就可以了。
response = requests.request(
'POST', url, data=json.dumps(payload), headers=headers, params=querystring)
if response.json().get('errcode') > 0:
logger.error('failed send to wechat, err msg: ' +
response.json().get('errmsg'))
return False
else:
logger.error('successfully sent to weChat')
return True
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132689.html原文链接:https://javaforall.cn