Files
openclaw-config/agents/main/agent/workshop-skills/cross-channel-send/SKILL.md
T

3.1 KiB
Raw Blame History

name, description
name description
cross-channel-send 消息发不出去/跨频道发送:Cross-context messaging denied、飞书主动私聊不可用时,用 CLI openclaw message send 跨频道投递并核实送达。

跨频道发送(cross-channel send

用于「这条消息发不出去」「改投钉钉/飞书」「飞书私聊推不动」这类场景:把消息实际送到当前会话未绑定的频道,并拿到可核实的送达证据。与定时提醒无关(提醒的路由写在 cron delivery 上,见 scheduled-reminders)。

事实基础(本机 2026-09-16 实测,OpenClaw 2026.8.1

  • message(action=send) 受会话绑定频道限制:主会话绑 feishu 时,指定 channel="dingtalk-connector" 直接被拒: Cross-context messaging denied: action=send target provider "dingtalk-connector" while bound to "feishu"。 这是策略拒绝,不是投递失败——原样重试无效,换 CLI。
  • 同一时刻 CLI 跨频道发送成功(--channel 接受插件频道名):
    openclaw message send --channel dingtalk-connector --target 0464031658857345 --message "..." 
    # → ✅ Sent via DingTalk. Message ID: card_...
    
  • 飞书「机器人主动向用户发私聊」当前不可用,报 Feishu send failed: Sending messages to users is temporarily unavailable.群 / chat_id 可达、open_id 私聊不可达,可复现;此时按第 3 步改投钉钉。
  • 该飞书故障换 CLI 也一样报错openclaw message send --channel feishu ... 同样失败)→ 属飞书侧限制,不是 CLI 或工具层问题。

步骤

  1. 先用 message(action=send) 发当前频道。读错误分类:
    • Cross-context messaging denied → 走第 2 步(跨频道)。
    • Sending messages to users is temporarily unavailable → 走第 3 步(换通道)。
  2. 跨频道补发:openclaw message send --channel <频道> --target <目标id> --message "..."。 目标 id 用该频道已知可达的会话:钉钉 0464031658857345;飞书 DM chat_id 见 scheduled-reminders 的「投递通道」。发送后回读输出确认 ✅ Sent via ... + Message ID。
  3. 原频道本身不可达时(如飞书主动私聊),把结果改投用户实际能收到的通道(钉钉),并在正文里说明「原频道故障 + 已改投」,让用户知道换通道的原因。
  4. 核对送达:只有 CLI 输出 ✅ Sent via ...message 工具返回成功才算发出;任何 Feishu send failed / denied 都不算,不要在回复里声称已送达。
  5. 原频道恢复或用户要求切回时,改回原频道,并撤掉临时的替代通道推送,避免同一条内容双通道重复打扰。

注意

  • 跨频道发送属「离开本机的对外发送」,只在用户任务范围内做。
  • 诊断类测试消息必须标注「测试/请忽略」,且只发一次——用飞书群做过一次诊断后不要再往同一群发第二条。
  • 频道名以插件注册名为准(dingtalk-connectorfeishuopenclaw-weixin);上面写死的目标 id 是本机惯例值,换部署要重新确认。