AI PLAY玩法更新持续收录
← 回到更新流

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凭据和一张带表头的记录表

具体怎么做

  1. 准备知识库文档和记录表

    新建一个Google Docs文档,按“问题/答案”或条目式写好客服知识(可复制下方artifact示例),记下文档URL。再建Google Sheets记录表,首行填 date | question | answer | chatid | username,与流程字段映射一致。

  2. 接Telegram触发器

    添加Telegram Trigger节点,选message事件,确认输出里有chat.id、from.username和message.text。先发一条测试消息给机器人,验证触发器能收到数据。

  3. 实时抓取文档内容

    加Google Docs节点(get操作),粘贴知识库文档URL,取纯文本内容。这样每次提问都读最新版本,改文档即刻生效,无需重新发布流程。

  4. 拼装提示词发给Claude

    添加AI Agent节点,语言模型选Anthropic Claude。系统提示词用下方artifact完整版,把当天日期、文档全文和用户问题插入;记忆(Memory)选Simple Memory并以Telegram chat ID作为会话键,使同一用户的多轮对话连贯、不同用户互不串话。

  5. 问答记录写入表格

    在Claude返回答案后,用Code或Set节点生成当前时间戳,再用Google Sheets节点append一行:date=时间戳、question=用户原文、answer=AI回复、chatid、username。先记表再回复,避免回复失败导致留档缺失。

  6. 清理格式并回复

    用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