需求
程序中的某些消息推送到企业微信中,通过微信进行接收。
代码
import requests
import json
import yaml
class Wechatpush:
def __init__(self, corpid, corpsecret, agentid=None) -> None:
self.corpid = corpid
self.corpsecret = corpsecret
self.agentid = agentid
self.token = None
def get_token(self):
params = {
'corpid': self.corpid,
'corpsecret': self.corpsecret
}
r = requests.get(
'https://qyapi.weixin.qq.com/cgi-bin/gettoken', params=params).content
r = json.loads(r)
if r['errcode'] == 0:
self.token = r['access_token']
return r['access_token']
else:
print("error:{}".format(r['errmsg']))
return None
def send_content(self, data):
url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}".format(
self.token)
res = requests.post(url, data=json.dumps(data)).json()
if res.get("errcode") == 40014:
self.get_token()
return self.send_content(data)
return res
def sendtext(self, users, content, agentid=None):
if agentid is None:
agentid = self.agentid
data = {
"touser": users,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": content,
},
"safe": 0,
"enable_id_trans": 0,
"enable_duplicate_check": 0,
"duplicate_check_interval": 1800
}
return self.send_content(data)
def send_card(self, users, title, desp, content, agentid=None):
if agentid is None:
agentid = self.agentid
data = {
"touser": users,
"msgtype": "textcard",
"agentid": agentid,
"textcard": {
"title": title,
"description": desp,
"url": "https//www.baidu.com",
"btntxt": "更多"
},
"enable_id_trans": 0,
"enable_duplicate_check": 0,
"duplicate_check_interval": 1800
}
return self.send_content(data)
def main():
corid="XXX"
corpsecret="XXX"
agentid="XXX"
mypush = Wechatpush(corid, corpsecret, agentid)
# mypush.sendtext(agentid, "@all", "测试消息")
mypush.send_card("@all", "测试消息", "长的消息", "aaaaaaaaaaaaaaaaaa")
if __name__ == "__main__":
main()