参考:https://ding-doc.dingtalk.com/doc#/serverapi2/krgddi
获取自定义机器人webhook
步骤一,打开机器人管理页面。以PC端为例,打开PC端钉钉,点击头像,选择“机器人管理”。
步骤二,在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送消息的群,同时可以为机器人设置机器人头像。
步骤三,完成必要的安全设置(至少选择一种),勾选 我已阅读并同意《自定义机器人服务及免责条款》,点击“完成”。安全设置目前有3种方式,设置说明见下文介绍。
步骤四,完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:
1
| https://oapi.dingtalk.com/robot/send?access_token=XXXXXX
|
Tips:请保管好此Webhook 地址,不要公布在外部网站上,泄露后有安全风险。
测试自定义机器人
通过下面方法,可以快速验证自定义机器人是否可以正常工作:
使用命令行工具curl。
为避免出错,将以下命令逐行复制到命令行,需要将xxxxxxxx替换为真实access_token;若测试出错,请检查复制的命令是否和测试命令一致,多特殊字符会报错。
1 2 3
| curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \ -H 'Content-Type: application/json' \ -d '{"msgtype": "text","text": {"content": "我就是我, 是不一样的烟火"}}'
|
text类型
1 2 3 4 5 6 7 8 9 10 11 12 13
| { "msgtype": "text", "text": { "content": "我就是我, 是不一样的烟火@156xxxx8827" }, "at": { "atMobiles": [ "156xxxx8827", "189xxxx8325" ], "isAtAll": false } }
|
配置说明:
参数 |
参数类型 |
必须 |
说明 |
msgtype |
String |
是 |
消息类型,此时固定为:text |
content |
String |
是 |
消息内容 |
atMobiles |
Array |
否 |
被@人的手机号(在content里添加@人的手机号) |
isAtAll |
Boolean |
否 |
是否@所有人 |
Zabbix配置
配置—> 报警媒介类型,脚本参数如下:
1 2 3
| {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
|
脚本示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
import requests,json,sys,os,datetime webhook="https://oapi.dingtalk.com/robot/send?access_token=XXXXXX" user=sys.argv[1] text=sys.argv[3] data={ "msgtype": "text", "text": { "content": text }, "at": { "atMobiles": [ user ], "isAtAll": False } } headers = {'Content-Type': 'application/json'} x=requests.post(url=webhook,data=json.dumps(data),headers=headers) if os.path.exists("/tmp/dingding.log"): f=open("/tmp/dingding.log","a+") else: f=open("/tmp/dingding.log","w+") f.write("\n"+"--"*30) if x.json()["errcode"] == 0: f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text)) f.close() else: f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + "\n" + str(text)) f.close()
|