Python 3.7 开发钉钉群自定义机器人完整指南

Evan
Evan
发布时间:2026-10-13| 4人浏览过
原创

本文详细介绍如何使用 Python 3.7 配置和开发钉钉群自定义机器人。针对官方文档版本过旧的问题,提供了基于 Python 3 的完整代码实现。重点解析了加签(Secret)安全策略的配置方法,包括时间戳生成、签名计算及 Webhook URL 拼接,帮助开发者实现安全、灵活的群消息推送功能。

钉钉自定义机器人的应用场景与价值

近期由于疫情原因,许多企业转向使用阿里旗下的钉钉进行远程办公。尽管钉钉的部分功能体验备受争议,但其提供的机器人功能却颇具极客特色,能够显著提升工作效率。通过自定义机器人,可以将第三方服务的信息聚合至钉钉群,实现信息的自动化同步。例如,集成 GitHub、GitLab 等源码管理平台以同步代码更新;接入 Trello、JIRA 等项目协作工具以同步项目进度。此外,钉钉支持 Webhook 协议的自定义接入,极大地扩展了应用场景,如运维报警推送、自动化测试结果报告、日常日程提醒(包括考勤、健身、生日、纪念日等)均可通过自定义机器人统一聚合到钉钉群中。

然而,网络上现有的许多钉钉机器人教程年代久远,代码多基于 Python 2 编写。为了适应当前的技术环境,本文旨在演示如何利用 Python 3.7 进行钉钉自定义机器人的开发与配置。

创建钉钉自定义机器人的步骤

首先需要明确,钉钉自定义机器人已不再支持在手机端创建。用户需登录 PC 端或 Mac 端的钉钉客户端,进入目标聊天群界面,点击“智能群助手”选项。

在智能群助手界面中,点击“添加机器人”按钮。

此时会展示一系列已封装好的第三方机器人列表,本次操作请选择“自定义机器人”。

值得注意的是,钉钉机器人的核心机制基于 Webhook 协议。Webhook 是一种 API 概念,属于微服务 API 的使用范式之一,也被称为反向 API。其特点是前端不主动发起请求,而是由后端主动推送数据。关于 Webhook 的深入原理,后续可另文详述。

在添加机器人的配置界面中,需要填写机器人的基本信息。

安全策略配置与 Webhook 获取

在“安全设置”环节,建议选择“加签”方式。钉钉机器人提供三种安全策略:第一种是关键字校验,要求推送消息中必须包含创建机器人时设定的关键字,否则拒绝发送;第二种是加密签名(即加签);第三种是 IP 白名单限制,仅允许指定 IP 发起请求。综合比较,加签方式在安全性与灵活性之间取得了较好的平衡。

机器人创建成功后,系统会分配一个 Webhook 地址,请务必妥善保存。该地址中包含唯一的 access_token,用于后续的身份验证。

接下来,如何利用该地址让机器人推送消息?首先参考官方文档:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq。

查阅官方文档后发现,其提供的示例代码仍基于 Python 2.0 版本。因此,我们需要将其转换为适用于 Python 3.0 及更高版本的代码。

Python 3.7 代码实现与签名计算


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&timestamp='+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)

最终实现的推送效果如下所示:

本文内容转载自「刘悦的技术博客」 v3u.cn/a_id_132。

至此,关于使用 Python 3.7 配置开发钉钉群自定义机器人(2020年新版攻略)的介绍完毕。如需了解更多关于 Python 3.7 与钉钉群自定义机器人的内容,请搜索本站往期文章或继续浏览后续相关文章。感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。