钉钉自定义群机器人(Webhook 类型)的 ActionCard 消息按钮不支持直接配置点击回调接口,只能设置跳转链接。如需接收点击事件回调,必须使用企业内部应用或 ISV 应用的聊天机器人能力,并开通事件订阅。
先说结论:Webhook 群机器人无法配置按钮点击回调,需通过跳转链接带参数或升级为企业应用实现。
- 适合场景:仅需跳转用 Webhook 机器人,需交互回调用企业内部应用。
- 先准备:确认机器人类型,准备回调服务器地址或跳转目标 URL。
- 验收:点击按钮后检查服务器日志或浏览器跳转行为。
快速处理思路
先确认当前使用的机器人类型,Webhook 群机器人仅支持 action_url 跳转,企业内部应用聊天机器人支持事件回调。若必须使用 Webhook 机器人,需在跳转 URL 中携带参数间接实现业务逻辑;若需要真实回调,需创建企业内部应用并配置事件订阅。
为什么会这样
这是钉钉开放平台的安全权限模型决定的。Webhook 群机器人设计为单向通知工具,不具备接收用户交互事件的权限;企业内部应用经过身份认证,拥有接收回调事件的完整能力。
分步处理
步骤一:确认机器人类型
登录钉钉管理后台,查看机器人配置页面。若添加方式为“自定义”且拥有 Webhook 地址,则为群机器人;若通过“企业内部开发”创建,则为应用机器人。
步骤二:Webhook 机器人配置跳转(替代方案)
在 ActionCard 消息体中,将按钮 action_type 设置为 action_url,action_url 填写你的业务系统链接。示例配置片段:
{"action_type": "action_url", "action_url": "https://yourdomain.com/handle?task_id=123"}
用户点击后跳转至该链接,你的服务器通过 URL 参数接收任务信息。
步骤三:企业内部应用配置回调(正式方案)
进入钉钉开发者后台,创建企业内部应用,开通“机器人”能力。在“事件订阅”中配置回调 URL,并选择监听“工作通知消息互动”相关事件。服务器需实现签名验证逻辑以接收 POST 请求。
怎么验证是否生效
对于 Webhook 跳转方案,点击按钮后观察浏览器是否访问了指定 URL,并检查 Web 服务器访问日志中是否有对应请求记录。对于企业应用回调方案,点击按钮后检查回调服务器日志,确认是否收到钉钉推送的 JSON 格式事件数据包,且签名验证通过。
常见坑
混淆机器人类型:很多开发者误以为 Webhook 机器人支持回调,导致开发阻塞。务必在开发前确认机器人类型。
签名验证缺失:配置企业应用回调时,若未正确实现钉钉要求的签名验证算法,请求会被丢弃或报错。
用户身份获取:Webhook 跳转链接无法直接获取点击者的钉钉用户 ID,需配合钉钉免登或 OAuth 流程;企业应用回调事件中通常包含 userId 信息。
常见问题
Webhook 机器人能接收按钮点击回调吗?
不能。Webhook 群机器人仅支持发送消息,按钮只能配置跳转链接,无法向服务器发送点击事件。
如何获取点击按钮的用户信息?
企业应用回调事件中包含 userId;Webhook 跳转方案需在跳转后的页面引导用户授权或通过钉钉免登接口获取。
回调地址配置后收不到数据怎么办?
检查服务器防火墙是否允许钉钉 IP 段访问,确认回调 URL 公网可达,并检查签名验证代码逻辑是否正确。
参考来源
钉钉开放平台 - 群机器人接入指南 (https://open.dingtalk.com)
钉钉开放平台 - 事件订阅机制 (https://open.dingtalk.com)