Skip to content
FunCoding

Search

Search docs, Skills and MCP

钉钉机器人

配置 Stream 机器人、连接管理、交互卡片与消息附件。

This page has not been translated into English yet. The original Chinese version is shown below.

钉钉机器人渠道使用组织应用的 AppKey 和 AppSecret,通过出站 Stream WebSocket 接收消息。若要使用现有 DWS 登录账号,应改读DingTalk Workspace。

创建与连接

在钉钉开发者后台创建应用,启用 Robot 能力,并在机器人协议中启用 Stream 模式。把 AppKey 映射到 clientId、AppSecret 映射到 clientSecret;此模式不要求公网回调 URL。

{
  "channels": {
    "dingtalk-work": {
      "type": "dingtalk",
      "clientId": "$DINGTALK_CLIENT_ID",
      "clientSecret": "$DINGTALK_CLIENT_SECRET",
      "useConnectionManager": true,
      "privatePolicy": "pairing",
      "groupPolicy": "disabled",
      "sessionScope": "user",
      "cwd": "/path/to/project"
    }
  }
}
qwen channel start dingtalk-work

useConnectionManager 默认 true,连接管理器可替换陷入异常状态的 SDK 连接。设为 false 后仍保留 SDK 自身的保活和自动重连,不是关闭所有恢复机制。

交互卡片

不写 interactiveCards 时,交互卡片关闭;写入对象后,总开关、状态卡和问题卡默认都开启。以下是应合并到已有渠道对象中的片段:

{
  "interactiveCards": {
    "enabled": true,
    "statusCard": { "enabled": true },
    "questionCard": { "enabled": true, "timeoutMs": 270000 }
  }
}

问题卡默认 270000 毫秒超时。timeoutMs 要是正的有限数值,上限为 2147483647。渠道编辑器可能不展示这些字段,但会保留已配置对象;可通过配置文件或 API 管理。输出模式与后台任务的关系见钉钉输出策略。

群提及与引用

atSender 默认 false;开启时,普通 Markdown 回复会在首个分块中使用发送者 staff ID 提及对方。它不控制入站消息是否通过 requireMention;后者根据平台 isInAtList 判断。

钉钉普通文本回调会去掉机器人提及,之后的 /clear 或 !command 可能被识别为命令。富文本回调保留的 @Bot 文本可能让同样内容作为普通任务输入。排查命令未执行时,应检查消息类型和实际传入文本。

引用用户消息时,可带入文本、图片及引用媒体;引用机器人先前回复目前不支持。合并转发记录会保留标题、摘要和发送者信息,最多 50 条、总文本约 4000 字符,每条约 500 字符,截断会有提示。作为引用的合并记录总预算为 500 字符。渠道会处理群上下文的单行和括号格式,但这些内容仍是外部消息,不应当成系统指令。

文件和媒体

图片及富文本混合图片需要视觉模型。文件、音频和视频会下载为本地路径。让机器人发回生成的文件时,应明确请求;可发送工作区或系统临时目录内的非空文件,每个不超过 20 MB,每次回复最多 5 个。无法发送会在最终文本说明。

Markdown 大约按 3800 字符分块,表格交给平台展示。处理期间的 👀 表情会在结束后移除,它不是投递成功回执。找不到 sessionWebhook 等问题先检查应用能力、权限和渠道 stderr 中的同次请求错误。

主动投递私聊使用 user ID,群使用 openConversationId,并明确 isGroup;不使用传统 incoming webhook URL,也不提供群内任意线程定位。接入方式见Webhook 与联系人。