跳到主要内容

DingTalk 设置

概述

DingTalk channel 通过 DingTalk stream adapter 把 Anyy 连接到钉钉会话。Adapter 支持 direct messages、group chats、lifecycle startup 和 live-smoke 检查。

前提条件

  • 一个钉钉 app 或 robot。
  • client_id
  • client_secret
  • 部署需要时准备可选 robot 或 bot 标识。
  • 目标会话中的收发消息权限。

配置

创建凭据

在钉钉开发者后台创建 app/robot。把 client secret 存到 Anyy secret storage。

配置 Anyy

anyy setup channels dingtalk \
--set client_id=ding-client-id \
--secret client_secret='ding-client-secret' \
--write-config

可选字段:

channels:
dingtalk:
bot_user_id: "bot-user-id"
bot_staff_id: "bot-staff-id"
robot_code: "robot-code"

setup 默认值:

字段默认值
account_idwork
dm_policypairing
group_policymention
send_chunk_chars3800

启动 Gateway

anyy gateway start
anyy channels reload

运行 Doctor 检查

anyy channels doctor dingtalk

访问策略

私信

setup 默认 dm_policy: pairing。更严格时,用 allowlist 并在 allow_from 中写钉钉 sender id。

群组

默认 group_policy: mention,群消息需要提到 bot 或匹配配置的 mention patterns 才会响应。

只允许特定群时,使用 allow_groupsgroup_policy: allowlist

管理员

DingTalk channel policy 控制消息准入。命令授权由所有 messaging channel 共享。

Sessions

每个被接受的钉钉会话会映射到一个 Anyy session。Adapter 会过滤重复 message id。

媒体支持

入站媒体

当前 DingTalk adapter 没有声明 inbound media 能力。

出站媒体

DingTalk 发送文本/markdown 回复,没有声明原生 outbound media。

命令

使用共享 messaging commands。群里如策略要求,需要 mention Anyy。

Cron 投递

anyy cron create \
--name "DingTalk standup" \
--schedule "0 9 * * *" \
--prompt "Send the standup reminder" \
--delivery-target current_user_default \
--delivery-channel dingtalk

故障排查

  • Stream 没有启动:检查 client_idclient_secret_ref
  • 群消息被忽略:检查 group_policy、mention 文本和 allow_groups
  • Bot 自己回自己:设置你的钉钉 app 可提供的 bot 标识。
  • Doctor 通过但发送失败:确认钉钉 app 在目标会话里有发送权限。