自定义企业微信机器人(python版)

1,151 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情

目前比较主流的企业内部通讯软件就是企业微信、钉钉和飞书。本篇文章主要介绍如何在企业微信上自定义机器人(其他软件也是类似操作步骤,感兴趣的可以自己进行尝试)。

本篇文章主要是自定义一个企业微信机器人,用来发送天气预报信息,效果如下:

image.png

创建企业机器人

在企业微信终端,进入一个群(有管理权限),然后添加机器人,添加成功后,就可以在群里看到这个机器人了,点击刚创建的自定义机器人,就可以看到具体的配置信息。

image-20210110144206823

可以看到,机器人本身就提供了推送消息到群的测试功能,机器人支持文本格式和markdown格式的文档。点击【机器人配置说明】页面可以看到群机器人具体的使用方式,这里就不进行详细的叙述了。主要原理就是通过机器人的webhook地址,发送符合格式要求的信息。

脚本实现:

def send_to_robot(content):
    params = {
        "key": "自定义机器人webhook地址中的key值"
    }
    data = {
        "msgtype": "markdown",
        "markdown": {
            "content": content
        }
    }
    requests.post("https://qyapi.weixin.qq.com/cgi-bin/webhook/send", params=params, json=data)

获得天气数据

这里主要是通过聚合数据网站获取天气数据的API,选择免费的天气预报API,如下,还有很多其他的API,大家感兴趣的也可以试试。

image-20210110145143815

这个API本身也是提供了在线测试的功能,主要原理也是访问对应的API,获取对应的天气数据信息。网站上接口的具体信息已经写的很详细了,这里就不进行介绍了。

image-20210110145338616

脚本实现:

def get_weather_info():
    params = {
        "city": "深圳",
        "key": "从聚合数据中获取API的key值"  
    }
    resp = requests.get("http://apis.juhe.cn/simpleWeather/query", params=params)
    if resp.status_code == 200:
        if resp.json()['error_code'] == 0:
            return resp.json()['result']

脚本实现机器人发送信息

上面已经实现了自定义机器人和天气数据获取,接下来就是将获取的天气数据进行解析然后拼接成符合格式的消息,然后通过群机器人将消息进行发送。

def parse_weather_info(weather_info):
    """
        **深圳今日天气:**
        晴 25℃ 东南风 2级 湿度:72 空气质量指数:49 
        **近5天天气情况:**
        2022-10-13 晴 23/29℃
        2022-10-14 晴 23/30℃
        2022-10-15 晴 24/31℃
        2022-10-16 晴转多云 22/32℃
        2022-10-17 多云 20/29℃
        (温度低于20)请大家注意防寒保暖 @all
        :return:
        """
    realtime_weather = weather_info['realtime']
    realtime_weather_msg = f"{realtime_weather['info']} {realtime_weather['temperature']}{realtime_weather['direct']} {realtime_weather['power']} 湿度:{realtime_weather['humidity']} 空气质量指数:{realtime_weather['aqi']} "
    future_weather = weather_info['future']
    future_weather_msg = ""
    for day_weather in future_weather:
        future_weather_msg += f"{day_weather['date']} {day_weather['weather']} {day_weather['temperature']}\n"
    weather_msg = f"**深圳今日天气:**\n{realtime_weather_msg}\n**近5天天气情况:**\n{future_weather_msg}"
    if int(realtime_weather['temperature']) < 20:
        weather_msg += "请大家注意防寒保暖~\n"
    return weather_msg

if __name__ == '__main__':
    weather_info = parse_weather_info(get_weather_info())
    send_to_robot(weather_info)

总结

这里是实现了天气预报,其实在真实项目中可以拿来做告警或者通知等等,然后还可以通过定时任务去定时触发脚本,完成自动化,感兴趣的伙伴可以在自己的办公软件中操练起来。