自动化测试企业微信推送:自建应用(一)

1、创建应用

        首先登录网页版企业微信 (
https://work.weixin.qq.com),如果没有企业微信账号,则需要注册账号。

在最底部创建应用

填写相关信息(推送机器人名称、企业名称)点击创建

2、获取Secret

发送之后,企业微信就会收到Secret

使用 Python 发送告警请求,其实就只使用到两个接口:

获取 Token :

https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={secret}

发送请求:

https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}

可以看到,最重要的是 corpid 和 secret:

corpid:唯一标识你的企业(获取路径:我的企业》企业信息》最底部的企业ID)

secret:应用级的密钥,有了它程序才知道你要发送该企业的哪个应用

3、配置IP白名单:

经过上面的配置,通过我们的python代码发送消息还是会报错:

{'errcode': 60020, 'errmsg': 'not allow to access from your ip, hint: [1690351656347281332678897], from ip: 182.148.15.213, more info at https://open.work.weixin.qq.com/devtool/query?e=60020'}

 (1)在创建的应用下添加代码报错的IP白名单,演示的应用是Tester

 在添加IP白名单之前,提示需要添加 设置接收消息服务器URL

 (2)接收消息服务器URL:

这里使用的方法是通过微信对话平台提供的对话机器人服务
微信对话平台: https://openai.weixin.qq.com/

 先发布对话机器人。

 发布成功之后,将上面的内容填入企业微信的 接收消息服务器 URL

(3)配置python代码报错的IP白名单

 (4)推送消息测试

 

企业微信顺利收到推送消息。

附上代码示例:我也是网上找的,可根据自己的需求,自行修改。上诉演示也是根据下面的代码截图的,不需要质疑可行性。另外推送图片、视频可自行找教程。

'''
 -*- coding: utf-8 -*-
 @Author   : 夏槐
 @Time     : 2023/7/26 13:20
 @Software : PyCharm
 @Motto    : 人生不如意是常态
'''

import time
import requests
import json


class WeChat:
    def __init__(self):
        self.CORPID = 'wwe6f4f0db5b409a22'  #企业ID,在管理后台获取
        self.CORPSECRET = 'a-AdSbb33kwUSN9fRV0DSd8oi3G9jsGHItxLShw-yOU'#自建应用的Secret,每个自建应用里都有单独的secret
        self.AGENTID = '1000003'  #应用ID,在后台应用中获取
        self.TOUSER = "XiaHuai"  # 接收者用户名,多个用户用|分割

    # 在企业微信平台获取Token
    def _get_access_token(self):
        url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken'
        values = {'corpid': self.CORPID,
                  'corpsecret': self.CORPSECRET,
                  }
        req = requests.post(url, params=values)
        data = json.loads(req.text)
        # print(data)
        return data["access_token"]

    def get_access_token(self):
        try:
            with open('./access_token.conf', 'r') as f:
                t, access_token = f.read().split()
        except:
            with open('./access_token.conf', 'w') as f:
                access_token = self._get_access_token()
                cur_time = time.time()
                f.write('\t'.join([str(cur_time), access_token]))
                return access_token
        else:
            cur_time = time.time()
            if 0 < cur_time - float(t) < 7260:
                return access_token
            else:
                with open('./access_token.conf', 'w') as f:
                    access_token = self._get_access_token()
                    f.write('\t'.join([str(cur_time), access_token]))
                    return access_token

    def send_data(self, message):
        send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + self.get_access_token()
        send_values = {
            "touser": self.TOUSER,
            "msgtype": "text",
            "agentid": self.AGENTID,
            "text": {
                "content": message
                },
            "safe": "0"
            }
        send_msges=(bytes(json.dumps(send_values), 'utf-8'))
        respone = requests.post(send_url, send_msges)
        respone = respone.json()   #当返回的数据是json串的时候直接用.json即可将respone转换成字典
        print(respone)
        return respone["errmsg"]


if __name__ == '__main__':
    wx = WeChat()
    # wx.send_data("这是程序发送的第1条消息!\n Python程序调用企业微信API,从自建应用“告警测试应用”发送给管理员的消息!")
    wx.send_data("python消息\n测试员:001\nhello word")

注意:此种方式推送消息,要使用固定公网IP,且添加IP白名单才行,否则每次IP变化都需要添加可信IP白名单。

解决办法:

        1、向运行商申请固定公网IP

        2、使用云服务器(自行百度方法)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值