从零搭建微信机器人(一):注册企业微信创建应用
从零搭建微信机器人(二):发送文本消息
从零搭建微信机器人(三):定时触发任务
从零搭建微信机器人(四):封装消息发送接口
本项目的源码链接: hanfangyuan/wechat-robot,本文对应仓库tag为2.0
在上一篇 从零搭建微信机器人(一):注册企业微信创建应用中,我们注册了企业微信,并且创建了机器人应用,本篇博客将要介绍如何向微信发送消息。
1. 搭建python环境
我是用一台云服务器部署的机器人,操作系统是Ubuntu 18.04。不过由于用的是python编写的程序,跟操作系统没有多大关系。我使用的python版本为3.6.13,推荐使用conda创建python虚拟环境,linux上conda的使用可以参考文章miniconda安装与使用,虚拟环境创建命令如下:
conda create --name wechat_robot python=3.6
本篇文章主要用到requests包,conda activate wechat_robot
进入虚拟环境,pip install requests
安装。
2. 发送消息
主要参考了企业微信API简易教程
2.1 发送消息地址
消息发送请求方式为POST,消息发送请求地址为https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN,需要把URL中的ACCESS_TOKEN更换为自己企业微信应用的access_token。
2.2 access_token获取
access_token获取的请求方式为GET,请求地址为https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET,URL中的ID以及SECRET需要替换为事先保存的企业id以及secret(详见从零搭建微信机器人(一):注册企业微信创建应用3.3 查看企业与应用参数)
请求成功后,会返回一段json字符串
{
'errcode': 0,
'errmsg': 'ok',
'access_token':'xxxxxx', //'xxxxxx'即为access_token的值
'expires_in': 7200 // 7200为该token的过期时间,一般两个小时后会过期,需要重新请求
}
2.3 构造文本消息体
文本消息体格式如下
{
"touser" : "ZhangSan|LiSi",
"msgtype" : "text",
"agentid" : 1000002,
"text" : {
"content" : "我就试一下"
},
"safe":0
}
touser:要把此消息推给谁,全员发送"@all",发送给特定单个人或几个人需要指定账号名称,多名账号名称间用’|'间隔。用户的账号名称可以登录企业微信管理后台,在通讯录中点击用户名称查看。
msgtype:本消息的类型
agentid:指定由哪个应用给用户发送消息,一般用户创建的第一应用的id为1000002,agentid查看方式详见从零搭建微信机器人(一):注册企业微信创建应用3.3 查看企业与应用参数
content:本消息的具体内容
3. 代码
代码不是很长,直接贴在下面
import requests
import json
# 企业id、key
CORP_ID = '更换为你的企业id'
CORP_SECRET = '更换为你的应用secret'
AGENT_ID = 更换为你的应用id,注意是数字类型,不是字符串
# 获取token
def get_token():
token_api = (
'https://qyapi.weixin.qq.com/cgi-bin/gettoken?' +
f'corpid={CORP_ID}&corpsecret={CORP_SECRET}'
)
response = requests.get(token_api)
print(response.json())
return response.json()['access_token']
# 发送文本消息
def send_text_message(content, touser):
data = json.dumps({
"touser" : touser,
"msgtype" : "text",
"agentid" : AGENT_ID,
"text" : {
"content" : content
},
"safe":0
})
send_api = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?' + f'access_token={get_token()}'
res = requests.post(send_api, data=data).json()
print(res)
if __name__ == '__main__':
send_text_message('hello world!', '@all')
运行该代码,如何操作正确会在微信上收到如下消息
本文介绍了如何向微信发送文本消息,下一篇将介绍通过设置触发任务,在某时刻自动向微信推送消息。
上一篇:从零搭建微信机器人(一):注册企业微信创建应用
下一篇:从零搭建微信机器人(三):定时触发任务