“Python钉钉提醒”的版本间的差异
来自CloudWiki
(→实训步骤) |
|||
(未显示同一用户的4个中间版本) | |||
第20行: | 第20行: | ||
[[文件:python21051305.png|500px]] | [[文件:python21051305.png|500px]] | ||
− | == | + | [[文件:python21051306.png|500px]] |
+ | ===安装依赖库=== | ||
+ | pip install requests | ||
+ | |||
+ | ===推送信息到机器人=== | ||
+ | 获取到Webhook地址后,用户可以向这个地址发起HTTP POST 请求,即可实现给该钉钉群发送消息,发起POST请求时,必须将字符集编码设置成UTF-8;msgtype:消息类型,可以根据自己的使用场景选择合适的消息类型,如text文本、link连接、markdown等;atMobiles:自定义机器人发送消息时,可以通过手机号码指定“被@人列表”,在“被@人列表”里面的人员收到该消息时,会有@消息提醒;isAtAll:bool类型,true为@所有人,否则为false; | ||
+ | |||
+ | |||
+ | <nowiki> | ||
+ | import requests | ||
+ | import json | ||
+ | |||
+ | def send_msg(text,url): | ||
+ | headers = {'Content-Type': 'application/json;charset=utf-8'} | ||
+ | json_text = { | ||
+ | "msgtype": "text", | ||
+ | "text": { | ||
+ | "content": text | ||
+ | }, | ||
+ | "at": { | ||
+ | "atMobiles": [ | ||
+ | "" | ||
+ | ], | ||
+ | "isAtAll": False | ||
+ | } | ||
+ | } | ||
+ | return requests.post(url, json.dumps(json_text), headers=headers).content | ||
+ | if __name__ == '__main__': | ||
+ | url = 'https://oapi.dingtalk.com/robot/send?access_token=60bd4b5e21d82db59a36c2e9633aa251e57a9246abc00f6f1eca67e6d1f322d2' | ||
+ | send_msg('马老师好,2号服务器异常,请处理',url)</nowiki> | ||
+ | |||
+ | ==原代码== | ||
<nowiki> | <nowiki> | ||
import requests | import requests |
2021年5月14日 (五) 01:25的最新版本
钉钉简介
钉钉(DingTalk)是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台 [1] ,提供PC版,Web版,Mac版和手机版,支持手机和电脑间文件互传。 [2] 钉钉因中国企业而生,帮助中国企业通过系统化的解决方案(微应用),全方位提升中国企业沟通和协同效率。
服务器发生故障之后,编写python代码自动发送给公司钉钉群,可实现运维报警的快速化、方便性。
实训步骤
创建钉钉机器人
群机器人是钉钉群的高级扩展功能,群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步;进入一个钉钉群,点击右上角的“群设置”进入群设置页面;
选择群机器人点击进入,在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送消息的群,如果需要的话,可以为机器人设置一个头像。点击"完成添加",完成后会生成Hook地址,点击“复制”按钮,即可获得这个机器人对应的Webhook地址;
安装依赖库
pip install requests
推送信息到机器人
获取到Webhook地址后,用户可以向这个地址发起HTTP POST 请求,即可实现给该钉钉群发送消息,发起POST请求时,必须将字符集编码设置成UTF-8;msgtype:消息类型,可以根据自己的使用场景选择合适的消息类型,如text文本、link连接、markdown等;atMobiles:自定义机器人发送消息时,可以通过手机号码指定“被@人列表”,在“被@人列表”里面的人员收到该消息时,会有@消息提醒;isAtAll:bool类型,true为@所有人,否则为false;
import requests import json def send_msg(text,url): headers = {'Content-Type': 'application/json;charset=utf-8'} json_text = { "msgtype": "text", "text": { "content": text }, "at": { "atMobiles": [ "" ], "isAtAll": False } } return requests.post(url, json.dumps(json_text), headers=headers).content if __name__ == '__main__': url = 'https://oapi.dingtalk.com/robot/send?access_token=60bd4b5e21d82db59a36c2e9633aa251e57a9246abc00f6f1eca67e6d1f322d2' send_msg('马老师好,2号服务器异常,请处理',url)
原代码
import requests import json class DingTalk_Base: def __init__(self): self.__headers = {'Content-Type': 'application/json;charset=utf-8'} self.url = '' def send_msg(self,text): json_text = { "msgtype": "text", "text": { "content": text }, "at": { "atMobiles": [ "" ], "isAtAll": False } } return requests.post(self.url, json.dumps(json_text), headers=self.__headers).content class DingTalk_Disaster(DingTalk_Base): def __init__(self): super().__init__() # 填写机器人的url self.url = 'https://oapi.dingtalk.com/robot/send?access_token=60bd4b5e21d82db59a36c2e9633aa251e57a9246abc00f6f1eca67e6d1f322d2' if __name__ == '__main__': ding = DingTalk_Disaster() ding.send_msg('马老师好,1号服务器异常,请处理')
拓展功能
钉钉机器人加签功能:
import base64 import hashlib import hmac import time import urllib.request ##钉钉sha256签名 timestamp = round(time.time() * 1000) secret = 'this is secret' secret_enc = bytes(secret,encoding='UTF-8') string_to_sign = '{}\n{}'.format(timestamp, secret) string_to_sign_enc = bytes(string_to_sign,encoding='utf-8') hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest() sign = urllib.request.quote(base64.b64encode(hmac_code)) print(timestamp) print(sign)