您现在的位置是:亿华云 > 人工智能
利用Python编程简单开发钉钉群机器人
亿华云2025-10-09 01:31:49【人工智能】9人已围观
简介很多公司依靠阿里旗下的办公软件钉钉来进行远程办公,当然了,钉钉这个产品真的是让人一言难尽,要多难用有多难用,真的让人觉得阿里的pm都是才会设产品,不过吐槽归吐槽,该用还得用。虽然钉钉别的功能很鸡肋,但
很多公司依靠阿里旗下的利用办公软件钉钉来进行远程办公,当然了,编程钉钉这个产品真的简单是让人一言难尽,要多难用有多难用,钉钉真的群机器人让人觉得阿里的pm都是才会设产品,不过吐槽归吐槽,利用该用还得用。编程
虽然钉钉别的简单功能很鸡肋,但是钉钉机器人这个功能还是让人眼前一亮,属于比较极客的群机器人功能,它可以将第三方服务的利用信息聚合到钉钉群中,实现信息的编程自动化同步。
例如:通过聚合Github、简单Gitlab等源码管理服务,钉钉实现源码更新同步;通过聚合Trello、群机器人JIRA等项目协调服务,实现项目信息同步;同时,支持Webhook协议的自定义接入,支持更多可能性,例如:将运维报警提醒、自动化测试的云服务器结果报告提醒、工作、生活日程安排(上班打卡、下班吃饭、健身、读书、生日、纪念日...)等等的提醒,通过自定义机器人聚合到钉钉中。
不过关于钉钉机器人网上的一些攻略年代都比较久远,代码很多都基于python2,为了与时俱进,我们尝试用python3.7来开发配置钉钉自定义机器人。
首先明确一点,钉钉自定义机器人早就不支持在手机端创建了,所以打开你的pc端或者mac端的钉钉客户端,在需要机器人的聊天群界面,点击智能群助手。
随后点击添加机器人按钮
此时能看到很多已经封装好的第三方机器人,本次我们选择自定义机器人
值得一提的是,钉钉的机器人基于webhook协议,webhook呢是一个api概念,是微服务api的云南idc服务商使用范式之一,也被成为反向api,即前端不主动发送请求,完全由后端推送,有机会会专门写一篇文章阐述webhook
在添加机器人界面里,填写一些机器人的信息
需要注意的是,在安全设置一栏里,我们选择加签的方式来验证,在此说明一下,钉钉机器人的安全策略有三种,第一种是使用关键字,就是说你推送的消息里必须包含你创建机器人时定义的关键字,如果不包含就推送不了消息,第二种就是使用加密签名,第三种是定义几个ip源,非这些源的请求会被拒绝,综合来看还是第二种又安全又灵活。
创建成功后,系统会分配给你一个webhook地址,这个地址需要保存一下,地址中有唯一的accesstoken
ok,那么怎么利用这个地址让你的b2b供应网机器人推送消息呢?查看官方文档:ding-doc.dingtalk.com/doc#/server…
发现文档居然还是python2.0的版本,好吧,我们自己来翻译成3.0
import time import hmac import hashlib import base64 import urllib.parse timestamp = str(round(time.time() * 1000)) secret = SEC90485937c351bfaed41fea8eda5f1e155bbf22842d5f9d6871999e05822fd894 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(base64.b64encode(hmac_code)) # print(timestamp) # print(sign) import requests,json #导入依赖库 headers={ Content-Type: application/json} #定义数据类型 webhook = https://oapi.dingtalk.com/robot/send?access_token=f0ca7636f5812fe4815c97a72de9a7cc780c414c258b6c9a631036b1d0f49e3b×tamp=+timestamp+"&sign="+sign #定义要发送的数据 #"at": { "atMobiles": "["+ mobile + "]" data = { "msgtype": "text", "text": { "content": 都谁没加到群里来?小心升不了班}, "isAtAll": True} res = requests.post(webhook, data=json.dumps(data), headers=headers) #发送post请求 print(res.text)推送效果是下面这样的:
很赞哦!(255)
相关文章
- 网站页面结构改版,仅是页面样式发生变化,不会对排名、收录有影响;只有涉及到页面URL改变,才会对网站排名、收录有影响。
- 听说tv域名有价值?tv域名价值如何体现的?
- SaaS是不是一个产品?
- 2021小白入手域名的两种方式
- 域名不仅仅是一个简单的网站。对于有长远眼光的公司来说,在运营网站之前确定一个优秀的域名对有长远眼光的公司来说是非常重要的。这对今后的市场营销、产品营销和企业品牌建设都具有十分重要的意义。优秀的域名是企业在市场竞争中获得持久优势的利器。
- 不同设备如何统一语言编程平台高效开发?本文为你揭秘
- 得物前端巡检平台的建设和应用(建设篇)
- 几种常用编程语言的区别
- 在众多公司中,如果我们必须选择一家可信的公司,那当然是信得过的。
- 分布式编程工具Akka Streams、Kafka Streams和Spark Streaming大PK