ChatGPT理财降低账单AI 评分 · 待评分AI 辅助编辑·未发现明显提示词注入风险n8n.io

n8n 自动开票与客户通知:Jotform + Xero + Outlook + Telegram

表单提交 → 数据解析 → Xero 客户管理 → 自动开票 → AI 生成邮件 → Outlook 发送 → 延迟检查 → Telegram 团队提醒

有一点经验步骤流程提示词
给谁
需要自动化发票流程的自由职业者、服务商、顾问、小型电商
你会得到
Jotform 表单提交后自动在 Xero 创建发票,通过 Outlook 发送给客户,若 30 秒内无状态变更则通过 Telegram 提醒团队
你需要
n8n · telegram

硬约束

前置条件:n8n 实例;Jotform 表单及 webhook 配置;Xero OAuth2 凭证(xeroOAuth2Api)并确认 organizationId;OpenAI API 凭证(openAiApi);Outlook 邮件配置;Telegram Bot 及 chatId。关键约束:Jotform 中的产品/服务值必须与 Xero 的 item Code 完全一致;模板中 unitAmount 硬编码为 "10"、accountCode 为 "200",需按实际业务调整;Telegram 节点的 chatId 在模板中为空,必须填写。

他们做了什么

模板作者 AppUnits AI 在 n8n 中搭建了一个 27 节点的工作流:通过 Webhook 接收 Jotform 表单提交,用 Code 节点解析地址和客户信息,查询 Xero 客户库后决定更新或新建联系人,创建 ACCREC 类型发票,调用 gpt-4o-mini 生成 HTML 邮件并通过 Microsoft Outlook 发送给客户,等待 30 秒后重新获取发票状态,若状态未变更则再次调用 gpt-4o-mini 生成 Telegram 通知消息提醒团队处理。

效果如何

作者报告该模板可自动完成从表单提交到开票、邮件通知、团队提醒的全流程(author_report)。模板在 n8n.io 上展示 734 次浏览。无具体转化率或错误率数据。

值得知道

1. 模板中 Telegram 节点的 chatId 为空("="),必须手动填写,否则通知无法发送。2. Create the invoice 节点的 unitAmount 硬编码为 "10"、accountCode 为 "200",需按实际定价和会计科目修改。3. Jotform 中的产品/服务值必须与 Xero 的 item Code 完全一致,否则发票行项目无法匹配。4. 地址解析正则假设 Jotform 使用特定 HTML 格式(含 <br> 标签),若表单格式不同需调整 Code 节点。5. 等待 30 秒后检查状态的设计仅适用于演示/测试场景,生产环境建议改为更长周期或基于 webhook 的状态回调。6. 本站未实测该工作流,reproduction=not_tested。

n8n 工作流模板

结构已检查 · 未实际运行

下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。

配置与测试清单

需要绑定的凭证

  • Create the invoice 节点:绑定xeroOAuth2Api 凭证。
  • OpenAI Chat Model 节点:绑定OpenAI API 凭证。
  • Check if the customer exists 节点:绑定xeroOAuth2Api 凭证。
  • Create new contact 节点:绑定xeroOAuth2Api 凭证。
  • Update contact 节点:绑定xeroOAuth2Api 凭证。
  • OpenAI Chat Model1 节点:绑定OpenAI API 凭证。
  • Get the invoice 节点:绑定xeroOAuth2Api 凭证。

需要替换的配置

  • 源模板来自 n8n 公开库 #9798(约 27 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
  • Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。

测试输入与预期结果

  • 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
  • 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。

模板处理说明

  • 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
  • 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。

模板获取日期: 2026-10-24

