网易有数支持通过webhook推送信息到企业微信。
为完成此功能,需要:
1.在企业微信群,群主选中以后右键可以添加一个群机器人,并获取其webhook地址,企业微信
webhook功能说明可参考 https://work.weixin.qq.com/api/doc/90000/90136/91770
2.需要启动一个服务程序,此服务服务程序接受有数传来的信息,并且在加工后发送到群机器人的webhook地址上。本程序即实现此服务程序的功能。
3.若要使用本程序,需要具备几个条件:①本程序的网络与有数服务器互通 ②本程序的网络运行在公网上以便访问企业微信机器人
4.运行本程序服务后,将服务地址配置到网易有数/项目中心/Webhook配置
(
填写方式:名称:随意;
URL:本服务地址(公网地址);
secret:保留空[也可在本程序基础上进一步开发secret进行校验];
订阅事件:度量预警[本程序未实现报告订阅和取数订阅,可以参考企业微信开发手
册接受图片即可订阅报告和取数];
自定义参数:{"robot":"此处填入群聊机器人的webhook地址"},示例 {"robot":"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=ba6504c7-c556-40f4-94dd-616d5bc380ac"})
5.对应网易有数私有版本lts6.2及以上
6.@author wenxiaobu 2020.7.1 v1.0
# coding: UTF-8
# !/usr/bin/python
# @function :service of flask
import json
import requests
#引入flask框架
from flask import Flask, request, jsonify
app = Flask(__name__)
headers = {
"Content-Type": "application/json",
}
#发送到微信机器人
def sub_message(j_data):
#从有数发送参数截取企业微信机器人的webhook地址
url = j_data['custom']['robot']
#从有数发送参数截取预警概要
messages = j_data['data']['abstractDesc']
#从有数发送参数截取接收人,此参数包含账号名称、邮箱、手机号,一般建议使用手机号方便群里@他人,可以用正则表达式切取phone
recive_list = j_data['receiverList']
#组装为微信机器人的信息报文
data = {
"msgtype": "text",
"text": {
"content": messages ,
"mentioned_mobile_list":["18815286511"]
}}
#将报文转为requests.post可以识别的格式
jdata=json.dumps(data)
#发送post请求
requests.post(url, jdata, headers)
#启动一个服务,接收有数的预警数据包,接收POST/GET两种请求
@app.route('/youdata', methods=["POST","GET"])
def youdata():
#解析请求
p = request.form if request.form else request.json
#转换成可识别格式
params = json.dumps(p)
#防止空请求
if params!="null":
#发送到群机器人
sub_message(p)
#返回code=0,msg=OK表示接收成功,有数那边才不会报错
return jsonify(code=0,
msg="ok")
else:
#同理,即便空请求也表示发送成功,以免有数预警报错
return jsonify(code=0,
msg="ok")
#主程序启动一个服务
if __name__ == '__main__':
app.run(host='0.0.0.0',
threaded=True,
debug=False ,
port=8001)