2026-09-05 · 原文发布日
Google文档当知识库的Telegram客服机器人
轻量级客服n8n流程:Telegram机器人收到消息后,实时抓取指定Google Docs的最新内容作为知识来源,连同当天日期和用户问题拼成提示词发给Claude(带按聊天ID区分的会话记忆),回答前先把日期、问题、答案、用户名记入Google Sheets留档,最后清理掉markdown链接等格式把纯文本回复发回Telegram。
原文要点
该n8n流程在Telegram机器人收到新消息时触发,实时抓取指定Google Docs文档的最新全文作为知识来源,把当天日期、文档内容和用户问题拼成一个提示词,经AI Agent发给Anthropic Claude模型,并按Telegram chat ID区分会话记忆。生成时间戳后把日期、问题、答案、chat ID、用户名写入Google Sheets留档,最后清理AI回复中的Markdown链接等格式,把纯文本回复发回Telegram。配置需要Telegram、Google Docs OAuth2、Anthropic、Google Sheets OAuth2四组凭据。
这次做成什么
做一个“改Google文档就等于改知识库”的Telegram客服机器人:运营只维护一份文档,用户提问时实时取最新内容作答,并把每次问答自动记表。本页给出可直接粘贴的系统提示词、记录表结构和格式清理代码,用合成数据先跑通。
准备什么
- n8n实例(自托管或云版均可)
- Telegram机器人token并已和机器人发起过对话
- Google OAuth2凭据,可读取作为知识库的Google Docs文档
- Anthropic API密钥且账号可用所选Claude模型
- Google Sheets OAuth2凭据和一张带表头的记录表
具体怎么做
准备知识库文档和记录表
新建一个Google Docs文档,按“问题/答案”或条目式写好客服知识(可复制下方artifact示例),记下文档URL。再建Google Sheets记录表,首行填 date | question | answer | chatid | username,与流程字段映射一致。
接Telegram触发器
添加Telegram Trigger节点,选message事件,确认输出里有chat.id、from.username和message.text。先发一条测试消息给机器人,验证触发器能收到数据。
实时抓取文档内容
加Google Docs节点(get操作),粘贴知识库文档URL,取纯文本内容。这样每次提问都读最新版本,改文档即刻生效,无需重新发布流程。
拼装提示词发给Claude
添加AI Agent节点,语言模型选Anthropic Claude。系统提示词用下方artifact完整版,把当天日期、文档全文和用户问题插入;记忆(Memory)选Simple Memory并以Telegram chat ID作为会话键,使同一用户的多轮对话连贯、不同用户互不串话。
问答记录写入表格
在Claude返回答案后,用Code或Set节点生成当前时间戳,再用Google Sheets节点append一行:date=时间戳、question=用户原文、answer=AI回复、chatid、username。先记表再回复,避免回复失败导致留档缺失。
清理格式并回复
用Code节点执行下方清理代码:把Markdown链接[a](url)压平成“a(url)”,去掉**加粗**和#标题符号,因为Telegram纯文本消息不渲染Markdown。最后用Telegram节点把清理后的文本发回对应chat.id。
可直接复制的材料
客服系统提示词(本站独立编写,含占位符)
两个{{ }}表达式需按你流程中的实际节点名调整;Claude模型名以你Anthropic账号可用项为准。
你是我们的客户支持助手。今天的日期是{{ $now.format('yyyy-MM-dd') }}。请只依据下面的知识库内容回答用户问题;知识库中没有答案时,明确说“这个问题我暂时无法回答,请联系人工客服”,不要编造。回答用简短纯文本,不要使用Markdown格式,不要输出链接语法。
=== 知识库开始 ===
{{ $('Google Docs').item.json.content }}
=== 知识库结束 ===
用户问题:{{ $json.message.text }}知识库文档示例内容
合成示例,请替换为你自己的产品问答;保持问答式排版便于模型检索。
AI PLAY客服知识库(示例)
Q: 会员如何取消自动续费?
A: 进入“我的-订阅管理”,点击“取消自动续费”,当期结束后停止扣费,已付费用不退。
Q: 发票多久开出?
A: 付款成功后3个工作日内开具电子发票,发送至注册邮箱。
Q: 支持哪些退款情形?
A: 购买后7天内且未使用核心功能可申请全额退款;超过7天不予受理。
Q: 客服工作时间?
A: 工作日9:00-18:00,节假日留言将在下一个工作日回复。Markdown清理Code节点(JavaScript)
本站独立编写的清理示例,输入字段名需对齐AI Agent的实际输出键。
let text = $json.answer ?? $json.output ?? '';
// Markdown链接 [文字](url) 压平为 文字(url)
text = text.replace(/\[([^\]]+)\]\(([^)]+)\)/g, '$1($2)');
// 去掉加粗、斜体、标题符号
text = text.replace(/\*\*([^*]+)\*\*/g, '$1');
text = text.replace(/^#{1,6}\s*/gm, '');
return [{ json: { reply: text.trim() } }];Sheets记录行示例
合成示例行,用于核对字段映射顺序。
date,question,answer,chatid,username
2026-09-05 14:22:08,怎么取消自动续费?,进入“我的-订阅管理”,点击“取消自动续费”,当期结束后停止扣费,已付费用不退。,880001,demo_user_01输入与输出示例
本站虚构演示,非原作者运行结果;答案文字来自示例知识库。
输入
虚构用户demo_user_01(chatid=880001)给机器人发消息:“怎么取消自动续费?”知识库文档为上方artifact示例内容,提问日期为2026-09-05。对应输出
机器人回复纯文本:“进入“我的-订阅管理”,点击“取消自动续费”,当期结束后停止扣费,已付费用不退。”同时Sheets追加一行:2026-09-05 14:22:08 | 怎么取消自动续费? | (同上答案) | 880001 | demo_user_01。若用户追问“那退款呢?”,记忆按chatid命中同一对话,Claude结合上下文引用退款条款作答。做完检查这些
- 给机器人发测试消息后,Telegram Trigger能输出chat.id、username和message.text
- 修改Google Docs文档内容后,下一次提问的回答反映新内容,无需重启流程
- Sheets中每次问答都新增一行,五列字段与date/question/answer/chatid/username一一对应
- 两个不同chatid先后提问,第二个用户的对话不会出现第一个用户的上下文
- AI回复含Markdown链接时,发到Telegram的最终文本已压平为纯文本
容易卡住的地方
- 知识库中没有答案时模型可能编造,提示词里的拒答指令必须保留并抽查
- 文档很大时每条消息都全量抓取,token消耗和延迟会上升,可考虑拆分文档
- Google Docs OAuth2需授权读取权限,文档未共享给该账号会报权限错误
- Simple Memory按chatid隔离,共用同一账号测试多人场景会互相串话
- Anthropic模型名要与你账号可用版本一致,选错模型会在节点报错
- 先记表再回复的顺序不要颠倒,否则回复失败会丢留档
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Answer Telegram support questions using Google Docs and Claude Sonnet
- 原作者
- thealiilhan
- 原始发布日期
- 2026-09-05T08:03:54.798Z
- 来源
- https://n8n.io/workflows/19235