腾讯企业微信应用消息发送有几步:1、注册一个企业微信、创建组织;2、新建应用;3、获取access_token;4、发送应用消息;5、在腾讯企业微信的应用中看到消息。代码如下(基于Python3开发):
import socket
import requests
"""检查指定服务端口是否存在,不存在则发送企业微信通知给指定的企业微信部门成员"""
# 1、定义入参,此处根据实际情况填入
"""
ip 是指定服务端口的ipv4地址
port_list 是指定要检查的服务端口,列表中可填入多个服务端口,后面循环检查
url1 是企业微信access_token的获取地址
url2 是企业微信发送应用通知地址
corpid 是企业微信给每个企业的企业ID,在企业信息处可查
corpsecret 是企业微信中每个自行创建的应用的密钥
agentid 是应用的一个ID
"""
ip = '127.0.0.1'
port_list = [80, 8000, 3306]
url1 = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
url2 = "https://qyapi.weixin.qq.com/cgi-bin/message/send"
corpid = "xxxx"
corpsecret = "xxxx"
agentid = xxxx
# 2、获取access_token函数,有了这个token后续才可以发消息
def get_token(url, corpid, corpsecret):
param = {
"corpid": corpid,
"corpsecret": corpsecret
}
html = requests.get(url, params=param)
token_json = html.json()
access_token = token_json["access_token"]
return access_token
# 3、发送应用消息
def post_message(url, access_token, agentid, content):
param = {
"access_token": access_token
}
data = {
"touser": "@all",
"msgtype": "text",
"agentid": agentid,
"text": {
"content": content
}
}
requests.post(url, params=param, json=data)
# 4、循环检查服务端口,端口不存在会发送企业微信消息,消息发送过程:检查端口 > 获取access_token > 发送消息
for port in port_list:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((ip, port))
if result != 0:
content = "地址:{} 端口:{} 是不通的。".format(ip, port)
access_token = get_token(url1, corpid, corpsecret)
post_message(url2, access_token, agentid, content)
sock.close()
except Exception as e:
content = "地址:{} 端口:{} 是不通的。\n报错:{}".format(ip, port, e)
access_token = get_token(url1, corpid, corpsecret)
post_message(url2, access_token, agentid, content)
上面的代码样例,是基于服务端口循环检查再进行消息发送(第4点),其中access_token获取(第2点)、消息发送(第3点)是以函数形式进行调用,因此只需按要求填写代码开头的入参即可(第1点)。接口开发说明:
https://developer.work.weixin.qq.com/document/path/91039
https://developer.work.weixin.qq.com/document/path/90236