2026-09-01 · 原文发布日
Telegram酒店搜索机器人
n8n模板:Telegram消息触发,带Postgres对话记忆的OpenAI智能体解析自然语言需求、调用WinWin MCP查实时酒店报价并校验图片链接,返回最多三张含价格、地图和预订按钮的卡片,图册存n8n数据表,点按钮可回看酒店或房间照片。作者定位为演示完整智能体模式而非生产级方案。
原文要点
原模板是一个Telegram酒店演示机器人:由Telegram消息与按钮回调查询触发,按类型分流(/start、自由文本搜索、图册请求等);用带Postgres对话记忆的OpenAI智能体解析自然语言需求,调用WinWin MCP搜索实时酒店报价,并用图片校验工具验证照片URL;结构化输出解析为最多三条报价,无结果则发汇总消息;每条报价格式化为含照片、价格、日期、亮点、Google地图链接和图册/预订按钮的卡片;展示过的酒店与房间照片URL存入n8n数据表,用户点“查看图册”时从表内读取、校验可达后分组发回。作者明确这是演示完整智能体模式,重清晰度而非生产加固。
这次做成什么
照着模板搭出一个可对话的Telegram酒店搜索演示机器人:用户发自然语言需求,机器人调WinWin MCP查报价、回最多三张卡片,并支持点按钮回看酒店或房间照片。本指南为本站依据原文流程整理的搭建与自测方案,定位为学习演示,不是生产方案。
准备什么
- Telegram账号并已通过BotFather创建机器人、拿到bot token
- OpenAI API密钥(或任意支持工具调用的LLM密钥)
- WinWin MCP的访问权限与Bearer token,端点URL按模板配置
- 一个Postgres数据库,且n8n实例网络可达(用于对话记忆)
- n8n版本支持数据表(Data Table)功能
具体怎么做
建立四类凭据并配置触发器
在n8n中依次创建:Telegram Bot凭据(填BotFather token)、OpenAI API凭据、WinWin MCP Bearer token凭据、Postgres凭据。Telegram Trigger节点与所有发消息节点都选同一个Bot凭据。先用测试消息触发一次,确认n8n能收到Telegram更新。
确认消息分流逻辑
模板按消息类型分流:/start发欢迎语;自由文本视为搜索请求,先回一条“正在搜索”提示;按钮回调(callback query)进入图册或房间照片分支;其他类型走兜底分支。搭建后逐类发消息测试,确认四类路径都走通。
配置智能体、记忆与工具
OpenAI智能体节点绑定OpenAI凭据,记忆节点绑定Postgres凭据,系统提示词可参考下方材料。确认所选聊天模型支持工具调用,智能体挂接WinWin MCP搜索工具和照片URL校验工具。发一条“预算800元、两晚、上海静安附近”的消息,看智能体是否生成结构化报价输出。
创建数据表并接好读写节点
按模板要求创建一个n8n数据表(原文示例名OfferPhotos),列参考下方配置;在“插入报价照片”和“读取图册照片”两个节点中都选中这张表的ID。跑一次搜索后打开数据表,确认酒店级与房间级照片URL都被写入。
端到端测试卡片与图册回看
发一次有效搜索,确认返回最多三张卡片,每张含照片、价格、日期、亮点、Google地图链接和“查看图册/预订”内联按钮;点击“查看图册”,选择酒店照片或房间照片,机器人应读取数据表、校验URL可达后按合适大小分媒体组发回。无结果时应收到一条汇总说明而非报错。
可直接复制的材料
酒店搜索智能体系统提示词(本站独立编写)
本站独立编写的演示提示词,键名需与模板解析节点实际读取的字段一致;模型与MCP端点按模板配置。
你是一个酒店搜索助手。用户用自然语言描述出行需求(城市、日期、预算、人数、偏好)。
规则:
1. 先调用WinWin MCP搜索工具获取实时报价,必要时再按条件过滤。
2. 所有要展示给用户或存入图册的照片URL,必须先调用照片校验工具确认可达,不可达的丢弃。
3. 最多返回3条报价,按与用户需求的匹配度排序。
4. 只输出如下JSON数组,不要输出其他文字:
[{"hotelName":"","pricePerNight":0,"currency":"","checkIn":"","checkOut":"","highlights":[""],"mapsUrl":"","bookingUrl":"","hotelPhotos":[""],"roomPhotos":[""]}]
5. 若搜索无结果,输出 {"noResults":true,"summary":"一句话说明"}。OfferPhotos数据表列结构示例
本站依据原文“存储酒店与房间两级照片URL”描述推演的列设计,原模板的精确列名以工作流内节点设置为准,请导入后核对。
{
"tableName": "OfferPhotos",
"columns": [
{"name": "offer_id", "type": "string", "说明": "一次搜索内某条报价的标识"},
{"name": "hotel_name", "type": "string", "说明": "酒店名,用于图册标题"},
{"name": "photo_scope", "type": "string", "说明": "hotel 或 room,区分酒店级/房间级"},
{"name": "photo_url", "type": "string", "说明": "已通过校验的照片URL"},
{"name": "created_at", "type": "datetime", "说明": "写入时间,便于清理旧数据"}
]
}端到端测试数据
本站虚构测试输入,chat_id需换成你自己的Telegram会话ID;WinWin MCP返回的真实报价内容无法预知。
{"chat_id": 123456789, "message": "帮我找上海静安寺附近、10月12日入住10月14日退房、两成人、每晚预算800元以内的酒店", "expect": "最多3张报价卡片,含价格/日期/亮点/地图链接/图册与预订按钮;点击“查看图册”可选酒店或房间照片并分组返回"}输入与输出示例
本站虚构演示,酒店名、价格、照片数量均为示例,未实际调用WinWin MCP。
输入
用户发送:帮我找上海静安寺附近、10月12日入住、10月14日退房、两名成人、每晚800元以内的酒店。对应输出
机器人先回「正在为您搜索…」,随后发出卡片(示意):「静安云庭酒店|¥688/晚|10/12–10/14|亮点:步行至静安寺8分钟、含双早、可免费取消|[地图] [查看图册] [立即预订]」。数据表写入该酒店3条hotel照片与4条room照片;用户点「查看图册」→选「房间照片」→收到一个含4张图的媒体组。做完检查这些
- /start、自由文本、按钮回调、其他输入四类消息分别进入对应分支,无消息丢失
- 智能体能调用WinWin MCP并输出可解析的结构化报价,卡片数量不超过三张
- 每次搜索后数据表中新增该行报价的酒店级与房间级照片URL记录
- 点“查看图册”后只发回校验可达的URL,且按Telegram媒体组大小分批发送
- 搜索无结果时用户收到汇总说明消息,而不是流程报错中断
容易卡住的地方
- 作者定位为演示:重清晰度而非生产加固,未做并发、限流、异常重试等,勿直接面向真实客户上线
- 模型必须支持工具调用,否则智能体无法驱动WinWin MCP搜索与过滤
- Postgres不可达时对话记忆节点报错,整个搜索流程会失败
- 数据表ID要在写入与读取两个节点中一致选错会导致图册永远为空
- 照片URL可能随后失效,回看图册前必须保留校验步骤,否则会发出打不开的图
- WinWin MCP为第三方服务,其可用性、配额与费用原文未说明,需自行与提供方确认
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Run a Telegram hotel search bot with OpenAI and WinWin MCP
- 原作者
- Vadym
- 原始发布日期
- 2026-09-01T11:29:36.216Z
- 来源
- https://n8n.io/workflows/19000