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

2026-10-13 · 原文发布日

AI起草客户回复,客户批准后才真正发出

面向代客户写回复的机构:外部系统POST任务到webhook,按客户ID在Data Table查到审批人邮箱和专属指示后由OpenAI起草,草稿做SHA-256指纹;若需批准则邮件发审批链接,审批人无需n8n账号即可在表单批准、修改、要求重写或拒绝,重写有轮数上限。批准时校验待发文本指纹与批准版本一致才发送,拒绝或过期则通知流程所有者未发送,另有待审列表接口和每日待审摘要邮件。

原文要点

来源是n8n社区免费模板(作者Alexander Englund,编辑责任方PowerQuant ApS),面向代客户起草回复的机构:外部系统POST到webhook(Header Auth)传入客户ID、任务、收件人和主题;在n8n Data Table的approval_clients查审批人邮箱、专属指示、过期时间和是否需要批准,并写入approval_requests日志;用OpenAI起草后对草稿做SHA-256指纹;需批准时发含表单链接的邮件,审批人无需n8n账号可批准、修改、要求重写(有轮数上限)或拒绝;发送前校验待发文本指纹与批准版本一致,拒绝或过期则通知所有者未发送;另有GET接口列出待审请求和每日待审摘要邮件。

这次做成什么

在n8n搭一条“AI起草、客户邮件批准后才发送”的审核链路,含指纹防篡改校验,适合代运营、客服外包场景,并用一条测试数据走通全流程。

准备什么

  • 带Data tables功能的n8n版本并已发布工作流的权限
  • OpenAI API密钥用于起草回复
  • SMTP或邮件凭据用于审批邮件、所有者通知和每日摘要
  • 能向webhook发POST的测试工具(如curl或Apifox)

具体怎么做

  1. 建两张Data Table

    在n8n的Data tables里建approval_clients,列含client_id、client_name、approver_email、instructions、requires_approval、expiry_hours、active;建approval_requests,列含request_id、client_id、status、draft_text、approved_text、draft_fingerprint、approved_fingerprint、rounds、created_at。插入一条active=true、approver_email填自己测试邮箱的客户行。

  2. 配置webhook接收与校验

    建Webhook节点,路径设为/client-approval/draft,方法POST,认证选Header Auth并设置X-Api-Key值。后接Code节点校验body必须含client_id、message、recipient_email、subject,缺字段直接返回400。另建一个GET方法的webhook路径/client-approval/pending用于查询待审列表。

  3. 查客户并起草

    用Data Table节点按client_id查approval_clients,取不到或inactive则返回错误。把客户专属instructions与message拼进提示词(见材料),接OpenAI节点生成草稿,再用Crypto节点对草稿文本算SHA-256,把草稿、指纹、状态waiting写入approval_requests。

  4. 审批分支与表单

    IF节点判断requires_approval:为false直接进入发送前校验;为true则用邮件节点给approver_email发含n8n表单链接的邮件,表单提供approve、edit、request_changes、reject四个选项。接Wait节点挂起,表单提交后恢复:request_changes时把修改意见带回重新起草且rounds+1,超过上限按过期处理;reject或超期时邮件通知所有者未发送。

  5. 指纹校验后发送

    批准分支里对最终待发文本(批准的原文或审批人修改版)再算SHA-256,与approval_requests里记录的approved_fingerprint比对,一致才用邮件节点发给recipient_email并更新状态为sent;不一致则中止并通知所有者。最后用Schedule Trigger每天跑一遍查询waiting状态的记录,汇总发摘要邮件给所有者。

可直接复制的材料

起草回复提示词(含客户专属指示拼接)

本站独立编写,{{}}变量由上游Data Table与webhook字段替换;与原模板提示词不同。

你是代表{{companyName}}的客服写手,正在为客户「{{clientName}}」起草一封邮件回复。
客户方的写作要求:{{clientInstructions}}
收件人:{{recipientEmail}}
主题:{{subject}}
需要回复的原始消息/任务:
{{incomingMessage}}
要求:
1. 只输出邮件正文,不要输出主题行、称呼解释或任何元信息;
2. 语气专业简洁,不超过250字;
3. 不承诺原文没有提到的补偿、退款或时限;
4. 严格遵守客户方的写作要求。

提交起草请求的测试数据(POST body)

本站虚构测试数据,请求头需带X-Api-Key: 你在Header Auth里设置的值;邮箱全部使用示例地址。

{
  "client_id": "acme-001",
  "message": "客户来信询问上月发票金额与合同不符,要求解释差额原因并给出处理时间。",
  "recipient_email": "customer-demo@example.com",
  "subject": "关于3月发票差额的说明"
}

输入与输出示例

本站虚构演示,非原作者运行结果,未实际调用OpenAI或发送邮件。

输入

以上测试数据POST到 /webhook/client-approval/draft,approval_clients中acme-001行requires_approval=true、approver_email为测试邮箱、instructions为“语气正式,先道歉再说明”。

对应输出

webhook返回{"request_id":"req-7f3a2c","status":"waiting_approval"};approval_requests新增一行,draft_text为草稿“您好,关于3月发票差额我们深表歉意……”,draft_fingerprint为64位十六进制如"9b2c…e41d";测试邮箱收到含表单链接的审批邮件。

做完检查这些

  • 缺client_id或X-Api-Key错误的请求被拒并返回4xx,不进入起草
  • 审批人点表单链接无需登录n8n即可批准或拒绝,状态正确写入approval_requests
  • request_changes后重新起草且rounds递增,达到上限后走过期通知
  • 发送前指纹不一致时流程中止,收件人不会收到邮件
  • GET /client-approval/pending只返回waiting状态的请求列表

容易卡住的地方

  • 工作流必须发布,否则表单恢复链接无法让挂起的Wait节点继续
  • Data tables是较新n8n版本的功能,旧版本需改用外部数据库节点替代
  • 修改Header Auth的X-Api-Key后要同步更新调用方配置,否则全部请求被拒
  • 审批人edit修改文本后必须以修改版重新计算指纹,否则校验必失败
  • 邮件步骤依赖SMTP凭据,配置错误会导致审批链接根本发不出去
  • OpenAI调用与邮件发送可能产生费用,模型与上限需在Settings里按环境配置

原文与作者资料 ↗

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

原文标题
Draft client-approved email replies with OpenAI and email
原作者
Alexander Englund
原始发布日期
2026-10-13T13:52:31.343Z
来源
https://n8n.io/workflows/20885