当前位置:网站首页>手把手教你搭建钉钉预警机器人
手把手教你搭建钉钉预警机器人
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
边栏推荐
- Okaleido上线聚变Mining模式,OKA通证当下产出的唯一方式
- Web2.0的巨头纷纷布局VC,Tiger DAO VC或成抵达Web3捷径
- GalleryCMS下载安装与配置
- 期货开户怎么选择好的期货公司 ?
- What happens to the new arrow function in ES6
- The difference between for... Of and for... In JS
- 刷脸支付用户主要优势是智能化程度高
- How to perform implicit conversion in JS
- SeekTiger即将上线STI聚变Mining功能,获取OKA通证
- [MRCTF2020]PYWebsite 1
猜你喜欢
随机推荐
路由的配置和前往登录首页进行发送请求
How to use for..Of to traverse objects in JS
「PHP基础知识」PHP中的注释
Js== mandatory type conversion provisions of operators
JS中apply、call、bind的区别
sql_mode严格模式(ANSI/TRADITIONAL/STRICT_TRANS_TABLES)
权限展示-左侧列表动态化
What are the traversal methods of arrays in JS
JS中如何判断一个对象是空对象
User page management
「PHP基础知识」PHP中实现数学运算
[BJDCTF2020]EasySearch 1
Differences between IsNaN and number.isnan in JS
Logic of image uploading
Okaleido上线聚变Mining模式,OKA通证当下产出的唯一方式
解析新时代所需要的创客教育DNA
Configure the route and go to the login home page to send the request
JS中什么是DOM和BOM
Native token generation encryption and decryption
First acquaintance with C language - first acquaintance with pointer
![[CISCN2019 华东南赛区]Web11 1](/img/94/61ad4f6cbbd46ff66f361462983d7a.png)