步骤

  1. 接收表单提交

    在 n8n 中配置 Webhook 节点(POST 方法),获取 Jotform 表单提交数据。在 Jotform 后台设置 Webhook URL 指向该节点路径。预期看到:提交后 n8n 执行记录中 body 包含 name、email、phone、itemName、billingAddress 等字段。

  2. 解析并格式化数据

    添加 Code 节点,使用 JavaScript 从 billingAddress 字符串中提取结构化地址(line1, line2, city, stateProvince, postalZipCode, country),同时整理 customer(name, email, phone)和 item(name)对象。代码直接复制自模板 workflow.json。预期输出:包含 address、customer、item 的 JSON 对象。

    运行提示词 · 来源原文。n8n Code 节点(Format data)的 JS Code 字段

    function extractAddressData(text) {
      const regex = /Street Address:\s*([^<]+)<br>Street Address Line 2:\s*([^<]+)<br>City:\s*([^<]+)<br>State \/ Province:\s*([^<]+)<br>Postal \/ Zip Code:\s*([^<]+)<br>Country:\s*([^<]+)<br>/;
      const matches = text.match(regex);
      
      if (matches) {
        return {
          line1: matches[1].trim(),
          line2: matches[2].trim(),
          city: matches[3].trim(),
          stateProvince: matches[4].trim(),
          postalZipCode: matches[5].trim(),
          country: matches[6].trim()
        };
      }
      
      return {
        line1: null,
        line2: null,
        city: null,
        stateProvince: null,
        postalZipCode: null,
        country: null
      }
    }
    
    return {
      address: extractAddressData($input.first().json.body.billingAddress),
      customer: {
        name: $input.first().json.body.name,
        email: $input.first().json.body.email,
        phone: $input.first().json.body.phone
      },
      item: {
        name: $input.first().json.body.itemName
      }
    }
  3. 检查客户是否存在于 Xero

    添加 Xero 节点,resource 选 Contact,operation 选 Get All,设置 where 条件为 EmailAddress 等于上一步解析出的 customer.email。limit 设为 1。配置 organizationId。预期输出:若客户存在返回包含 ContactID 的数组;若不存在返回空数组。

  4. 分支:更新或创建客户

    添加 If 节点,判断条件:$json 对象存在且 $json.ContactID 存在。True 分支连接 Update contact 节点(更新客户名称和电话);False 分支连接 Create new contact 节点(创建新客户,含地址、电话、邮箱)。两分支最终都汇合到 Create the invoice 节点。

  5. 创建发票

    添加 Xero 节点,type 选 ACCREC(应收账款),contactId 引用上一步的 ContactID,lineItems 中 itemCode 引用 Format data 的 item.name,unitAmount 和 accountCode 按实际业务修改。配置 organizationId。预期输出:Xero 返回包含 InvoiceID 的新发票对象。

  6. AI 生成邮件内容

    添加 AI Agent 节点,promptType 选 Define,将 Xero 创建发票的完整 JSON 响应作为输入(text = {{ $json }})。连接 OpenAI Chat Model 子节点,模型选 gpt-4o-mini。在 AI Agent 的 Options 中填入 systemMessage。预期输出:AI 生成专业 HTML 邮件正文。

    运行提示词 · 来源原文。AI Agent 节点(AI Agent)的 Options → System Message 字段

    =You are an AI assistant that generates a professional invoice email that you get from an Xero response (newly created invoice), so you will recive an Xero invoice response and thus your job is to create a professional html email content because this html email content will be sent to the customer.
  7. 发送邮件给客户

    添加 Microsoft Outlook 节点,subject 设为 "New Invoice",bodyContent 引用 AI Agent 的输出,toRecipients 引用 Create the invoice 节点的 Contact.EmailAddress。配置 Outlook 凭证。预期结果:客户收到含发票详情的 HTML 邮件。

  8. 等待并获取发票状态

    添加 Wait 节点,amount 设为 30(秒)。之后连接 Get the invoice 节点,invoiceId 引用 Create the invoice 的 InvoiceID,operation 选 Get。预期输出:30 秒后获取 Xero 中该发票的最新状态。

  9. 检查发票状态是否变更

    添加 Switch 节点,规则 outputKey 设为 "no change",条件比较 Create the invoice 节点的 Status 与 Get the invoice 节点的 Status 是否相等。若相等(无变更),则流向 AI Agent1。

  10. AI 生成 Telegram 提醒

    添加 AI Agent1 节点,promptType 选 Define,将 Get the invoice 的 JSON 响应作为输入。连接 OpenAI Chat Model1 子节点(gpt-4o-mini)。在 Options 中填入 systemMessage。预期输出:AI 生成提醒团队尽快处理的 Telegram 消息文本。

    运行提示词 · 来源原文。AI Agent 节点(AI Agent1)的 Options → System Message 字段

    =You are an AI assistant that generates a telegram notification message for an invoice that has been created recently and no action/change has been done on it yet, the input that you will receive is an Xero invoice details response, so you will recive an Xero invoice response and thus your job is to create a telegram message that will notify the team about the invoice that has no actions on it yet so the team can act fast and accordingly.
  11. Telegram 通知团队

    添加 Telegram 节点,chatId 填写目标群组或用户 ID(模板中为空,必须配置),text 引用 AI Agent1 的输出。配置 Telegram 凭证。预期结果:团队收到发票未处理提醒。

可复制提示词

搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限

这一段是提示词,页面不会在这里插入广告。

你是一个 n8n 工作流搭建助手。用户想复现「Jotform + Xero + Outlook + Telegram」自动开票流程。请先确认用户已具备:n8n 实例、Jotform 表单及 webhook 配置、Xero OAuth2 凭证(含 organizationId)、OpenAI API 密钥、Outlook 邮件账户、Telegram Bot 及目标 chatId。然后按步骤引导用户导入模板或手动搭建节点,重点检查:Jotform 产品值与 Xero item Code 是否一致;Code 节点中的地址解析正则是否匹配实际表单格式;Create the invoice 中的 unitAmount 和 accountCode 是否按业务修改;Telegram 节点的 chatId 是否已填写。不提供凭证具体内容,仅在安全环境配置。

搭建前请确认所有凭证和 organizationId 已配置;Jotform 表单字段名若与模板不同,需同步修改 Code 节点中的 $input.first().json.body 引用。

来源

Automated invoice creation & customer communication with Jotform, Xero, Outlook & Telegram · appunitsai · n8n.io · 2025-10-16

留言与反馈

试过这个方法吗?分享效果、遇到的问题或改进建议。留言审核后公开,请勿填写敏感信息。

正在加载…

    相关用例