1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python-调用钉钉官方开放平台sdk向钉钉群中推送钉钉机器人消息

python-调用钉钉官方开放平台sdk向钉钉群中推送钉钉机器人消息

时间:2023-10-04 14:09:47

相关推荐

python-调用钉钉官方开放平台sdk向钉钉群中推送钉钉机器人消息

目录

1.自定义机器人接入

1.1打开机器人管理页面。以PC端为例,打开PC端钉钉,点击头像,选择机器人管理

1.2添加自定义机器人

1.3在机器人管理页面选择自定义机器人,输入机器人名字并选择要发送消息的群,同时可以为机器人设置机器人头像

完成必要的安全设置,勾选我已阅读并同意《自定义机器人服务及免责条款》,然后单击完成。

完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:

2.引用钉钉sdk

2.1下载地址:

2.2选择python3版本-点击下载

2.3下载将sdk文件放在自己的工程中,在python文件中引用api

3.实现

1.自定义机器人接入

钉钉官方链接:https://ding-/document/app/custom-robot-access

1.1打开机器人管理页面。以PC端为例,打开PC端钉钉,点击头像,选择机器人管理

1.2添加自定义机器人

1.3在机器人管理页面选择自定义机器人,输入机器人名字并选择要发送消息的群,同时可以为机器人设置机器人头像

完成必要的安全设置,勾选我已阅读并同意《自定义机器人服务及免责条款》,然后单击完成

目前有3种安全设置方式,请根据需要选择一种:

自定义关键词:最多可以设置10个关键词,消息中至少包含其中1个关键词才可以发送成功。

例如添加了一个自定义关键词:监控报警,则这个机器人所发送的消息,必须包含监控报警这个词,才能发送成功。

加签

timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。

签名计算示例代码(Java)

import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import mons.codec.binary.Base64;import .URLEncoder;public class Test {public static void main(String[] args) throws Exception {Long timestamp = System.currentTimeMillis();String secret = "this is secret";String stringToSign = timestamp + "\n" + secret;Mac mac = Mac.getInstance("HmacSHA256");mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8");System.out.println(sign);}}

签名计算代码示例(Python)

#python 3.8 import timeimport hmacimport hashlibimport base64import urllib.parsetimestamp = str(round(time.time() * 1000))secret = 'this is secret'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))print(timestamp)print(sign)

把 timestamp和第一步得到的签名值拼接到URL中。

/robot/send?access_token=XXXXXX&timestamp=XXX&sign=XXX

IP地址(段):设定后,只有来自IP地址范围内的请求才会被正常处理。支持两种设置方式:IP地址和IP地址段,暂不支持IPv6地址白名单,格式如下。

完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:

/robot/send?access_token=XXXXXX

总结以上官方文档

安全设置中选择以下设置(至少选择一个设置)

1.自定义关键词:在发送消息时,发送的内容就要包含关键词才能发送成功,

2.加签:一种加密方式,将加签值通过以上的方法得到的签名值和timestamp拼接到URL(Webhook)中

3.ip地址(段):设置后,只有来自IP地址范围内的请求才会被正常处理

2.引用钉钉sdk

2.1下载地址:

https://ding-/document/resourcedownload/download-server-sdk

2.2选择python3版本-点击下载

2.3下载将sdk文件放在自己的工程中,在python文件中引用api

官方示例:

import dingtalk.apirequest = dingtalk.api.OapiGettokenRequest("/user/get")request.userid="userid1"response = request.getResponse()print(response)

3.实现

# -*- coding: utf-8 -*-"""Created on Thu Jan 21 11:04:09 @author: Admin"""import timeimport hmacimport hashlibimport base64import urllib.parse#引用钉钉APIimport dingtalk.api#发送消息def SendMessage():#时间戳timestamp = str(round(time.time() * 1000))#钉钉加签secret = 'SEC****'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))print(timestamp)print(sign)#钉钉机器人中的Webhook+sign+timestampwebhook ='/robot/send?access_token=******&timestamp={0}&sign={1}'.format(timestamp,sign)#实例钉钉接口的OapiRobotSendRequestrequest = dingtalk.api.OapiRobotSendRequest(webhook)#需要发送的文字内容content_txt = "我就是我, 是不一样的烟火"#设置msgtype为text类型 #根据官方文档还可设置其他类型:link类型 markdown类型 整体跳转ActionCard类型 FeedCard类型request.msgtype = 'text'#引入需要发送的内容request.text = {"content": content_txt}#atMobiles:钉钉群中所对应的成员手机号#isAtAll:当设置为True时,发送消息时@所有人request.at = {"atMobiles":["13*****4538"],"isAtAll": True}#发送消息response = request.getResponse()print(response)if __name__ == '__main__':#程序运行时调用方法SendMessage()

效果:

该代码只是简单的一个钉钉机器人消息推送,还可再继续改造引用到运用到其他项目做异常消息推送

参考文档:钉钉开发文档https://ding-/document/app/custom-robot-access

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。