从零搭建微信机器人(二):发送文本消息

从零搭建微信机器人(一):注册企业微信创建应用
从零搭建微信机器人(二):发送文本消息
从零搭建微信机器人(三):定时触发任务
从零搭建微信机器人(四):封装消息发送接口


本项目的源码链接: 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')

运行该代码,如何操作正确会在微信上收到如下消息
在这里插入图片描述
本文介绍了如何向微信发送文本消息,下一篇将介绍通过设置触发任务,在某时刻自动向微信推送消息。
上一篇:从零搭建微信机器人(一):注册企业微信创建应用
下一篇:从零搭建微信机器人(三):定时触发任务

猜你喜欢

转载自blog.csdn.net/weixin_44387339/article/details/117392206