Voice2Propal – 智能WhatsApp提案生成器(语音和文本)
高级
这是一个Lead Nurturing, AI Chatbot领域的自动化工作流,包含 19 个节点。主要使用 Set, Switch, SplitOut, WhatsApp, HttpRequest 等节点。 使用GPT和APITemplate从语音或文本自动生成WhatsApp提案
前置要求
- •可能需要目标 API 的认证凭证
- •Airtable API Key
- •OpenAI API Key
使用的节点 (19)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "h7qrcXor10jWVpln",
"meta": {
"instanceId": "0113e6e8f0b87d10de7bde5508e446a6ee60d5da9eac8c7eea34b85efc06e886"
},
"name": "Voice2Propal – 智能 WhatsApp 提案生成器(语音和文本)",
"tags": [],
"nodes": [
{
"id": "b08f7df9-8705-46ef-bfc3-c62e56ad34ae",
"name": "OpenAI 聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1040,
720
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4-turbo-preview",
"cachedResultName": "gpt-4-turbo-preview"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "0drnlAHYRUGeZtLD",
"name": "OpenAi Emails Key"
}
},
"typeVersion": 1.2
},
{
"id": "226497a2-6aaf-4cdd-945c-e12b24179ed8",
"name": "WhatsApp 触发器",
"type": "n8n-nodes-base.whatsAppTrigger",
"position": [
-500,
500
],
"webhookId": "68748b54-dd4e-4f27-a603-e37f41a3ee63",
"parameters": {
"updates": [
"messages"
]
},
"credentials": {
"whatsAppTriggerApi": {
"id": "jifF3mXrNhJwcLKS",
"name": "WhatsApp OAuth TEST"
}
},
"typeVersion": 1
},
{
"id": "d930a6b4-1cd9-4ed3-9dcb-6ee266e0d792",
"name": "Google Calendar MCP",
"type": "n8n-nodes-base.switch",
"position": [
-60,
500
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "voice",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b969c18d-14dd-4b34-8d08-801d8818b8d2",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
"rightValue": "audio"
}
]
},
"renameOutput": true
},
{
"outputKey": "text",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "1daa0ee5-cb8b-44c4-ae74-954cae03c10d",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('WhatsApp Trigger').item.json.messages[0].type }}",
"rightValue": "text"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "8a5fa9dd-ee0f-47b7-ba4f-6878e053b569",
"name": "HTTP 请求",
"type": "n8n-nodes-base.httpRequest",
"position": [
380,
400
],
"parameters": {
"url": "={{ $json.url }}",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "whatsAppApi"
},
"credentials": {
"whatsAppApi": {
"id": "nLhrT1m7f6kgLOwQ",
"name": "WhatsApp akk"
}
},
"typeVersion": 4.2
},
{
"id": "e94eea3e-5179-43f6-8448-276b4b1c683f",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
600,
400
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"credentials": {
"openAiApi": {
"id": "0drnlAHYRUGeZtLD",
"name": "OpenAi Emails Key"
}
},
"typeVersion": 1.8
},
{
"id": "9a371fec-597b-411d-a745-a188f63239fb",
"name": "编辑字段",
"type": "n8n-nodes-base.set",
"position": [
600,
600
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7453a002-ec0f-4853-a28d-5d06669cb5d0",
"name": "text",
"type": "string",
"value": "={{ $('WhatsApp Trigger').item.json.messages[0].text.body }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "cb6185b3-0786-4807-8ac3-148918cec1fb",
"name": "拆分输出",
"type": "n8n-nodes-base.splitOut",
"position": [
-280,
500
],
"parameters": {
"options": {},
"fieldToSplitOut": "={{ $json.field }}"
},
"typeVersion": 1
},
{
"id": "dc27fe1b-982e-43f0-9d98-f6cf8e25dac7",
"name": "编辑字段1",
"type": "n8n-nodes-base.set",
"position": [
820,
500
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8cbf25ac-3fc9-4892-9c6a-24c974b03362",
"name": "message_type",
"type": "string",
"value": "={{ $json.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "032be1d4-81be-4d8d-bf9b-936c11514f38",
"name": "简单记忆",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1160,
720
],
"parameters": {
"sessionKey": "={{ $('Edit Fields1').item.json.message_type }} ",
"sessionIdType": "customKey"
},
"typeVersion": 1.3
},
{
"id": "803d923a-f626-4843-8a15-4dd94f13a843",
"name": "WhatsApp Business Cloud",
"type": "n8n-nodes-base.whatsApp",
"position": [
160,
420
],
"webhookId": "fecf3d5b-ac8c-4124-b7dc-362b4945e37c",
"parameters": {
"resource": "media",
"operation": "mediaUrlGet",
"mediaGetId": "={{ $json.audio.id }}"
},
"credentials": {
"whatsAppApi": {
"id": "Pqk2W7YtdeRRoUwW",
"name": "WhatsApp account TEST"
}
},
"typeVersion": 1
},
{
"id": "99b5abb9-ef8d-44d1-8051-271c4dbf2fc6",
"name": "计算器",
"type": "@n8n/n8n-nodes-langchain.toolCalculator",
"position": [
1280,
720
],
"parameters": {},
"typeVersion": 1
},
{
"id": "71a9f991-8d0e-4adf-b8dc-524a58d4b0d6",
"name": "获取信息",
"type": "n8n-nodes-base.airtableTool",
"position": [
1400,
720
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appT1CYPk7IFSWAsZ",
"cachedResultUrl": "https://airtable.com/appT1CYPk7IFSWAsZ",
"cachedResultName": "[BlockA] - Invoice"
},
"limit": 5,
"table": {
"__rl": true,
"mode": "list",
"value": "tblsD8z9C4oLQNbN6",
"cachedResultUrl": "https://airtable.com/appT1CYPk7IFSWAsZ/tblsD8z9C4oLQNbN6",
"cachedResultName": "Services"
},
"options": {},
"operation": "search",
"returnAll": false,
"filterByFormula": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Filter_By_Formula', ``, 'string') }}"
},
"credentials": {
"airtableTokenApi": {
"id": "iZxhT2vMmMqhN2pe",
"name": "Airtable Personal Access Token Proposal"
}
},
"typeVersion": 2.1
},
{
"id": "1d108129-b43a-4d6c-b35d-318ea021a2ce",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1140,
500
],
"parameters": {
"text": "={{ $json.message_type }}",
"options": {
"systemMessage": "=# Overview \nYou are an AI assistant responsible for generating custom proposal documents in HTML format using JavaScript by pulling data from an Airtable service database. \n\n## Context \n- You assist in creating personalized business proposals for leads using a prebuilt HTML template managed via a JavaScript class (PropositionGenerator). \n- The template includes placeholders like \"nom\", \"pack_nom\", \"pack_services\", etc., that must be dynamically filled using relevant records from Airtable. \n- The Airtable base \"[BlockA] - Invoice\" contains a table with pack offers, their components, objectives, pricing, and booking links. \n- The proposal is directly addressed to the future client. Always use \"you\" when describing the situation and benefits. \n- For spoken or informal requests, **use approximate matching**: a single keyword (e.g., \"automation\", \"sales\", \"finance\") is sufficient to infer the corresponding pack based on its `Objectifs` or pack name.\n\n## Instructions \n1. Retrieve the correct pack data from the Airtable “Services” table based on the selected pack name. \n2. If no pack is explicitly mentioned, analyze the client's objective (`situation_lead` or related message content) and match it to the most relevant `Objectifs` field in Airtable to select the appropriate service pack. \n3. For oral or loose requests, use keyword-based fuzzy matching to determine the best-fit pack (e.g., \"flow\" → Pack SALES FLOW™, \"content\" → Pack CONTENT OPS™). \n4. Use the following Airtable fields to populate the corresponding variables in the HTML template: \n - `Mes Services` → `pack_nom` \n - `Objectifs` → `pack_objectif` \n - `Agents & Services inclus` → `pack_services` \n - `Prix` → `prix` \n - `Lien de réservation` → `lien_reservation` \n5. Collect client-specific information from user inputs or Airtable if available: \n - `nom`, `nom_entreprise`, `situation_lead`, `date`, and current date (`date_actuel`) \n6. Replace all placeholders in the template using the `genererProposition(donnees)` method. \n7. Respond directly. Do not explain, structure, or rephrase the request. \n\n## Instructions \n- Respond strictly in the JSON format defined below. \n- Replace each placeholder value with the correct extracted or generated data:\n - `\"date_actuel\"`: insert today’s date in the format \"DD Month YYYY\" (e.g., \"03 July 2025\").\n - `\"nom_entreprise\"`: insert the exact name of the company.\n - `\"nom\"`: insert the full name (first and last) of the person.\n - `\"date\"`: insert the date of the last call or contact.\n - `\"situation_lead\"`: Briefly reformulate the current situation or need you’ve expressed, speaking directly to the future client in French. \n - `\"pack_nom\"`: insert the name of the proposed pack or service.\n - `\"pack_objectif\"`: describe the strategic objective tied to this pack.\n - `\"pack_services\"`: list the included services in the pack with `\\n` line breaks.\n - `\"duree_estimee\"`: list the included `duree_estimee` in the pack with `\\n` line breaks.\n - `\"prix\"`: insert the pack price in euros excl. tax (e.g., \"€4,200 HT\").\n - `\"lien_reservation\"`: insert the personalized booking link (e.g., Calendly).\n\n- The output must follow this structure strictly:\n\n{\n \"date_actuel\": \"Current time\",\n \"nom_entreprise\": \"Company Name\",\n \"nom\": \"First Last Name\",\n \"date\": \"Current time\",\n \"situation_lead\": \"Briefly describe the current situation or expressed need.\",\n \"pack_nom\": \"Recommended Pack Name\",\n \"pack_objectif\": \"Describe the strategic goal targeted by this pack.\",\n \"pack_services\": \"- Included service 1\\n- Included service 2\\n- Included service 3\",\n \"duree_estimee\": \"Estimated duration on your own (e.g., 2 to 4 weeks)\",\n \"prix\": \"Price in € excl. tax\",\n \"lien_reservation\": \"https://your-booking-link.com\"\n}\n\n- Return *only* this correctly filled JSON block and nothing else. \n- With nothing before or after `{` \n- If any required field is missing from Airtable, insert `[missing_field_name]` instead. \n- Do not alter the layout or structure of the HTML template. Only replace variables. \n- Once generated, return the HTML string or offer a download option to the user. \n\n## Tools \n- Airtable API \n- JavaScript class `PropositionGenerator` \n- HTML proposal template with dynamic placeholders \n\n## Examples \n- Input: \"Generate a proposal for Pack FULL SYSTEM™ and client Jean Martin\" \n - Output: \"✅ The proposal for Jean Martin with Pack FULL SYSTEM™ is ready. Download it [here].\" \n- Input: \"You need to automate prospecting and improve customer experience\" \n - Output: \"Based on the client’s goal, Pack SALES FLOW™ has been selected. Proposal is ready.\" \n- Input (voice): \"Can you send something for controlling my finances?\" \n - Output: \"Pack MONEY CONTROL™ selected based on keyword 'finances'. Proposal ready.\"\n\n## SOP (Standard Operating Procedure) \n1. Parse user request to identify the target client and desired pack. \n2. If pack is not specified, analyze the client’s goal and match it to the most appropriate `Objectifs` from Airtable. \n3. For informal inputs, use keyword-based fuzzy matching to find a close match in `Mes Services` or `Objectifs`. \n4. Search Airtable for the matching pack row. \n5. Extract corresponding fields and map them to the variables in the HTML template. \n6. Collect client data and generate current date if needed. \n7. Inject values into the `PropositionGenerator` using `genererProposition(donnees)`. \n8. Provide the resulting HTML output or download link to the user. \n\n## Final Notes \n- Always ensure consistent formatting in HTML output. \n- Default to French language formatting and phrasing in the final document. \n- Never include internal or debug messages in the user response. \n- Validate that the pack name matches exactly as shown in Airtable: e.g., \"Pack FULL SYSTEM™\". \n\nCurrent time is {{ $now.format('yyyy-MM-dd') }} \nTime zone: Paris/Europe \n"
},
"promptType": "define"
},
"typeVersion": 1.8
},
{
"id": "cc77dec4-6a6a-4244-9634-ae8fcec4968b",
"name": "APITemplate.io",
"type": "n8n-nodes-base.apiTemplateIo",
"position": [
1600,
500
],
"parameters": {
"resource": "pdf",
"pdfTemplateId": "e8177b236ab07826",
"jsonParameters": true,
"propertiesJson": "={{ $json.output }}"
},
"credentials": {
"apiTemplateIoApi": {
"id": "VC3nFkH6wkyfWkwP",
"name": "APITemplate.io Proposal"
}
},
"typeVersion": 1
},
{
"id": "d58d1509-ddad-42d4-bb4c-ebf846b6baa4",
"name": "WhatsApp Business Cloud2",
"type": "n8n-nodes-base.whatsApp",
"position": [
1820,
500
],
"webhookId": "f861f4af-ce8b-4ca9-8f77-679e0c89ce63",
"parameters": {
"mediaLink": "={{ $json.download_url }}",
"operation": "send",
"messageType": "document",
"phoneNumberId": "={{ $('WhatsApp Trigger').item.json.metadata.phone_number_id }}",
"additionalFields": {
"mediaCaption": "=Re-bonjour,\n\nCe fut un réel plaisir d’échanger avec vous.\nComme convenu, vous trouverez ci-joint une proposition presonnalisée.\nElle inclut également un lien pour planifier un rendez-vous, si vous souhaitez saisir l’occasion.\n\nJe reste à votre disposition si besoin,\nFloyd Mahou",
"mediaFilename": "Feuille de route proposée"
},
"recipientPhoneNumber": "YOUR PHONE NUMBER"
},
"credentials": {
"whatsAppApi": {
"id": "Pqk2W7YtdeRRoUwW",
"name": "WhatsApp account TEST"
}
},
"typeVersion": 1
},
{
"id": "1759c898-2edc-4567-86b8-2cd339633910",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-620,
-60
],
"parameters": {
"color": 6,
"width": 1600,
"height": 1140,
"content": "## 🧩 第 1 部分:消息接收与转录(语音 + 文本)"
},
"typeVersion": 1
},
{
"id": "60a6f25a-94b9-4ded-bd3a-2a73e2db4397",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1000,
-60
],
"parameters": {
"color": 6,
"width": 540,
"height": 1140,
"content": "## 🤖 第 2 部分:AI 驱动的提案草稿生成"
},
"typeVersion": 1
},
{
"id": "70845415-5375-480d-b351-ee56df230fda",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1560,
-60
],
"parameters": {
"color": 4,
"width": 480,
"height": 1140,
"content": "## 📤 第 3 部分:提案生成与交付"
},
"typeVersion": 1
},
{
"id": "c2e0a6d1-178e-4479-b66a-e6f7e0c7afa1",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-620,
1120
],
"parameters": {
"color": 3,
"width": 2680,
"height": 3600,
"content": "## 📘 Voice2Propal – 智能 WhatsApp 提案生成器(语音和文本)"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {},
"versionId": "f1f138e7-3858-4531-a650-2a27caffe40e",
"connections": {
"OpenAI": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "WhatsApp Business Cloud",
"type": "main",
"index": 0
}
],
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "APITemplate.io",
"type": "main",
"index": 0
}
]
]
},
"Get Info": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Calculator": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
},
"Simple Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"APITemplate.io": {
"main": [
[
{
"node": "WhatsApp Business Cloud2",
"type": "main",
"index": 0
}
]
]
},
"WhatsApp Trigger": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"WhatsApp Business Cloud": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"WhatsApp Business Cloud2": {
"main": [
[]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 客户培育, AI 聊天机器人
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
SmartMail代理 - 您的AI邮件助手,由WhatsApp驱动
通过WhatsApp使用Gmail、GPT和语音识别管理邮件
If
Set
Code
+12
24 节点Floyd Mahou
其他
高级多代理AI个人助手(250+任务能力,WhatsApp + GPT)
高级多代理AI个人助手(250+任务能力,WhatsApp + GPT)
Set
Switch
Whats App
+26
213 节点Electrabot
个人效率
多服务任务自动化:基于GPT的代理系统通过WhatsApp
通过WhatsApp的基于GPT代理系统的多服务任务自动化
Set
Switch
Whats App
+25
214 节点Gain FLow AI
个人效率
AI医疗助手 - 多智能体演示系统
集成WhatsApp、GPT-4和Google Sheets的多智能体医疗助手
If
Set
Code
+13
52 节点Fakhar Khan
AI 聊天机器人
美甲沙龙(美国)
使用WhatsApp、GPT和Google日历自动化沙龙预约管理
If
Set
Code
+20
164 节点Denis
客户支持
演示邮件分享
通过AI、Telegram机器人和网站爬取创建个性化邮件外联
If
Set
Xml
+20
58 节点Michael A Putra
客户培育