夜雨聆风学习资料网

ARTICLE · 1089274

OpenClaw 外部会话投递实战:用 conversations 工具把结果发到微信/飞书/Discord

OpenClaw 外部会话投递实战:用 conversations 工具把结果发到微信/飞书/Discord

为什么需要「外部会话投递」

sessions_send 解决的是 OpenClaw 内部多个 Agent 会话之间的协作;但很多时候,你要的不是让另一个 AI 接着干,而是把结果直接送到真人所在的聊天群/私聊——比如把每日报表发到微信、把告警推到飞书群、把长文丢进 Discord 频道。

这类「对外投递」由 conversations_* 系列工具负责,它和 sessions_* 的关键区别是:

| 维度 | sessions_send | conversations_send / turn |

|------|---------------|---------------------------|

| 目标 | 本网关内的 Agent 会话(模型上下文) | 外部频道上的真实对话(微信/飞书/Discord 等) |

| 是否运行 AI | 会,目标会话的 Agent 会接管 | 否,只是把消息送出去 |

| 典型用途 | 跨会话委派、回收子 Agent 结果 | 通知真人、对外群发、把成品发到群里 |

一句话:sessions_send 找 AI 接着干,conversations_send 找人看结果。

第一步:拿到会话地址 conversations_list

投递前必须先知道「发给谁」。conversations_list 会列出当前已接入频道下的外部对话,返回稳定的 conversationRef(形如 conv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)。

# 列出某频道下的会话(按需加 channel / query 过滤)
conversations_list channel=openclaw-weixin limit=20

返回示例(节选):

{
  "conversationRef": "conv_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
  "title": "产品",
  "channel": "openclaw-weixin"
}
注意:conversationRef 是稳定且唯一的投递地址,建议把它记到 USER.md 或记忆里,后续脚本/定时任务直接复用,不用每次重新查。

第二步:单向投递 conversations_send

拿到 conversationRef 后,用 conversations_send 即可单向发送,不会触发本地 Agent 跑一轮:

conversations_send \
  conversationRef=conv_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6 \
  message="今日 OpenClaw 发文已完成:https://zyker.cn/archives/xxx/"

它是「发完即走」,适合:

  • 定时任务的产出通知(每天 03:00 发文后自动推链接到微信)
  • 告警/异常播报
  • 把一段长文/链接丢进指定群

第三步:发完等人回 conversations_turn

有些场景你要的不是一个公告,而是一问一答——比如「把这个问题丢到飞书群,等负责人回复后再继续」。这时用 conversations_turn:

conversations_turn \
  conversationRef=conv_xxx \
  message="服务器 502 了,你那边能看到 nginx 日志吗?" \
  timeoutSeconds=120

它会把消息送出去,阻塞等待该会话的关联入站回复,回复内容直接回到当前执行上下文,而不是另开一个 Agent 轮次。超时无回复则返回空,你可以据此走兜底逻辑。

conversations_turn
 的回复「回到这里」,意味着它可以嵌进脚本化的工作流里:发问 → 拿答案 → 继续处理。这是它和 conversations_send 最本质的差异。

实战组合:定时发文后自动推链接到微信

把上面三步拼进一个自动化产物(例如每日发文 cron 的收尾动作),伪代码逻辑:

1. 写稿 → 存 content-bank/YYYY-MM-DD-<slug>.md
2. 调用发布脚本生成静态页,拿到线上 URL
3. conversations_send 把 "新文已发布:<URL>" 推到微信「产品」会话

关键点:第 3 步的 conversationRef 来自首次 conversations_list 的结果,写死在自动化配置里即可,不必每次动态查询。

常见坑

  • 发错人
    :conversations_list 的 title 未必唯一,多个群同名时务必用 conversationRef 而非标题匹配。
  • 把 conversations 当 sessions 用
    :想让 AI 接着干,要用 sessions_send;conversations_send 发出去后不会有 Agent 接管。
  • turn 等不到回复
    :外部真人可能不在线,timeoutSeconds 要设合理上限,并在超时后走兜底(如转人工或写日志)。
  • 渠道未接入
    :conversations_list 返回空,通常是该频道还没在网关里配置/登录,先确认 channel 状态,而不是怀疑工具坏了。

小结

  • conversations_list
    :查地址,拿到 conversationRef。
  • conversations_send
    :单向广播,发完即走。
  • conversations_turn
    :发问并等真人回复,可嵌入自动化流程。
  • 对外投递用 conversations_*,对内委派用 sessions_*——别混。

把这三类工具分清,你的 OpenClaw 就从「只会自己干」进化成「能干完还知道通知谁」,真正的闭环才算合上。


关注公众号,获取更多 OpenClaw 实操技巧

相关学习资料