This workflow corresponds to n8n.io template #13080 — we link there as the canonical source.
This workflow follows the Agent → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"nodes": [
{
"id": "09d0e55f-9758-46fe-919f-d29866635f62",
"name": "Sticky Note - Section 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
384
],
"parameters": {
"color": 7,
"width": 672,
"height": 752,
"content": "## 1. Webhook & Validation\n[Read more about the Webhook node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook)\n\nFacebook sends events to this webhook when users interact with your Messenger bot. The workflow validates these events, filters only text messages, and blocks echo messages from the bot itself.\n\n**Key nodes:**\n- **Facebook Webhook**: Receives both GET (verification) and POST (messages)\n- **Confirm Webhook**: Returns verification challenge or acknowledgment\n- **Is message**: Filters only events with text content\n- **From user?**: Blocks bot echo by comparing sender with page ID"
},
"typeVersion": 1
},
{
"id": "1d856115-11a5-49a5-871d-9422a742b672",
"name": "Sticky Note - Section 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
928,
384
],
"parameters": {
"color": 7,
"width": 992,
"height": 752,
"content": "## 2. AI Processing & Memory\n[Read more about Google Gemini Chat Model](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.lmchatgooglegemini/)\n[Read more about Memory Buffer Window](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/)\n\nThe core AI processing happens here. User messages are processed with Google Gemini AI while maintaining conversation context through Simple Memory.\n\n**Key nodes:**\n- **Set Context**: Extracts user_id, page_id, message, and token\n- **Seen & Typing**: Sends activity indicators to Messenger\n- **Conversation Memory**: Maintains last 10 messages per user\n- **Process Merged Message**: AI Agent with customizable system prompt\n- **Gemini Flash**: Google's language model for fast responses\n\n**Customization:** Edit the system prompt in \"Process Merged Message\" to change bot personality, tone, and behavior."
},
"typeVersion": 1
},
{
"id": "393b3906-3fb4-4a53-8dfe-0ba7056311b7",
"name": "Sticky Note - Section 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1936,
384
],
"parameters": {
"color": 7,
"width": 848,
"height": 752,
"content": "## 3. Format & Send Response\n[Read more about the HTTP Request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest)\n\nAI responses are formatted for Facebook Messenger compatibility and sent back to users via the Graph API.\n\n**Key nodes:**\n- **Cut if reply more than 2000 characters**: Strips markdown, truncates long messages\n- **Send Text**: Sends formatted message via Facebook Graph API\n\n**Messenger limits:** Maximum 2000 characters per message. This workflow truncates at 1900 with safety buffer."
},
"typeVersion": 1
},
{
"id": "34ad6797-0ba9-4800-9e15-4523aa86779f",
"name": "Set Context",
"type": "n8n-nodes-base.set",
"position": [
992,
800
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "user-id",
"name": "user_id",
"type": "string",
"value": "={{ $json.body.entry[0].messaging[0].sender.id }}"
},
{
"id": "page-id",
"name": "page_id",
"type": "string",
"value": "={{ $json.body.entry[0].messaging[0].recipient.id }}"
},
{
"id": "message-text",
"name": "message",
"type": "string",
"value": "={{ $json.body.entry[0].messaging[0].message.text }}"
},
{
"id": "timestamp",
"name": "timestamp",
"type": "number",
"value": "={{ $json.body.entry[0].time }}"
},
{
"id": "8393b92e-a5b2-4cec-b718-975963a08143",
"name": "page_access_token",
"type": "string",
"value": "YOUR_PAGE_ACCESS_TOKEN_HERE (EEa...)"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f2a1a53f-1ff2-4d8b-ab8b-dfc89c2d3e77",
"name": "Facebook Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
272,
800
],
"parameters": {
"path": "nguyenthieutoan-facebook-page-1234",
"options": {},
"responseMode": "responseNode",
"multipleMethods": true
},
"typeVersion": 2.1
},
{
"id": "e31b61ba-cddc-4d38-866c-d3e1affaaebb",
"name": "Confirm Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
496,
688
],
"parameters": {
"options": {
"responseCode": 200,
"responseHeaders": {
"entries": [
{
"name": "Content-Type",
"value": "text/plain"
}
]
}
},
"respondWith": "text",
"responseBody": "={{ $json.query[\"hub.challenge\"] }}"
},
"typeVersion": 1.5
},
{
"id": "a4340780-79d9-436a-99c6-ec183db134e0",
"name": "Send Text",
"type": "n8n-nodes-base.httpRequest",
"position": [
2208,
800
],
"parameters": {
"url": "=https://graph.facebook.com/v24.0/{{ $('Set Context').first().json.page_id }}/messages",
"method": "POST",
"options": {},
"jsonBody": "={\n \"recipient\": {\n \"id\": \"{{ $('Set Context').first().json.user_id }}\"\n },\n \"messaging_type\": \"RESPONSE\",\n \"message\": {\n \"text\": {{JSON.stringify($json.page_message)}},\n \"metadata\": \"bot_rep\"\n }\n}",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "access_token",
"value": "={{ $('Set Context').first().json.page_access_token}}"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "da879b0b-f3ee-41e8-ac70-b1eb4dddcbb0",
"name": "Is message",
"type": "n8n-nodes-base.if",
"position": [
496,
816
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "50b4865e-d2b2-4c44-8d7b-5da029d0e9c4",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.entry[0].messaging[0].message.text }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.3
},
{
"id": "a58a6832-7628-4f52-b55c-4a07f01a8ed9",
"name": "Typing",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
1408,
800
],
"parameters": {
"url": "=https://graph.facebook.com/v24.0/{{ $('Set Context').first().json.page_id }}/messages",
"method": "POST",
"options": {
"timeout": 1000
},
"jsonBody": "={\n \"recipient\": {\n \"id\": \"{{ $('Set Context').first().json.user_id }}\"\n },\n \"sender_action\": \"typing_on\"\n}\n",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "access_token",
"value": "={{ $('Set Context').first().json.page_access_token }}"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "c6317f03-64a7-4482-8c2f-6f2abda7244d",
"name": "From user?",
"type": "n8n-nodes-base.if",
"position": [
720,
816
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "50b4865e-d2b2-4c44-8d7b-5da029d0e9c4",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.entry[0].id }}",
"rightValue": "={{ $json.body.entry[0].messaging[0].recipient.id }}"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "cdf77064-a608-421f-963d-29edc2d77ff6",
"name": "Seen",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
1200,
800
],
"parameters": {
"url": "=https://graph.facebook.com/v24.0/{{ $('Set Context').item.json.page_id }}/messages",
"method": "POST",
"options": {
"timeout": 1000
},
"jsonBody": "={\n \"recipient\": {\n \"id\": \"{{ $('Set Context').item.json.user_id }}\"\n },\n \"sender_action\": \"mark_seen\"\n} ",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "access_token",
"value": "={{ $('Set Context').item.json.page_access_token }}"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "d71c3244-8c5d-43ae-8a67-a959b2a6b0e0",
"name": "Cut if reply more than 2000 characters",
"type": "n8n-nodes-base.code",
"position": [
2016,
800
],
"parameters": {
"jsCode": "// Normalize AI response before sending to Messenger\nconst input_data = $input.first().json;\nconst ai_text = input_data.output || input_data.text || '';\nlet clean_text = ai_text.trim();\n\n// Limit message length (Messenger: 2000 characters)\nif (clean_text.length > 1900) {\n clean_text = clean_text.slice(0, 1897) + '...';\n}\n\n// Remove unsupported markdown formatting\nclean_text = clean_text\n .replace(/\\*\\*(.+?)\\*\\*/g, '$1') // remove bold\n .replace(/\\*(.+?)\\*/g, '$1') // remove italic\n .replace(/```[\\s\\S]*?```/g, block => block.replace(/```\\w*\\n?/g, '')) // remove code blocks\n .replace(/`(.+?)`/g, '$1'); // remove inline code\n\n// Return final result\nreturn {\n json: {\n page_message: clean_text\n }\n};\n"
},
"typeVersion": 2
},
{
"id": "056d8116-080d-4348-9971-82aad2555323",
"name": "Sticky Note - Main Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-400,
128
],
"parameters": {
"width": 624,
"height": 1008,
"content": "## Try It Out!\n### This n8n template demonstrates how to build a simple but functional AI-powered customer service chatbot for Facebook Messenger using Google Gemini with conversation memory.\n\nThis is a lightweight version perfect for getting started with AI chatbots. For production use with advanced features like smart batching and human takeover, check the upgrade workflows linked below.\n\n### How it works\n* Facebook Webhook receives incoming messages from Messenger and validates them\n* The workflow filters out non-message events and bot echo messages\n* Set Context node extracts essential data: user_id, page_id, message text\n* Seen & Typing indicators show users the bot is actively responding\n* Simple Memory maintains the last 10 messages per user for context\n* Google Gemini processes the message with full conversation history\n* AI response is formatted for Messenger (strips markdown, truncates if >2000 chars)\n* Final message is sent back to user via Facebook Graph API\n\n### How to use\n* The webhook trigger automatically activates when users message your Facebook Page\n* Customize the AI personality by editing the system prompt in \"Process Merged Message\" node\n* Replace `YOUR_PAGE_ACCESS_TOKEN_HERE` in Set Context with your actual Facebook Page Access Token\n* Deploy on a publicly accessible n8n instance for Facebook to reach your webhook\n\n### Requirements\n* n8n instance (self-hosted or cloud) with public URL\n* Facebook App with Messenger product enabled\n* Facebook Page Access Token\n* Google Gemini API key\n\n### Author & Support\nCreated by **Nguy\u1ec5n Thi\u1ec7u To\u00e0n** (Jay Nguyen)\n- Website: [nguyenthieutoan.com](https://nguyenthieutoan.com)\n- Email: me@nguyenthieutoan.com\n- n8n Workflows: [n8n.io/creators/nguyenthieutoan](https://n8n.io/creators/nguyenthieutoan)\n\n### LICENCE\nThis template is shared free of charge. Copyright belongs to [Nguy\u1ec5n Thi\u1ec7u To\u00e0n](https://nguyenthieutoan.com) (n8n creator at n8n.io). Any copying or modification must credit the author."
},
"typeVersion": 1
},
{
"id": "ab7be654-afd9-46d7-8982-ac6448689813",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
928,
960
],
"parameters": {
"color": 3,
"width": 320,
"height": 208,
"content": "## \u26a0\ufe0f Important!\n\nReplace `YOUR_PAGE_ACCESS_TOKEN_HERE` in the **Set Context node** with your actual Facebook Page Access Token.\n\nGet your token at:\n[developers.facebook.com](https://developers.facebook.com)"
},
"typeVersion": 1
},
{
"id": "19e6d753-7532-4a65-9eec-6c5f53730763",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
2800,
384
],
"parameters": {
"color": 3,
"width": 336,
"height": 752,
"content": "## Limitations & When to Upgrade\n\n\u26a0\ufe0f **This is a simple version** with basic features:\n\n**Current limitations:**\n- No smart batching (responds to each message immediately)\n- No human takeover detection (bot continues even when admin replies)\n- Basic memory (last 10 messages only, not production-ready)\n- Basic formatting (strips all markdown, brutal truncation)\n\n**Consider upgrading when you need:**\n- Production deployment with reliable data persistence\n- Analytics and conversation history tracking\n- Professional formatting with bold, italic, code blocks\n- Smart message batching (waits for user to finish typing)\n- Human handoff capability (bot pauses when admin joins)\n- Long message support (>2000 characters with smart splitting)\n\n**Upgrade workflows:**\n- **[Smart message batching workflow](https://n8n.io/workflows/9192)**: Prevents spam by waiting for user to finish\n- **[Smart human takeover workflow](https://n8n.io/workflows/11920)**: Auto-pauses bot when admin intervenes"
},
"typeVersion": 1
},
{
"id": "36bf4d1f-8826-4efb-803b-4073453ef959",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
2400,
800
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "Image exist?",
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "83305cab-93f2-418d-8a1d-2cf158844c14",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Process Merged Message').item.json.output.photo }}",
"rightValue": "http"
}
]
},
"renameOutput": true
},
{
"outputKey": "Video exist?",
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "156dbd55-5bbb-4974-bc42-01b97031851d",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Process Merged Message').item.json.output.video }}",
"rightValue": "http"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.4
},
{
"id": "83590d96-f06d-4cd5-a395-e1f9158f12f0",
"name": "Send image",
"type": "n8n-nodes-base.httpRequest",
"position": [
2656,
736
],
"parameters": {
"url": "=https://graph.facebook.com/v24.0/{{ $('Set Context').first().json.page_id }}/messages",
"method": "POST",
"options": {},
"jsonBody": "={\n \"recipient\": {\n \"id\": \"{{ $('Set Context').first().json.user_id }}\"\n },\n \"messaging_type\": \"RESPONSE\",\n \"message\": {\n \"attachment\": {\n \"type\": \"image\",\n \"payload\": {\n \"url\": \"{{ $('Process Merged Message').item.json.output.photo }}\",\n \"is_reusable\": true\n }\n }\n }\n}\n",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "access_token",
"value": "={{ $('Set Context').first().json.page_access_token}}"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "ee63e73b-adcb-4186-83fa-b3e97a54ca76",
"name": "Send video",
"type": "n8n-nodes-base.httpRequest",
"position": [
2656,
912
],
"parameters": {
"url": "=https://graph.facebook.com/v24.0/{{ $('Set Context').first().json.page_id }}/messages",
"method": "POST",
"options": {},
"jsonBody": "={\n \"recipient\": {\n \"id\": \"{{ $('Set Context').first().json.user_id }}\"\n },\n \"messaging_type\": \"RESPONSE\",\n \"message\": {\n \"attachment\": {\n \"type\": \"video\",\n \"payload\": {\n \"url\": \"{{ $('Process Merged Message').item.json.output.video }}\",\n \"is_reusable\": true\n }\n }\n }\n}\n",
"sendBody": true,
"sendQuery": true,
"specifyBody": "json",
"queryParameters": {
"parameters": [
{
"name": "access_token",
"value": "={{ $('Set Context').first().json.page_access_token}}"
}
]
}
},
"typeVersion": 4.3
},
{
"id": "f6e0d328-2534-4911-930f-45f760e0c7d6",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
128
],
"parameters": {
"color": 3,
"width": 672,
"height": 240,
"content": "## \u2615BUY ME A COFFEE?\nHi! I am **Nguy\u1ec5n Thi\u1ec7u To\u00e0n (or you can call me Jay / Jay Nguyen)** - a Verified n8n Creator. Thank you for using this template!\nThis workflow is shared with you for free. If it brings value to your work or saves you time, you can buy me a coffee as a small token of appreciation here: **[My Donate Website](https://nguyenthieutoan.com/payment/)** *(PayPal or Momo)*\n\n*You can get more my useful workflow:* **[Click here](https://n8n.io/creators/nguyenthieutoan/)**"
},
"typeVersion": 1
},
{
"id": "3aa761a2-3c51-48d7-9209-699373e1a046",
"name": "Conversation Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
1616,
976
],
"parameters": {
"sessionKey": "={{ $('Set Context').item.json.user_id }} {{ $('Set Context').item.json.page_id }}",
"sessionIdType": "customKey",
"contextWindowLength": 10
},
"typeVersion": 1.3
},
{
"id": "45629f15-873d-4f05-8b51-6d15fb6d1295",
"name": "Gemini Flash",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1504,
976
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5aee82ff-5b54-4271-99c1-a70986736765",
"name": "Process Merged Message",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1616,
800
],
"parameters": {
"text": "={{ $('Set Context').item.json.message }}",
"options": {
"systemMessage": "=## Persona\nYou are Jenix, the intelligent Customer Success Consultant for GenStaff (founded by Mr. Nguy\u1ec5n Thi\u1ec7u To\u00e0n - Jay Nguyen). Your mission is to assist clients in understanding and adopting AI & Automation solutions to achieve Operational Excellence.\n\n## Media Repository\nList:\nHomepage Image Link (trang ch\u1ee7 Nguy\u1ec5n Thi\u1ec7u To\u00e0n): https://nguyenthieutoan.com/wp-content/uploads/2026/02/Screenshot_2-2-2026_2077_nguyenthieutoan.com_.webp\nVideo Demo Smart Message Merge (Gom tin nh\u1eafn th\u00f4ng minh): https://nguyenthieutoan.com/wp-content/uploads/2025/10/IMG_1093.mp4\n\n## Core Directives\n1. **Consultative Selling:** Do not just answer; guide the user. Explain how GenStaff's solutions (Automation workflows, AI Chatbots, Training) solve their specific pain points.\n2. **Scheduling:** If the user shows high interest or the query is complex, suggest booking a consultation with Mr. Jay Nguyen.\n3. **Tone & Style:**\n - **Vietnamese:** Use \"em\" (self) and \"anh/ch\u1ecb\" (client). Tone: Professional, dedicated, helpful.\n - **English:** Professional \"I/You\". Tone: Efficient, clear, business-oriented.\n - **Personality:** Friendly but sharp. Demonstrate \"Operational Excellence\" by being concise and precise.\n\n## Operational Rules\n- **Language Consistency:** STRICTLY reply in the same language as the user's latest input.\n- **First Interaction:**\n - VN: \"Ch\u00e0o anh/ch\u1ecb, em l\u00e0 Jenix, tr\u1ee3 l\u00fd AI c\u1ee7a anh Nguy\u1ec5n Thi\u1ec7u To\u00e0n (Jay Nguyen). Em c\u00f3 th\u1ec3 gi\u00fap anh/ch\u1ecb t\u1ed1i \u01b0u v\u1eadn h\u00e0nh v\u1edbi c\u00e1c gi\u1ea3i ph\u00e1p T\u1ef1 \u0111\u1ed9ng h\u00f3a & AI nh\u01b0 th\u1ebf n\u00e0o \u1ea1?\"\n - EN: \"Hello, I'm Jenix, the AI assistant of Mr. Jay Nguyen at GenStaff. How can I assist you with AI & Automation solutions today?\"\n- **Subsequent Interactions:** Go straight to the point. No re-introductions.\n- **Media Logic:** Only include `photo` or `video` links in the JSON output if the user is discussing a specific service listed in the Repository. Otherwise, return `null`.\n\n## Output Format Specification\nYou must output a **single valid JSON object**. Do not include markdown formatting.\n\n{\n \"text\": \"String. The response content. Plain text only, under 1800 characters. No markdown.\",\n \"photo\": \"String or Null. The URL from the Media Repository\",\n \"video\": \"String or Null. The URL from the Media Repository\"\n}\nCurrent Context\nDate/Time: {{ $now }}"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 3.1
},
{
"id": "8efa21c9-17f1-4306-93d1-475bb9ce1258",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1776,
1008
],
"parameters": {
"autoFix": true,
"jsonSchemaExample": "{\n\t\"text\": \"California\",\n\t\"photo\": \"https://....\",\n \"video\": \"https://...\"\n}"
},
"typeVersion": 1.3
}
],
"connections": {
"Seen": {
"main": [
[
{
"node": "Typing",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Send image",
"type": "main",
"index": 0
}
],
[
{
"node": "Send video",
"type": "main",
"index": 0
}
]
]
},
"Typing": {
"main": [
[
{
"node": "Process Merged Message",
"type": "main",
"index": 0
}
]
]
},
"Send Text": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"From user?": {
"main": [
[
{
"node": "Set Context",
"type": "main",
"index": 0
}
]
]
},
"Is message": {
"main": [
[
{
"node": "From user?",
"type": "main",
"index": 0
}
]
]
},
"Set Context": {
"main": [
[
{
"node": "Seen",
"type": "main",
"index": 0
}
]
]
},
"Gemini Flash": {
"ai_languageModel": [
[
{
"node": "Process Merged Message",
"type": "ai_languageModel",
"index": 0
},
{
"node": "Structured Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Facebook Webhook": {
"main": [
[
{
"node": "Confirm Webhook",
"type": "main",
"index": 0
}
],
[
{
"node": "Confirm Webhook",
"type": "main",
"index": 0
},
{
"node": "Is message",
"type": "main",
"index": 0
}
]
]
},
"Conversation Memory": {
"ai_memory": [
[
{
"node": "Process Merged Message",
"type": "ai_memory",
"index": 0
}
]
]
},
"Process Merged Message": {
"main": [
[
{
"node": "Cut if reply more than 2000 characters",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Process Merged Message",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Cut if reply more than 2000 characters": {
"main": [
[
{
"node": "Send Text",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googlePalmApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
A streamlined Facebook Messenger chatbot powered by AI with conversation memory. This is a simplified version designed for quick deployment, learning, and testing — not suitable for production environments.
Source: https://n8n.io/workflows/13080/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This workflow acts as an AI-powered research assistant that takes a topic from the user, performs multi-step intelligent research, and stores the final report in Notion. It uses advanced search, conte
⏺ 🚀 How it works
Are you drowning in daily operational chaos, desperately trying to juggle sales, projects, content, and client communication? Imagine an AI brain that handles it all, freeing you to lead your business
How it Works
Resume Screening & Behavioral Interviews with Gemini, Elevenlabs, & Notion ATS copy. Uses outputParserStructured, chainLlm, googleDrive, stickyNote. Webhook trigger; 67 nodes.