上一篇讲到了如何使用企业微信发送各种类型的信息。
本篇讲一下怎么跟自己的程序做关联,如:自己的程序跑完了之后,如何把结果通过企业微信通知。
实际例子没想好,就用刚才学的flask吧
思路:
1、定义一个函数A,写自己要做的事情
2、定义一个函数B,用来发送执行发送企业微信的动作
3、用flask做一个web接口
4、调用接口执行函数A。根据执行结果判断是否要发送企业微信通知
在说具体步骤之前,插一个小话题
关于企业微信的access_token的。那玩意儿时效性太短了。昨天生成的,今天就没用了。无奈,重写一下生成access_token的方法,让程序每次执行的时候都生成一次吧。
小话题的操作步骤:
新建access_token.py文件,写代码。其中cropid,secretid是从企业微信里获取的,我写到了文件里。不知道怎么获取的,可以参考下:https://blog.csdn.net/xkukeer/article/details/124124245?spm=1001.2014.3001.5501
import requests
import config
def get_access_token():
url = f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={config.cropid}&corpsecret={config.secretid}'
r = requests.get(url)
access_token = r.json()['access_token']
return access_token
这段代码先放着,不用运行。over
小话题说完了。
具体实现步骤:
1、定义一个函数add:计算传入参数的值,并返回
2、定义发送企业微信send_text_message
3、做个flask的接口,路由给两个吧。一个/一个/add。
其中:/主要用于打开页面的时候别报错;
/add主要用于计算并发送消息
import requests
import json
import faker
from work_wechat import config
import access_token
from flask import Flask
fk = faker.Faker()
token = access_token.get_access_token()
def add(a,b):
return a+b
def send_text_message():
url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}&random=69152"
data = json.dumps({
"touser": config.touser,
"toparty": config.toparty,
"totag": config.totag,
"msgtype": "text",
"agentid": config.agentid_ceshi1,
"text": {
"content": "计算完成"
},
"safe": 0,
"enable_id_trans": 0,
"enable_duplicate_check": 0
})
headers = {
'User-Agent': fk.user_agent(),
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=data)
print(response.text)
#----------------------------------------------------------------------------------------------------------------------
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
@app.route('/add/<int:a>+<int:b>')
def plus(a,b):
if add(a, b) == 10:# 如果a+b的结果=10,就算成功。执行if后边的语句,发送企业微信消息
result = 'success'
send_text_message()#发送企业微信消息
print(result)
else:
result = 'fail'# 如果a+b不等于10,则失败,不发送
print(result)
return result # 把结果打印到网页上
if __name__ == '__main__':
app.run(port=8082,debug=True) # 启动flask
代码完成,开始测试:
1、用2和8试下,结果如下:
企业微信接受到了消息
2、用2和1试下,结果如下:企业微信没收到消息
add()这个函数是我要做的事情
send_text_message()这个函数是发送消息的功能代码
flask里的plus()做了判断:要做的事情是否完成?如果完成了,就发消息通知;如果没完成就不发送(或者也可以发送,提示信息是失败)
那么按照这个思路,是否可以可以进行一些扩展?
比如:用于学生在线考试的成绩通知:
学生在线做题,交卷之后,自动执行后端的评分程序。把结果写入数据库,等所有人都交卷完成后,给班主任(学生)发通知,告诉班主任(学生)成绩。
比如:用于问卷收集的数据分析通知:
公司A给10000个用户发了调查问卷,客户填完后,结果入库。每天18.00给运营发送问卷回答情况以及问卷数据分析。等等