:飞书钉钉深度集成——卡片消息、互动按钮、审批流程的 TaoToken 配置骨架)
1. 从「能回消息」到「能办事」OpenClaw 对接飞书钉钉的真实卡点如果你已经把 OpenClaw 接进了飞书或钉钉大概率经历过这个阶段机器人能收发文本但一到「点按钮确认」「发起审批」「查空闲会议室」就卡住。原因不复杂——纯消息 webhook 只能传文本交互式卡片需要回调地址审批和日程要调平台开放 API而这三件事各自需要一套凭证和通道。我试过把每条链路单独配一遍结果是飞书一套 App ID、钉钉一套 Client ID再加上模型侧一个 Key配置文件散在三个地方改一个忘一个。后来把模型调用统一收敛到 TaoToken 的 API 通道飞书和钉钉只负责「消息进出 回调」OpenClaw 负责「意图识别 工具调用」整条链路才稳定下来。这篇是进阶实战的第二十八篇聚焦三件事卡片消息怎么发、互动按钮回调怎么接、审批流程怎么用 MCP 触发。目标很明确——给你一份config.toml和settings.json的可复制骨架配完就能跑通一次卡片回调加一次审批触发。适合已经完成 OpenClaw 基础安装、掌握 IM 平台基础接入的读者。如果你还没拿到模型 Key先去 TaoToken 控制台建一个后面所有配置都围绕它展开。2. TaoToken 前置把模型通道和 IM 通道解耦深度集成最容易踩的坑是把「模型调用」和「IM 平台调用」混在一个配置里。飞书和钉钉的凭证会过期、权限会变但模型通道不该跟着动。TaoToken 在这里的角色就是统一 Key 和 API 通道OpenClaw 的所有模型请求走同一个 base_url飞书/钉钉的 webhook 和回调只负责把消息送进来、把卡片送出去。先做三件准备。第一在 TaoToken 控制台创建一个 API Key记下它后面写进settings.json。第二确认你的 OpenClaw 版本支持 MCP 工具调用mcporter命令可用。第三飞书和钉钉各自建好自建应用拿到 App ID / App Secret并开通消息与卡片相关权限。模型通道的地址统一用https://taotoken.net/api不要带任何多余参数。如果你用的是 Claude Code 或 Anthropic 风格的客户端接入文档里有对应的 base_url 写法照着填即可。这一步做完你的 OpenClaw 就有了一个稳定的「大脑通道」接下来飞书和钉钉只是「手脚」。注意模型 Key 和 IM 凭证分文件存放settings.json放模型侧config.toml放平台侧。这样换 Key 不用动平台配置换应用也不用动模型配置。3. 可复制配置config.toml 与 settings.json 骨架下面这份骨架是我实测能跑通的最小集合。先看模型侧settings.json重点是base_url和api_key两项其余按你的 OpenClaw 版本补全。{ model: { provider: openai-compatible, base_url: https://taotoken.net/api, api_key: sk-你的TaoToken密钥, model_name: claude-sonnet-4-5, timeout: 60 }, mcp: { servers: { dingtalk-contacts: { url: 你的钉钉通讯录MCP地址 }, dingtalk-calendar: { url: 你的钉钉日历MCP地址 } } } }再看平台侧config.toml飞书和钉钉分开写卡片模板 ID 和回调路径是重点。[feishu] app_id cli_xxxxxxxx app_secret 你的飞书AppSecret verification_token 你的VerificationToken encrypt_key 你的EncryptKey card_template_id 你的卡片模板ID callback_path /webhook/feishu/card [dingtalk] client_id 你的钉钉ClientID client_secret 你的钉钉ClientSecret robot_code 你的机器人Code card_callback_path /webhook/dingtalk/card [openclaw] workflow_dir ./workflows log_level info飞书卡片模板建议先在卡片平台建一个「AI 卡片」模板类型选消息卡片关联你的飞书应用保存发布后复制模板 ID 填进card_template_id。钉钉的交互式卡片走actionCard类型按钮的actionURL指向你的card_callback_path。两个平台的回调路径不要重复否则日志会混在一起。权限这块别省飞书后台要加im:message:send_as_bot、im:message.p2p_msg:readonly、im:message.group_at_msg:readonly钉钉要开机器人消息发送和卡片回调权限。权限没开卡片发得出去但按钮点不动这是最常见的「看起来成功其实失败」。4. 验证请求一次卡片回调 一次审批触发配置写完先别急着上业务用两个最小动作验证链路。第一个是卡片回调。用 curl 模拟钉钉发送一张带确认按钮的卡片curl -X POST 你的钉钉机器人Webhook \ -H Content-Type: application/json \ -d { msgtype: actionCard, actionCard: { title: 任务待办T-001, text: 请确认是否执行本次操作, btnOrientation: 0, btns: [ {title: 确认执行, actionURL: https://你的域名/webhook/dingtalk/card?task_idT-001actionapprove}, {title: 驳回, actionURL: https://你的域名/webhook/dingtalk/card?task_idT-001actionreject} ] } }发送成功后在钉钉里点「确认执行」观察 OpenClaw 日志是否收到回调并打印task_idT-001 actionapprove。收到就说明卡片链路通了。第二个是审批触发。用 MCP 方式走一遍「查人 → 查忙闲 → 建日程」mcporter call dingtalk-contacts search_user_by_key_word --params {keyWord:张三} mcporter call dingtalk-calendar query_busy_status --params {user_ids:[123456],date:2026-04-27} mcporter call dingtalk-calendar create_calendar_event --params { title: 事假, attendees: [123456], start: 2026-04-27 09:00, end: 2026-04-27 18:00, description: 申请事假一天由AI助手自动登记 }三条命令依次返回user_id、busy: false、event_id就说明 MCP 通道和模型意图识别都正常。如果第二条返回忙闲状态但第三条报权限错多半是日历 MCP 的写权限没开回钉钉开放平台补一下。提示验证阶段把log_level设成debug能看到 OpenClaw 实际调用了哪个 MCP 工具、传了什么参数。排查问题时比猜快得多。5. 本篇常见错排查卡片发出去了按钮点了没反应。九成是回调地址不可达。钉钉和飞书都要求回调地址是公网 HTTPS本地localhost收不到。用内网穿透工具把本地端口映射出去或者直接部署到有公网 IP 的机器上。另外检查callback_path和实际路由是否一致飞书和钉钉的路径别写反。MCP 调用报「tool not found」。先跑mcporter list看服务有没有注册上。如果服务在但工具名不对用mcporter call 服务名 list_tools --output json列出真实工具名。钉钉 MCP 广场里不同服务的工具名不通用通讯录的search_user_by_key_word和日历的create_calendar_event分属两个服务别混着调。模型请求 401 或超时。检查settings.json里的base_url是不是https://taotoken.net/apiapi_key有没有多余空格。如果超时把timeout从 60 调到 120MCP 调用链长的时候 60 秒不够。还不行就去 TaoToken 控制台看 Key 的额度状态。审批流程走到一半断了。大概率是「人类在环」没配。涉及权限变更、数据删除、批量导出的操作OpenClaw 应该先发卡片请求确认用户点确认后再继续。如果直接执行了检查工作流里有没有加condition判断和确认步骤。高风险场景宁可多一次点击也别让 AI 直接落库。飞书卡片显示成纯文本。卡片模板 ID 填错了或者模板类型不是「消息卡片」。回卡片平台确认模板已发布且关联的应用和config.toml里的app_id是同一个。6. 把链路固定下来下一步怎么走配通之后建议把验证过的两个动作固化成工作流文件放在workflows/目录下。卡片回调用一个 YAML 描述「收到 approve 就触发后续技能」审批触发用另一个描述「查人 → 查忙闲 → 建日程 → 发卡片提醒」。这样每次新增场景只是复制骨架改参数不用重配通道。模型侧继续用 TaoToken 统一管理飞书和钉钉的凭证按平台分文件。需要新建 Key 或看额度去控制台接入细节和 base_url 写法看接入文档想先在网页里试模型效果用模型对话长期跑编码和 Agent 任务Coding Plan 更省心。链路稳定之后你会发现 OpenClaw 真正值钱的地方不是「能聊天」而是「点一下按钮审批和日程自己走完」。