Skip to content

[Channel][Telegram] 支持按 Skill 判断群消息相关性,并以成功静默结果跳过回复 #3666

Description

@aelf-hzz780

需求

商户希望把 Telegram Bot 用作群内知识客服:群成员无需 @bot,Bot 根据商户维护的 Skill 判断消息是否需要回答;相关问题回复,普通闲聊保持沉默。

现有接入方式是:在 NyxID 绑定 Bot,在 Aevatar 确认绑定关系并关联 Ornn Skill。期望商户通过配置和 Skill 维护业务规则,无需自行维护另一套 Telegram 消息服务。

以 Portkey 知识客服为例:

群消息 期望行为
“Portkey 的 eTransfer 卡在 25% 了怎么办?”(不 @) 进入知识问答,按 Skill 回答或澄清
“大家午饭吃什么?” 正常处理完成,群里不出现任何 Bot 消息
引用 Bot 上一条知识答复追问“那该联系谁?” 结合引用上下文继续回答,即使没有 Portkey 关键词
其他成员接着闲聊 不因前面的知识问答而持续插话

“保持沉默”包括不发送解释性文字(例如“此问题与我无关”)、占位消息、流式片段或错误兜底;明确选择不回复应当是成功的业务结果。

当前缺口与证据

以下为源码核查,基线为 feature/integrate@e3fde8e0fa7526d58c8e050fa2a9f71dfbb33349;尚未做真实 Telegram 群验收,不将源码结论描述为已复现的线上故障。

  • Telegram 群普通消息已可进入回复流程,无需 @:TelegramGroupAdmissionPolicy
  • Skill 可以描述相关性标准,但当前默认 Skill 链路没有可消费的“成功且不回复”结果。返回空文本不能替代这个结果:运行时会要求模型补答,最终仍为空时进入 empty_reply 失败并生成兜底文字:恢复逻辑最终处理
  • 内部已有 ConversationTurnResult.Ignored,但还没有接通商户 Skill 的业务判断。

范围

第一版聚焦 Telegram 群普通文本的选择性回复,以及同一知识问答中的引用追问。保留私聊和明确系统命令的原有行为。

不包含删除消息、ban、管理员审批、通过 Telegram 修改 Skill 或 forum topic/thread 的新增支持。业务相关性标准由商户 Skill 维护;平台负责执行回复或静默结果。实现不要求修改 NyxID 或 Ornn。

验收标准

  • 商户可对目标 Bot 的群消息开启选择性回复;已有 Bot 行为不会因升级被隐式改变。
  • 不 @ 的相关问题正常回答;测试集中的无关闲聊不产生任何对外消息,也不因业务静默触发补答、重试或兜底。
  • 无关键词的相关引用追问可以继续;其他成员闲聊不会被错误继承为同一客服对话。
  • 静默结果可观测、可追踪,并完成消息去重与生命周期清理;不被记为发送成功或执行失败。
  • 缺少 Skill、判定超时、无效输出和真正的空回复故障,与业务静默明确区分;保留原有非选择性回复路径的故障保障。
  • 重复投递、重启恢复不会把已完成的静默消息转为回复,也不会让应回复的消息重复发送。
  • 通过有/无 NyxID sender 绑定的适用账号分别验证默认 Skill 路径,并完成真实 Telegram 群测试。

查重与关联

已检索 open/closed Issues 和相关 PR,未找到覆盖此需求的重复项。以下是相关保障,不能视为本需求已经完成:

新增业务静默时,应保留这些针对真实回复故障的保障。具体改法补充在后续评论。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions