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_id | work |
dm_policy | pairing |
group_policy | mention |
send_chunk_chars | 3800 |
启动 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_groups 和 group_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_id和client_secret_ref。 - 群消息被忽略:检查
group_policy、mention 文本和allow_groups。 - Bot 自己回自己:设置你的钉钉 app 可提供的 bot 标识。
- Doctor 通过但发送失败:确认钉钉 app 在目标会话里有发送权限。