企业微信机器人开发--python--定时消息推送
机器人创建
机器人使用
机器人创建好后,可以做些什么呢?当然是想要它做什么就看你后台怎么开发了。大致说下原理,具体的可以查看。机器人本质就是一个前端页,你可以通过后台业务向前端页Post消息即可。 官方文档里写了直接使用curl工具进行消息推送,不过这个示例是一次性的。还需要手动触发,大多数机器人工作,至少得有一个定时自动发送的功能吧。当然,你可以直接建一个定时任务在机器上。不过本篇文章标题注明了,是使用python,所以这个地方,以python源码为例,进行示例展示。
#coding=utf-8
import json
import requests
# 将此处的机器人hook地址替换为你创建的机器人地址即可
webhook_url = "robot_hook"
# 普通 text 文本类型消息
# msgtype: 消息类型,此处为 text
# content: 消息内容,长度 < 2048字节,UTF-8 编码
# mentioned_list: @某个成员,或者@all
# mentioned_mobile_list: @手机号码
text_push_content = """广州今日天气:29度,大部分多云,降雨概率:60%
"""
text_data = {
"msgtype": "text",
"text": {
"content": text_push_content,
"mentioned_list": ["@all"]
# "mentioned_mobile_list": ["@all"]
}
}
def post_data(url,data):
# 注意:data发送时,一定要是json格式,另外,字符编码需要是utf-8
postdata = str(json.dumps(data)).encode(utf-8)
r = requests.post(url, data=postdata)
print (r.text)
if __name__ == __main__:
post_data(webhook_url,text_data)
示例消息使用的是官网中的,可以根据自己想要的消息内容进行生成,加一个消息生成器即可。将web_hook替换好后,运行代码,正常情况下,你的机器人就会推送上面的天气消息了。同样,这个示例这样子,仍然只是手动触发型机器人,怎么定时自动推送呢,使用python创建一个定时任务咯,我使用的是apscheduler。 示例片段
# coding=utf-8
from apscheduler.schedulers.background import BackgroundScheduler
# 将此处的机器人hook地址替换为你创建的机器人地址即可
webhook_url = "robot_hook"
def job():
#调用消息生成器
text_data = generation_info()
# 注意:data发送时,一定要是json格式,另外,字符编码需要是utf-8
postdata = str(json.dumps(text_data)).encode(utf-8)
r = requests.post(webhook_url, data=postdata)
print (r.text)
def cron_job_one(func_ptr):
# BackgroundScheduler: 适合于要求任何在程序后台运行的情况,当希望调度器在应用后台执行时使用。
scheduler = BackgroundScheduler()
# 采用非阻塞的方式
scheduler.add_job(func_ptr, cron, day_of_week=mon-fri,
hour=9,14,18, minute=30, second=0, id=job_one)
# 这是一个独立的线程
scheduler.start()
scheduler.print_jobs()
if __name__ == __main__:
cron_job_one(job)
while True:
pass
