python腾讯企业微信应用消息发送

腾讯企业微信应用消息发送有几步: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