0%

企业微信api实时给私人微信推送数据

前言

有些场景下需要给自己的微信推送数据,达到通知的效果。这里的实现有很多,比如server酱等相关第三方平台,但是会随着腾讯的相关协议波动,并且有时候简短的消息需要跳转相关网页查看详情,有些许的不便,于是今天带来一种解决的办法,也就是替代品。结合服务器能做到不错的效果,也可以与合作的同学实现数据共享。

server酱首页链接

使用效果:

很明显的可以看出来,毕竟是第三方平台,不便于自己使用。

而使用企业微信的api我们可以给自己私人推送一些自己想要的数据或者是通知。也可以拉入自己小组的其他朋友,以实现数据共享。

实现步骤

注册企业微信

企业微信注册

注册后需要用到一些参数:

  1. 企业ID
  2. 应用id
  3. 应用密匙

访问接口

根据官方的文档我们可以清晰的看到使用步骤,这里只做部分的说明和实现。

接口定义

应用支持推送文本、图片、视频、文件、图文等类型。

请求方式:POST(HTTPS
请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN

参数说明:

参数 是否必须 备注
access_token 接口凭证(有时效性)

消息类型

文本消息

post请求data示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"touser" : "UserID1|UserID2|UserID3",
"toparty" : "PartyID1|PartyID2",
"totag" : "TagID1 | TagID2",
"msgtype" : "text",
"agentid" : 1,
"text" : {
"content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。"
},
"safe":0,
"enable_id_trans": 0,
"enable_duplicate_check": 0,
"duplicate_check_interval": 1800
}

这里我们可以看到content中是支持a标签的,换行用转义过的\n,大概效果如下:

请求参数含义:

参数 是否必须 参数说明
touser 成员ID列表(特殊情况:指定为@all,则向关注该企业应用的全部成员发送)
toparty 部门ID列表
totag 标签ID列表
msgtype 消息类型
agentid 企业应用的id, int型
content 消息内容,最长不超过2048个字节,超过将截断(支持id转译)
safe 表示是否是保密消息,0表示可对外分享,1表示不能分享且内容显示水印,默认为0
enable_duplicate_check 表示是否开启重复消息检查,0表示否,1表示是,默认0
duplicate_check_interval 表示是否重复消息检查的时间间隔,默认1800s,最大不超过4小时

这里需要注意的是,touser、toparty、totag不能同时为空

其他消息

支持的消息类型有:

文本卡片消息展现 :

图文消息展现:

markdown示例效果:

任务卡片消息展现 :

等等等等。

值得注意的是部分消息普通微信无法查看,例如markdown类型,需要使用企业微信才可以查看,失去了我们图求的便利性,故放弃。

实例

这里放上编写的代码实例,简单调用了text类型的发送,这里的小米运动的实现可以参照之前的博文。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import requests
import json
from 小米运动.小米运动刷步 import domain
from 爬虫基础.天气查询 import get_weather

corpid = '企业id'
corpsecret = '应用密匙'
token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={}&corpsecret={}'.format(corpid, corpsecret)
common_headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.63'
}
ACCESS_TOKEN = requests.get(url=token_url, headers=common_headers).json().get('access_token')
vx_api = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={}'.format(ACCESS_TOKEN)


def send_message(message, text_type):
data = {
"touser": '@all',
"msgtype": text_type,
"agentid": '应用id',
text_type: {'content': message}
}
data = bytes(json.dumps(data), 'utf-8')
result = requests.post(url=vx_api, headers=common_headers, data=data).text
print(result)


if __name__ == '__main__':
weather = get_weather('无为')
send_message(weather, 'text')
res = domain(user=小米账号, pwd="密码", step=步数)
send_message(message=res, text_type='text')

运行结果

根据微信企业微信的api文档,我们可以做很多的事情,例如定时任务,收到指定关键字回复消息等,可以根据服务器完美的融合。

具体请参照企业微信官网开发文档

官方开发文档

注意事项

有时候可能根据api返回的json错误码说明,仍然不知道自己的参数在哪里出错,此时可以在接口请求url里加上debug=1参数。

然后根据返回的实例,在微信的错误码查询工具中根据hint码值查看相关错误。

错误码查询工具

本文标题:企业微信api实时给私人微信推送数据

文章作者:fanchen

发布时间:2021年02月09日 - 00:31:15

最后更新:2021年02月09日 - 01:32:58

原始链接:http://88fanchen.github.io/posts/5bb6de70/

许可协议:署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。