当前位置:网站首页>手把手教你搭建钉钉预警机器人
手把手教你搭建钉钉预警机器人
2022-07-27 05:11:00 【神芷迦蓝寺】
摘要
随着生产上线业务的不断增多以及无人值守需求的日益增长,钉钉预警机器人的出现极大的解决了我们的问题。本文从0到1详细介绍讲解下钉钉预警机器人的搭建与自定义,分为机器人搭建,预警内容开发,上线部署三大步
机器人搭建
以下所有的配置开发均来源于钉钉官网文档,喜欢阅读官网或者有更进一步个性化的需求可前往查看,也可以跟随笔者站在初级开发者的角度来一步步搭建
首先是先要有一个群以及你有这个群添加机器人的权限,然后
- 添加机器人
群设置--智能群助手--添加机器人--自定义,选择添加,然后进行相关设置

- 设置机器人

首先起一个好听的名字,安全设置那里有三个,必须要至少有一个
- 自定义关键词 :自定义发送内容关键字,发送的内容里含有设置的关键字才会发送
- 加签:也就是加密,一般这个用的比较多,
- IP地址:这个就很好理解了,特定的IP可以发送内容
这里我们选用第二个加签,然后点击添加,这里群会提示你成功添加了一个机器人
我们打开这个机器人把两个数据保存下,分别是Webhook token和加签的密文
https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxWebhook: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxx
加签:yyyyyyyyyyyyyyyyyyy
这两个xxxxxx和yyyyy留存备用
预警内容开发
上述的机器人添加好了,相当于一个接收数据的API接口好了,我们现在开始开发预警内容
采用最为简便的python,整体框架代码如下
from datetime import datetime, timedelta
import requests
import hmac
import hashlib
import base64
import urllib.parse
import urllib.request
import json
import time
import os
import sys
import re
def getUrl(secret,access_token):
timestamp = str(round(time.time() * 1000))
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
url = "https://oapi.dingtalk.com/robot/send?access_token=%s&sign=%s×tamp=%s" % (access_token, sign, timestamp)
return url
def sendToGroup(url,header,data):
sendData = json.dumps(data)#将字典类型数据转化为json格式
sendData = sendData.encode("utf-8") # python3的Request要求data为byte类型
request = urllib.request.Request(url=url, data=sendData, headers=header)
opener = urllib.request.urlopen(request)
return opener
secret= ''
access_token=''
data={
"msgtype": "text",
"text": {
"content": "分析任务已完成"
},
"at": {
"atMobiles": ["13216816870"],
"isAtAll": False
}
}
header = {
"Content-Type": "application/json",
"Charset": "UTF-8"
}
url=getUrl(secret,access_token)
opener=sendToGroup(url,header,data)把上面的xxxx和yyyy放到代码里的secret和access_token,运行即可,钉钉机器人就会弹出

而整个内容需要开发的就是代码里data那一部分
我们常见的查询就是经过数据库,所以我们这里也连接数据库查询,加一个sql 函数代码
def exeSqlRes(dbip,dbport,dbacco,dbpwd,dbname,sql):
conn = connect(host=dbip, port=dbport, user=dbacco, password=dbpwd, database=dbname)
cursor = conn.cursor()
try:
cursor.execute(sql)
list1 = cursor.fetchall()
global dataStr1,dataStr2
dataStr1 = "行内运行日期 :%s" % (list1[0][0])
dataStr2 = "公募运行日期 :%s" % (list1[1][0])
except:
print("数据库连接失败\n")
conn.close()
sql = '''
SELECT SZ_TO_CHAR_D(max(d_date),'YYYYMMDD') as SYSTEMDATE from datacollect_log
union all
SELECT SZ_TO_CHAR_D(max(d_date),'YYYYMMDD') as SYSTEMDATE from datacollect_log
)
'''
exeSqlRes('xx.xx.xx.xx',3306,'xxxxx','xxxxx','xxxxx',sql)data的形式钉钉官网介绍的很多,有txt,json,xml等,限于篇幅,这里我们只列一下最常用的MARKDOWN形式
data = {
"msgtype": "markdown",
"markdown": {
"title":"数据监控",
"text": "#### 当前数据运行日期 @17665011132 \n > - **%s** \n > - **%s** \n > \n > ###### %s发布 [查看详情](https://www.dingtalk.com) \n" % (dataStr1,dataStr2,timeStr)
},
"at": {
"atMobiles": [
"176xxxx1132"
],
"atUserIds": [
""
],
"isAtAll": "false"
}
}大家可根据自己的实际需求进行data开发,我这里开发完毕后运行代码弹出

一切配置完成
上线部署
把这个python代码放到crontab里按需调度运行即可
*/10 * * * * /bisz/python/anaconda3/bin/python /bisz/python/DingDingSend.py
边栏推荐
猜你喜欢
随机推荐
[网鼎杯 2020 青龙组]AreUSerialz(BUUCTF)
期货开户怎么选择好的期货公司 ?
洛谷超级玛丽游戏
期货公司最低标准的手续费和保证金
What are the traversal methods of arrays in JS
Edit delete user
First knowledge of C language - string + escape character + comment
[极客大挑战 2019]FinalSQL 1
How JS determines whether an object belongs to a class
JS中数组的遍历方法有哪些
js中isNaN和Number.isNaN的区别
Js中如何进行隐式转换
My first blog
DeFi 2.0的LaaS协议Elephant,或许是你熊市下为数不多的获利手段
自我理解思考
Return value of & (and) and | (or) operators in JS
Gallerycms download, installation and configuration
一本通1251——仙岛求药(广度优先搜索)
Maintain login and route jump
OSI七层模型和TCP/IP四层(TCP与UDP)(笔记)









