开发环境
操作系统:CentOS 7.4
Python版本 :3.6
模块:json,requests
1. 微信企业号设置
1.1 企业号注册
微信企业号注册是免费的而且无需企业认证,大家放心使用
注册地址:
https://mp.weixin.qq.com/
点击企业微信并填写信息
1.2 企业号设置
注册好之后我们邀请一些同事进来后进行设置,以便于我们更好的利用
通讯录设置
这里点击标签详情可以看到标签的ID号,后面程序会用的
增加应用
微信企业号发送信息需要创建一个应用,我们这里创建一个服务器报警的应用
接下来设置应用的可见范围,指的是这个应用可以发送的范围
这里我们选择最上层,即公司的名称
这里请记住AgentId和Secret
2. 使用微信企业号发送信息
调试工具及API文档
http://qydev.weixin.qq.com/debug
https://work.weixin.qq.com/api/doc
2.1 发送信息文档
需要安装request模块
pip3 install requests
我们根据下面的文档进行发送信息
https://work.weixin.qq.com/api/doc#10167
2.2 获取Token
根据上面的文档需要首先获取Token
def GetToken():Corpid='ww3083060923921313121' # 企业IDCorpSecret='5_vWbwROiUQJkc2wBEPxkO0slPe2NsJ_qpvx2bW_M' #企业号应用的Secret值gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + Corpid + '&corpsecret=' + CorpSecret #print (gettoken_url)try:token_file =requests.get(gettoken_url)except Exception as e:print (e)token_data = token_file.texttoken_json = json.loads(token_data)token_json.keys()token = token_json['access_token']return token
CorpId 在我的企业中可以看到
CorpSecret为上面应用设置中的Secret值
2.3 发送信息至指定人员
def Send_Message(Token,Tag,Subject,Content):post_data={'touser' : '', #通讯录用户ID'toparty' :'', #通讯录组ID'totag' : Tag, #通讯录标签ID'msgtype' : 'text','agentid' : 1000002, #企业号应用的agentid'text' : {'content' : Subject+'\n'+Content},'safe':0}#print (post_data)post_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='+Token#json_post_data = json.dumps(post_data,False,False)try:r =requests.post(post_url,data=json.dumps(post_data))# request_post = urllib.request.urlopen(post_url,json_post_data.encode(encoding='UTF8'))except Exception as e:print (e)#print (request_post.text)
微信企业号发送信息的对象支持三种方式:
-
人员名称
-
人员群组
-
人员标签
以上三种只要有一种是正确的则可以发送成功
这里我们为了方便管理,使用标签进行发送,多个ID用|分开
这个函数的参数介绍如下:
-
Token: 上面GetToken函数获取到的值
-
Tag: 我们设置的Tag的 ID号,号码可通过上面通讯录管理看到
-
agentid: 我们应用的ID号,上面应用设置中的AgentId值
-
Subject和Content 分别为主题和内容
这里我们就可以通过微信企业号发送信息了,同时它还支持图片链接等,大家可以根据API文档自行修改
源代码(https://github.com/bsbforever/maintence/blob/master/wechat_alert.py)
#!/usr/bin/python
#coding=utf8
import urllib
import requests
import json
import sysdef GetToken():Corpid='ww3083060923921313121' # 企业IDCorpSecret='5_vWbwROiUQJkc2wBEPxkO0slPe2NsJ_qpvx2bW_M' #企业号应用的Secret值gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + Corpid + '&corpsecret=' + CorpSecret #print (gettoken_url)try:token_file =requests.get(gettoken_url)except Exception as e:print (e)token_data = token_file.texttoken_json = json.loads(token_data)token_json.keys()token = token_json['access_token']return tokendef Send_Message(Token,Tag,Subject,Content):post_data={'touser' : '', #通讯录用户ID'toparty' :'', #通讯录组ID'totag' : Tag, #通讯录标签ID'msgtype' : 'text','agentid' : 1000002, #企业号应用的agentid'text' : {'content' : Subject+'\n'+Content},'safe':0}#print (post_data)post_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='+Token#json_post_data = json.dumps(post_data,False,False)try:r =requests.post(post_url,data=json.dumps(post_data))# request_post = urllib.request.urlopen(post_url,json_post_data.encode(encoding='UTF8'))except Exception as e:print (e)#print (request_post.text)if __name__ == '__main__':Corpid='ww308306023cc53c84'CorpSecret='5_vWbwROiUQJkc2wBEPsdPeGelovs2NsJ_qpvx2bW_M'#User = sys.argv[1]#Party=sys.argv[2]#Subject = sys.argv[3]#Content = sys.argv[4]Tag='2'Subject='服务器空间报警'Content='磁盘满啦'Token=GetToken()Send_Message(Token,Tag,Subject,Content)