Skip to content

钉钉接入

OpenPollen 通过插件支持钉钉 Bot,使用 Stream 模式连接钉钉服务器,无需公网 IP。

前置条件

  1. 拥有钉钉开放平台企业内部应用
  2. 应用已启用机器人能力
  3. 获取 Client ID 和 Client Secret

创建钉钉应用

  1. 登录钉钉开放平台
  2. 创建企业内部应用
  3. 在应用的「机器人」页面启用机器人功能
  4. 记录 ClientIDClientSecret
  5. 在「消息接收模式」选择 Stream 模式

配置

openpollen.json 中配置钉钉:

json5
{
  "channels": {
    "dingtalk": {
      "enabled": true,
      "clientId": "${DINGTALK_CLIENT_ID}",
      "clientSecret": "${DINGTALK_CLIENT_SECRET}",
      "robotCode": "${DINGTALK_ROBOT_CODE}",  // 可选
      "groupPolicy": "mention"
    }
  }
}
字段类型默认值说明
enabledbooleanfalse是否启用
clientIdstring应用 Client ID
clientSecretstring应用 Client Secret
robotCodestring机器人编码(可选,默认用 clientId)
groupPolicystringmention群消息策略

群消息策略

行为
mention仅当群成员 @机器人 时才响应(推荐)
all响应群内所有消息

使用

启动 OpenPollen 后,钉钉 Bot 会自动通过 Stream 模式连接:

bash
openpollen start
  OpenPollen v0.1.0 已启动
  Gateway: http://127.0.0.1:18800
  钉钉 Bot: 已连接 (Stream 模式)

单聊

直接向机器人发送消息即可。

群聊

在群中 @机器人 + 消息内容(当 groupPolicymention 时)。

消息格式

  • 接收:支持文本消息和图片消息
  • 回复:以 Markdown 格式回复(sampleMarkdown 消息类型)
  • 长度限制:超过 18000 字符的回复会自动截断

图片支持

钉钉插件支持接收用户发送的图片,包括:

  • 单独图片picture 消息类型)
  • 图文混排richText 消息类型,包含图片和文本段落)

收到图片后,插件会自动:

  1. 通过钉钉 Open API 获取图片下载链接(使用 downloadCode
  2. 下载图片到本地 (~/.openpollen/sdk-workspace/uploads/)
  3. 将图片路径传递给 Agent,Agent 使用 Read 工具识别并分析图片内容

TIP

接收图片消息需要在钉钉开放平台的应用配置中,确认已启用相应的消息类型权限。

回复机制

钉钉插件使用两种回复方式:

  1. Session Webhook:收到消息时钉钉提供的临时回调 URL,用于异步回复
  2. Open API:通过钉钉 Open API 主动发送消息(需要 Access Token)

Access Token 会自动缓存,过期前 5 分钟自动刷新。

测试

bash
# 检查钉钉渠道状态
openpollen channel list

# 通过 Gateway API 发送测试消息
openpollen channel test dingtalk

常见问题

机器人不响应群消息

检查 groupPolicy 设置。如果为 mention,需要在群里 @机器人。

连接失败

确认 clientIdclientSecret 正确,且应用的「消息接收模式」已设置为 Stream 模式。

回复被截断

钉钉消息有长度限制,OpenPollen 会自动截断超过 18000 字符的回复,并添加截断提示。