Skip to content
FunCoding

Search

Search docs, Skills and MCP

渠道 Webhook 与已观察联系人

用独立秘密触发无人值守任务,核对目标身份与投递完成。

This page has not been translated into English yet. The original Chinese version is shown below.

Daemon-managed 渠道可接收认证 webhook,把事件作为上下文交 agent 分析,再发最终结果。它不是原样转发器;任务要求 approvalMode:yolo,而且作用于整个渠道,因此通常使用专用渠道或严格限制普通发送者。

来源与目标

每个 channels..webhooks.sources. 配置 secretEnv 和 targets。secretEnv 指环境变量名,targets 以本地 targetRef 映射真实平台目标,不让调用方随意换聊天地址。

DingTalk 每目标明确 isGroup:私聊 chatId 是用户 ID、false;群是 openConversationId、true。senderId 可标来源身份。其他平台按其主动投递契约配置,不通用猜测线程字段。

curl -X POST "http://127.0.0.1:4170/channels/team-bot/webhooks/build" \
  -H "x-qwen-webhook-secret: $QWEN_CHANNEL_BUILD_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"eventType":"build","targetRef":"operator","title":"Build finished","payload":{"status":"success"}}'

此调用假设已配置同名渠道、build 来源与 operator 目标。认证使用 x-qwen-webhook-secret,即使 daemon 自身启用 bearer auth 也一样;不要把 daemon token 交外部 webhook 提供商。

配置和秘密在 daemon 启动读取,变更来源或轮换秘密需重启。202 accepted 只说明 worker 接管,不代表聊天消息已经送达;通过 daemon/worker 日志和 /daemon/status 追踪。

发现最近联系目标

Daemon 的 DingTalk、Feishu、Telegram、WeCom 可从已授权消息观察联系人:

curl -H "Authorization: Bearer $QWEN_SERVER_TOKEN" \
  http://127.0.0.1:4170/workspace/channel/observed-contacts

/workspaces/:workspace/channel/observed-contacts 选择其他已注册可信工作区。freshWithinSeconds 默认七天,可选一秒到365天;能力标识 workspace_channel_observed_contacts。

返回顶层 users 为私聊用户,groups 中包含群内观察用户,Feishu/Telegram 可带 topics 和其参与者。ID 完整,lastObservedAt 是带毫秒 UTC 时间,不应按本地时区直接解析无偏移字符串。

观察不是组织目录

只记录通过私聊/群、mention、sender、pairing 门槛的消息,不存正文。标签可来自已接收消息,缺少名称则显示完整 ID;不能把观察成员列表当当前权威群成员或访问资格。

重复观察刷新时间与标签,用户离群或删除只能等关系变旧,不能即时检测。记录在 QWEN_HOME/channels/daemon//observed-contacts.json,工作区共用五百条观察额度,下次接受写入时清理超过365天项。

损坏或不支持版本时,可重置这个观察缓存文件等待新消息重建;这仅适用于联系人缓存,不是会话锁、配对或任务状态的通用删除办法。