2026-10-02 · 原文发布日
会自己长大的FAQ聊天机器人(人工审核)
一个n8n网站FAQ机器人模板:访客通过托管webchat提问,OpenAI只从Google Sheets的FAQ表作答避免编造;每轮对话分流为已答、未答(记录并邮件通知站长)或留资(抓到邮箱存Leads表)。每周一另一条线把未答问题聚类、按频次排序,让OpenAI起草候选FAQ条目邮件给站长,追加到FAQ-Pending表,站长把认可的行复制进FAQ表后机器人才会学到——只学人工批准的内容。自带无凭据的六轮演示测试。
原文要点
n8n上的免费模板20309:访客经托管webchat(Chat Trigger)提问,OpenAI只依据Google Sheets的FAQ表作答;每轮分流为已答、未答(记入Unanswered表并Gmail通知站长)、留资(抓到邮箱存Leads并通知)。每周一第二条线把未答问题聚类、按频次排序,让OpenAI起草候选FAQ、邮件摘要给站长并写入FAQ-Pending表;站长把认可的行复制进FAQ表后机器人才学会。SETUP节点可一键建含四个标签页、表头和示例行的表格并输出spreadsheet_id,内置无凭据的六轮演示。
这次做成什么
在n8n复刻这套只学人工批准内容的FAQ机器人:先跑通无凭据演示,再接真实凭据建表、配邮箱、上线webchat,并理解每周候选FAQ如何经人工批准后生效。本站不提供原工作流文件;若导入原模板(n8n.io/workflows/20309),节点名称与界面以模板实际为准。
准备什么
- n8n实例(含Chat Trigger托管webchat能力)与OpenAI凭据
- Google Sheets凭据与Gmail凭据(接凭据后会真实写行、真实发信)
- 站长邮箱owner_email用于接收未答问题与每周候选摘要
- 一个可嵌入iframe或链接的网站位置,用于挂webchat公开URL
具体怎么做
先跑无凭据演示
导入模板后先不接任何凭据,点Test workflow运行演示线:六轮访客回合(可答、未答、留资、空消息、重复问题、坏AI回答)会依次走过每条路由,用来确认分流逻辑符合预期,再进入真实配置。
一键建表
运行SETUP节点(Lane D),它会自动创建一张Google Sheets,内含FAQ、Unanswered、Leads、FAQ-Pending四个标签页、表头和示例行,并在输出里打印spreadsheet_id,复制这串ID。
填写工作流配置
打开Workflow Config节点,粘贴spreadsheet_id和你的owner_email;确认无误后删除SETUP整条线(Lane D),避免每次运行重复建表。
接凭据并限定回答范围
给Google Sheets、Gmail、OpenAI三个节点分别挂凭据。回答环节的系统提示词要锁死只准引用FAQ表内容(见artifact),这是防编造的核心;查不到答案时不许自由发挥,必须走未答路由。
三分支路由
每轮对话按结果分流:已答→直接回复访客;未答→向Unanswered表追加一行并Gmail通知站长,重复问题不重复建行(追加前先按问题文本查重);留资→识别访客消息里的邮箱,写入Leads表并通知站长。
每周候选FAQ线
Schedule Trigger设为每周一执行:读取Unanswered全表,把相近问题聚类、按出现频次排序,让OpenAI为高频缺口起草候选问答,把摘要邮件发给站长,同时把候选行追加到FAQ-Pending。站长人工审阅后,把认可的行从FAQ-Pending复制进FAQ表,机器人从下一轮起就会回答它。
上线嵌入
激活工作流,复制Chat Trigger生成的公开URL,以链接或iframe形式嵌入你的网站;上线前用三个真实问题自测:一个FAQ里有的、一个没有的和一条带邮箱的留言。
可直接复制的材料
FAQ限定回答提示词(本站独立编写)
{{}}处用n8n表达式替换;下游用Code节点解析末尾JSON决定路由。本站独立编写,非原模板提示词原文。
你是网站客服机器人。你只能根据下面FAQ列表中的条目回答访客,严禁使用你自己的知识补充或推测。
规则:
1. 若FAQ中存在能回答该问题的条目,用简洁中文回答,并在末尾单独一行输出JSON:{"route":"answered"}。
2. 若FAQ无法回答,回复“这个问题我暂时回答不了,已帮您记录,我们会尽快补充”,末尾输出{"route":"unanswered","question":"归一化后的问题原文"}。
3. 若访客消息中包含邮箱地址,视为留资:礼貌致谢,末尾输出{"route":"lead","email":"提取到的邮箱"}。留资与提问同时出现时优先留资路由。
4. 除上述JSON外不要输出任何其他标记。
FAQ列表:
{{从Google Sheets读取的FAQ表内容,逐行格式:Q: 问题 / A: 答案}}
访客消息:{{chat输入}}四张表的表头结构(合成示例)
本站按模板描述整理的示意结构;实际列名以SETUP节点建出的表为准,追加行时按实际表头映射。
{"FAQ":["question","answer"],"Unanswered":["question","first_seen","count","notified"],"Leads":["email","message","captured_at"],"FAQ-Pending":["question","answer","source_count","proposed_at","status"]}输入与输出示例
本站虚构演示,非模板实际运行输出;邮箱为虚构示例地址。
输入
演示访客三条消息:①你们的退款政策是什么(FAQ表已有该条目)②你们支持对公转账开票吗(FAQ表中没有)③我的邮箱是lihua@demo-corp.example,想了解企业版报价对应输出
路由结果示意:①answered,机器人按FAQ条目回复退款政策;②unanswered,Unanswered表新增一行{question:"你们支持对公转账开票吗",count:1,notified:true}并向owner_email发通知;③lead,Leads表新增{email:"lihua@demo-corp.example",captured_at:...}并通知站长。周一候选线运行时,若对公开票问题累计出现5次为最高频,FAQ-Pending会新增一行候选问答并随摘要邮件发出,站长复制进FAQ表后机器人才会回答。做完检查这些
- 不接凭据运行演示线,六种回合各自走到正确路由且不报凭据错误
- SETUP节点建出的表格含FAQ、Unanswered、Leads、FAQ-Pending四页且带示例行
- 问一个FAQ没有的问题,Unanswered新增一行且owner邮箱收到通知,再问一次不重复建行
- 候选行只在被人工复制进FAQ表后,机器人才能回答对应问题
容易卡住的地方
- 接上Sheets和Gmail凭据后节点会真实写行、真实发信,测试期owner_email先填自己
- 删除SETUP线之前必须先拿到spreadsheet_id,否则要重建
- 回答提示词若不锁死只用FAQ内容,模型会编造答案,违背模板设计初衷
- 未答查重依赖问题文本归一化,措辞差异大的同义问题可能被记成两行
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Answer visitor questions and grow the FAQ with OpenAI, Google Sheets and Gmail
- 原作者
- Vinh Le
- 原始发布日期
- 2026-10-01T16:44:35.385Z
- 来源
- https://n8n.io/workflows/20309