企业微信机器人开发--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
经验分享 程序员 微信小程序 职场和发展