问答
这篇帮你做什么:维护一套“群里常问的问题 → 固定回答”的词库。群成员的消息命中问题时,机器人自动把答案发到该群。入口:侧边栏 → 群设置 → 问答词库。
适用与不适用
| 你想做的事 | 是否适合本页 | 原因 |
|---|---|---|
| 成员问固定问题时回复固定答案 | 适合 | 模糊、精确或正则匹配后回复 |
| 给回答加入触发者昵称、群名、原问题等变量 | 适合 | 回答支持固定 6 个变量 |
| 消息命中关键词后警告、禁言或踢人 | 不适合 | 用监控方案/群聊监控 |
| 修改“帮助”等指令的回复 | 不适合 | 用提示设置 |
| 定时主动发消息 | 不适合 | 用定时任务 |
| 给任意问题接 AI 自由回答 | 不适合 | 问答只返回你维护的固定答案 |
作用范围与工作方式
- 词库按群独立:顶部选好群后,新增、编辑、导入都属于该群。页面没有控制台登录账号或角色概念,选群即代表要改该群词库。
- 匹配时先看当前群已发布的问答,再看全局问答层。当前群问答按“排序号从大到小、同排序号后创建的优先”检查;当前群的问答全部检查完后,才检查全局层。
- 一条消息最多得到一条问答回复:在问答内部,第一条命中的问答即停止;在整条消息路由中,问答规则是低优先级(优先级固定为 0),如果消息先被指令或默认优先级更高的监控规则受理,问答不会再回复。反过来,问答先受理时,同一条消息的转发等后续规则通常也不会再执行(同一转发规则的多个目标属于一次扇出)。
- 只有状态为 启用(列表显示为 published)的问答参与匹配;禁用或删除即停止。
- 正则写错时该条问答在匹配阶段被静默跳过,不会报错,也不会让整条词库失效。
全局问答层怎么维护
系统数据中存在 group_id = 0 的全局问答,会对所有群生效;用 测试匹配 时,结果里的“作用域”会标明命中来自“当前群”还是“全局 FAQ”。
当前控制台没有独立的全局问答维护入口:页面列表、新增、编辑和导入都只写当前群。你不能在页面里选择“全局”作为归属,导入文件里的 GroupID 列也会被忽略。本手册未提供已核实的全局层写入步骤,不要据此猜 API 或直接改在线数据库。需要全局维护时应先确认当前部署支持的操作及全部受影响群;不要把一条本群问答当成全局,也不要为了“让所有群都能用”把多个群逐个复制后误以为已经统一。
新增一条问答
- 点右上角 新增问答。
- 填写:
- 问题(必填,1–200 字):选“正则匹配”时这里填正则表达式。
- 匹配模式(三选一,默认模糊匹配):
- 模糊匹配:群消息 包含 问题原文即命中(不区分大小写)。
- 精确匹配:整条消息与问题完全相同才命中(不区分大小写)。
- 正则匹配:按正则表达式匹配消息;写错的正则会被跳过、不报错,该条等于不生效。
- 排序:数字越大越靠前。它只在当前群词库内部比较;同排序号时后创建的优先。全局问答总在当前群问答之后检查,不能靠排序号排到当前群问答前面。
- 回答(必填):命中后发出的内容,支持变量替换(见下方“可用变量”),点 测试渲染 可预览替换效果,不会真发。
- 分类(可选):便于筛选管理,可直接输入新分类名创建。
- 状态:默认启用;关闭后该条不参与匹配。
- 点 确定 保存。
- 怎样确认成功:列表出现该条,状态为启用;刷新后内容、匹配模式和排序保持不变。
设置项参考
| 字段 | 含义与取值 | 默认 | 作用与限制 |
|---|---|---|---|
| 问题 | 问题文本或正则表达式 | 无 | 1–200 字;正则模式填表达式 |
| 匹配模式 | 模糊 / 精确 / 正则 | 模糊 | 正则非法时该条被静默跳过 |
| 排序 | 整数,越大越优先 | 0 | 只在当前群内部排序 |
| 回答 | 命中后发送的文本 | 无 | 支持 6 个模板变量 |
| 分类 | 分类名称 | 未分类 | 便于筛选;可按名称自动创建 |
| 状态 | 启用(published)/ 禁用(draft) | 启用 | 只有启用项参与匹配 |
回答可用变量
| 变量 | 含义 |
|---|---|
{{.user_id}} | 触发问答的成员 ID |
{{.nickname}} | 触发问答的成员昵称 |
{{.group_id}} | 群号 |
{{.group_name}} | 群名 |
{{.time}} | 回复时刻 |
{{.question}} | 触发命中的那条消息原文 |
模板语法写错(如括号未闭合)时,该次回复不发送,“渲染失败”计数加一;变量名不存在时通常渲染为空字符串。完整差异见变量使用指南。
先测试,再上线
- 点顶部 测试匹配,输入一条模拟的群消息,页面会显示 会命中哪一条 已启用的问答(含作用域、匹配方式、将回复的答案),不实际发送。
- 测试匹配按与运行时相同的当前群 → 全局层顺序,以及相同的排序/创建时间顺序进行,是排查“为什么总命中那条”的最快方法。
- 但它只验证问答层:不能证明整条消息一定会进入问答,也不能验证群级开关、机器人状态和发送结果。
正例:先写“怎么进群”的模糊问答,用测试匹配输入“请问怎么进群呀”,确认命中当前群条目和回答,再在测试群实际问一次。反例:只把排序号调到很大,就认为能压过管理指令或监控规则——问答的固定优先级低于这些阶段。
统计列怎么看
列表中的 命中 / 受理 / 发送确认 / 渲染失败 是这条问答的累计计数:
- 命中:被匹配到的次数。
- 受理:命中且回答渲染成功后进入回复处理的次数,不代表已经发送。
- 发送确认:发送环节获得成功确认的次数,不代表每位成员已经看到或阅读。
- 渲染失败:因为回答里的变量写法有误导致这次没有回复的次数。渲染失败大于 0 说明回答模板有问题,改正变量语法即可。
命中数高但受理数低,通常说明大量命中没有进入回复;受理数高但发送确认低,要继续查机器人和群发送链路。计数是累计值,不按时间筛选。
导入与导出
顶部 导入 / 导出 接受 CSV 文件;导入对话框提供模板下载。列固定为:
textQuestion,Answer,MatchMode,CategoryName,Status,Sort,UsageCount,GroupIDCSV 使用 UTF-8 带 BOM,Excel 打开中文不乱码。
UsageCount和GroupID只用于导出展示,导入时忽略:统计由系统维护,归属取当前选中的群。分类按名称解析,不存在时自动创建;匹配模式默认模糊、状态默认 published、排序默认 0。
导入按 整批校验、整批写入 处理:只要有一行有问题(如缺问题或回答、回答模板写法非法),整批都不会导入,错误按
Row N报告,修正后重试。页面可能仍提示“导入成功”但导入条数为 0(例如只有表头的空文件)。请刷新核对列表实际条数,修正文件中的问题行后再导入,不要只凭成功提示判断。
导入不会覆盖当前群原有问答,而是追加新条目;迁移或批量修改前先导出留底,并确认目标群选对。
没成功先检查什么
- 该回复没回复:问答是否启用 → 匹配模式选对没有(模糊匹配要求消息里 包含 问题原文)→ 用 测试匹配 验证这条消息到底命中了谁——很可能被 排序更靠前的另一条 或全局问答抢先命中了。
- 命中了但在群里仍未回复:消息是否已被指令或监控规则先受理;看 渲染失败 计数是否在涨;机器人是否在线且在该群。
- 正则写错了没反应:正则匹配下非法正则会被静默跳过;先用 测试匹配 只验证问答层,再结合结果判断与排障检查整条消息链。
- 以为改了全局:确认当前选中的群;控制台没有全局问答入口,本页操作不会写全局层。
关闭或改回
- 单条停用:行内开关或 操作 → 禁用;不再需要就 删除。
- 停止本群词库:把本群条目逐条禁用;没有单独的“问答总开关”。全局问答属于另一层,仅禁用本群条目不保证所有问答回复停止。
- 删除或禁用只影响后续匹配,已经发出的回答不能撤回。