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

2026-09-09 · 原文发布日

餐饮外烩报价全流程:询价、更新、完工三个webhook串起来

外烩询价、变更和完工各走一个webhook:询价进来校验字段后由OpenAI按预设套餐拟报价邮件,事件存入Postgres并用Gmail发给客户、Telegram通知老板;变更和完工webhook同样先校验并查库,完工时由OpenAI拟最终账单和求评邮件。每天早上8点还有一轮巡检,自动发活动前7天/3天提醒和定金催收,并记录最后催收时间避免重复骚扰,所有往来记入comms_log表。

原文要点

原工作流用三个webhook分别接收外烩询价、事件更新和完工:询价校验字段后由OpenAI按预设套餐拟报价邮件,事件写入Postgres并用Gmail发客户、Telegram通知老板;更新与完工webhook同样先校验并查库,完工时由OpenAI拟最终账单与求评邮件。每天08:00有一轮巡检(也可由sweep-probe webhook手动触发),发送活动前7天/3天提醒和定金催收,并记录最后催收日期避免重复。数据存catering_events与comms_log两表,原文模型名为gpt-5.6-terra。

这次做成什么

在n8n里搭一套外烩(餐饮到会)订单自动化:询价自动报价、变更自动确认、完工自动出账单,外加每日提醒巡检。

准备什么

  • n8n实例及Postgres数据库(可建表与读写)
  • Gmail OAuth2凭据与对外的运营邮箱地址
  • Telegram机器人凭据及老板/运营的通知chat ID
  • OpenAI API凭据(原文模型名为gpt-5.6-terra,可用你账号可用模型替代)
  • 能向webhook POST数据的询价表单、CRM或手工测试工具

具体怎么做

  1. 建两张Postgres表

    在Postgres执行下方建表SQL,建catering_events(事件主表,含状态、人数、定金、last_nudged等字段)和comms_log(往来记录表),然后在n8n添加Postgres凭据并确认模板里的查询与表结构一致。

  2. 配置四个webhook入口

    启用/catering/intake、/catering/update、/catering/done三个业务webhook和可选的/catering/sweep-probe巡检触发器;在n8n激活工作流后复制生产URL,配置到你的询价表单或CRM,先用curl按下方示例POST一条测试询价。

  3. 替换通知与邮件凭据

    给Gmail节点绑定OAuth2并把模板里的ops@yourcatering.com换成你的运营邮箱;给Telegram节点绑定凭据并把硬编码chatId换成你的真实chat ID(可先用机器人私信自己拿到ID)。

  4. 配置AI拟稿与套餐

    给OpenAI节点绑定凭据,把套餐内容(菜品、人均价、服务费规则)写进报价提示词,可参考下方材料;完工节点同样配置账单与求评提示词。先手动跑通全流程再打开每日08:00巡检的Schedule Trigger。

可直接复制的材料

建表SQL(本站按原文描述编写)

本站按原文描述独立编写的示例表结构,字段名需与模板实际查询逐一对齐后再用。

CREATE TABLE catering_events (\n  id SERIAL PRIMARY KEY,\n  client_name TEXT NOT NULL,\n  client_email TEXT NOT NULL,\n  event_date DATE NOT NULL,\n  headcount INT NOT NULL,\n  package TEXT,\n  status TEXT DEFAULT 'quoted',\n  deposit_received BOOLEAN DEFAULT FALSE,\n  final_headcount INT,\n  total_amount NUMERIC(10,2),\n  last_nudged DATE,\n  created_at TIMESTAMP DEFAULT NOW()\n);\n\nCREATE TABLE comms_log (\n  id SERIAL PRIMARY KEY,\n  event_id INT REFERENCES catering_events(id),\n  channel TEXT NOT NULL,\n  message_type TEXT NOT NULL,\n  summary TEXT,\n  sent_at TIMESTAMP DEFAULT NOW()\n);

OpenAI报价邮件提示词(中文改写版)

本站独立撰写的提示词,套餐价格为本站虚构示例,请替换成你的真实价目;字段引用名以工作流为准。

你是外烩公司的报价专员。根据下面的询价信息和套餐价目,起草一封中文报价邮件。\n\n询价信息:{{ $json }}\n\n套餐价目:\n- 经典自助:每人 ¥168,30人起订,含8菜1汤\n- 商务精品:每人 ¥268,20人起订,含10菜2汤与茶歇\n- 定制宴席:每人 ¥398 起,需电话确认菜单\n服务费:总餐费的10%;市区外交通费另计。\n\n要求:\n1. 语气专业友好,称呼客户姓名;\n2. 推荐最匹配人数和场合的一个套餐,给出总价估算(餐费+服务费);\n3. 写明需付30%定金锁定档期;\n4. 不超过300字,不虚构套餐之外的优惠。

输入与输出示例

本站虚构演示,金额按本站示例套餐价计算,非作者运行结果。

输入

POST /catering/intake  body: {"client_name":"林珊","client_email":"linshan@example.com","event_date":"2026-10-18","headcount":45,"occasion":"公司周年庆","address":"南山区科技园"}

对应输出

catering_events新增一行:id=12, client_name=林珊, event_date=2026-10-18, headcount=45, status=quoted, deposit_received=false;Gmail发出报价邮件(商务精品套餐45人估算:餐费¥12,060+服务费¥1,206≈¥13,266,需付30%定金);Telegram向老板推送“新询价:林珊,10月18日,45人”;comms_log写入channel=gmail, message_type=quote一条记录。

做完检查这些

  • 用curl向intake发一条缺client_email的请求,运营邮箱和Telegram收到无效载荷告警
  • 完整询价提交后,catering_events出现新记录且客户收到报价邮件
  • 向update发送deposit received后,该事件deposit_received变为true且客户收到确认
  • 完工webhook提交最终人数后,客户收到账单邮件和求评邮件共两封
  • 手动触发sweep-probe,距活动7天的订单收到提醒且重复触发不重复催收

容易卡住的地方

  • webhook字段名与模板校验不一致会被判为无效载荷,需先核对期望字段
  • Telegram的chatId是硬编码的,忘记替换会导致通知发不出去或发错人
  • 每日巡检依赖event_date与status字段准确,脏数据会造成误发提醒
  • last_nudged防重复逻辑依赖巡检每天正常跑,长时间停用后恢复可能集中补发
  • OpenAI、Gmail、Telegram均涉及外部账号配额与授权失效问题
  • 原文使用的模型名为gpt-5.6-terra,你的账号若无此模型需改选可用模型

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Manage catering event quotes and countdowns with Postgres, Gmail, OpenAI and Telegram
原作者
Khairul Muhtadin
原始发布日期
2026-09-09T02:35:41.386Z
来源
https://n8n.io/workflows/19414