Để tạo chatbot Facebook với n8n, bạn nhận tin nhắn của Fanpage qua node Webhook, cho node AI Agent soạn câu trả lời, rồi gửi lại bằng HTTP Request tới Graph API (endpoint /{page-id}/messages) với Page Access Token có quyền pages_messaging. Chatbot chỉ được trả lời tự do trong 24 giờ kể từ tin nhắn gần nhất của khách. Các bước dưới đây dùng n8n bản 2.x và Graph API v26.0.
Vì sao nên dùng n8n để tạo chatbot Facebook?
n8n hợp với chatbot Facebook khi bạn muốn tự quyết luồng xử lý, chọn model AI và giữ dữ liệu hội thoại ở máy chủ mình chọn, thay vì phụ thuộc nền tảng chatbot đóng gói sẵn.
- Tự host được: n8n là phần mềm fair-code theo Sustainable Use License; bản tự host không tính phí theo số lần chạy, bạn tự kiểm soát nơi lưu dữ liệu.
- Kéo thả, ít code: chỉ cần một node Code nhỏ để dựng nội dung gửi đi.
- Nối được hệ thống khác: hàng trăm tích hợp có sẵn để lưu khách vào Google Sheets, CRM, gửi email cho nhân viên.
- Đổi model dễ: AI Agent dùng được OpenAI, Gemini, Claude hoặc model tự host mà không sửa phần còn lại của workflow.
Cần chuẩn bị gì trước khi tạo chatbot Facebook?
Bạn cần một Fanpage có quyền quản trị, một app Meta có sản phẩm Messenger, Page Access Token đúng quyền và n8n có địa chỉ HTTPS công khai. Meta chỉ gửi webhook tới URL HTTPS có chứng chỉ hợp lệ; chứng chỉ tự ký không được chấp nhận.
- Fanpage: tài khoản của bạn phải có vai trò làm được việc kiểm duyệt (MODERATE) trên Trang.
- Page Access Token: lấy theo bài cách lấy Page Access Token Facebook, chọn quyền
pages_messaging(gửi và nhận tin) vàpages_manage_metadata(đăng ký webhook cho Trang). Quyềnpages_read_engagementkhông dùng để gửi tin. - n8n chạy 24/7 với tên miền và SSL: n8n Cloud hoặc tự host; cách cài ở cài đặt n8n trên VPS.
- Google Sheets chứa câu hỏi thường gặp, giá sản phẩm: làm Tool cho AI Agent; xác thực theo bài credential Google cho n8n.
Chatbot trả lời được ai khi app còn ở chế độ Development?
Ở chế độ Development và Standard Access, webhook chỉ gửi tin của người có vai trò trên app (Quản trị viên, Nhà phát triển, Người thử nghiệm). Muốn chatbot trả lời khách thật, app phải chuyển sang Live và được Advanced Access cho pages_messaging qua App Review (Meta, Webhooks for Messenger Platform, đọc 22/10/2026).

Hướng dẫn cách tạo chatbot Facebook với n8n
Workflow hoàn chỉnh gồm Webhook nhận tin, nhánh xác minh cho Meta, If lọc tin văn bản, Edit Fields gom dữ liệu, AI Agent soạn câu trả lời, Code dựng nội dung và HTTP Request gửi qua Send API. Phần cấu hình webhook và xác minh chi tiết có ở bài kết nối Messenger API trên n8n bằng Webhook.

Bước 1: Tạo node Webhook và nhánh xác minh
Node Webhook nhận cả yêu cầu xác minh (GET) lẫn tin nhắn (POST) từ Meta. Cách dùng node có ở bài node Webhook trong n8n.
- Tạo workflow mới, thêm node Webhook. HTTP Methods chọn cả GET và POST (node tách thành hai đầu ra), Respond chọn Using ‘Respond to Webhook’ Node.
- Nhánh GET: thêm node If kiểm
{{ $json.query["hub.mode"] }}bằngsubscribevà{{ $json.query["hub.verify_token"] }}bằng chuỗi bí mật bạn tự đặt. Nhánh true nối Respond to Webhook trả văn bản{{ $json.query["hub.challenge"] }}; nhánh false trả mã 403. - Nhánh POST: nối ngay một Respond to Webhook trả mã 200 (ví dụ nội dung
EVENT_RECEIVED) rồi mới xử lý tiếp. Meta yêu cầu phản hồi 200 trong vòng 5 giây, nếu không sẽ gửi lại.


Bước 2: Thêm node If để lọc tin nhắn văn bản
Node If tách tin nhắn có chữ khỏi các sự kiện khác như thả biểu tượng cảm xúc hay gửi ảnh, để AI Agent chỉ nhận văn bản.
- Thêm node If sau nhánh POST. Ô giá trị nhập
{{ $json.body.entry[0].messaging[0].message.text }}. - Điều kiện chọn String → exists. Tin có chữ đi nhánh true; sticker, lượt thích, ảnh đi nhánh false.
- Bấm Execute workflow, nhắn thử vào Fanpage bằng tài khoản có vai trò trên app để có dữ liệu mẫu.
![Bật mí cách tạo chatbot Facebook với n8n đơn giản 5 Cấu hình node If trong n8n: điều kiện $json.body.entry[0].messaging[0].message.text với toán tử String exists](https://tino.vn/blog/wp-content/uploads/2026/10/cach-tao-chatbot-facebook-voi-n8n-sua-03.webp)
Bước 3: Thêm node Edit Fields để gom dữ liệu
Node Edit Fields (Set) tách ba trường cần dùng ở các node sau: PSID của khách, Page ID và nội dung tin. PSID (Page-scoped ID) là ID riêng Meta gán cho một người khi họ nhắn với Trang của bạn.
Tên trường Giá trị (expression) Ý nghĩa ID khách hàng {{ $('Webhook').item.json.body.entry[0].messaging[0].sender.id }}PSID của khách, dùng làm người nhận và khoá Memory ID Page {{ $('Webhook').item.json.body.entry[0].messaging[0].recipient.id }}Page ID, dùng trong URL gửi tin Nội dung tin nhắn {{ $('Webhook').item.json.body.entry[0].messaging[0].message.text }}Câu hỏi đưa vào AI Agent ![Bật mí cách tạo chatbot Facebook với n8n đơn giản 6 Node Edit Fields trong n8n với ba trường ID khách hàng, ID Page, Nội dung tin nhắn lấy từ body.entry[0].messaging[0]; giá trị PSID và Page ID đã được che](https://tino.vn/blog/wp-content/uploads/2026/10/cach-tao-chatbot-facebook-voi-n8n-sua-04.webp)
Bước 4: Tạo node AI Agent
Node AI Agent đọc câu hỏi, tra Tool Google Sheets và soạn câu trả lời. Cách cấu hình từng thành phần có ở bài node AI Agent trong n8n.
- Source for Prompt: Define below, Prompt nhập
{{ $json['Nội dung tin nhắn'] }}. - System Message: mô tả vai trò, phạm vi tư vấn, yêu cầu tra Tool trước khi báo giá, và câu giới thiệu đây là trợ lý tự động.
- Chat Model: Google Gemini Chat Model hoặc OpenAI Chat Model; chọn model hiện hành trong danh sách của node. Model
gemini-2.0-flashtrong ảnh cũ đã bị Google tắt từ 01/06/2026. - Memory: Simple Memory, Session ID chọn Define below, Key
{{ $json['ID khách hàng'] }}để mỗi khách có lịch sử riêng; Context Window Length 5–10. - Tool: Google Sheets, operation Get Row(s), trỏ tới sheet câu hỏi thường gặp và sheet sản phẩm. AI Agent phải có ít nhất một Tool.


Ảnh chụp ở bản n8n cũ; model gemini-2.0-flash trong ảnh đã ngừng, hãy chọn model hiện hành trong danh sách.


Meta khuyến nghị cho khách biết họ đang nói chuyện với bot, và một số nơi bắt buộc điều này theo luật. Thêm vào System Message một câu như: “Mở đầu cuộc trò chuyện bằng: Mình là trợ lý tự động của [tên Trang]”.
Bước 5: Tạo node Code dựng nội dung gửi đi
n8n chưa có node Messenger chính thức, nên câu trả lời được gói thành JSON theo định dạng Send API bằng node Code rồi gửi bằng HTTP Request.
const body = {
recipient: { id: $('Edit Fields').first().json['ID khách hàng'] },
messaging_type: 'RESPONSE',
message: { text: $input.first().json.output }
};
return { data: body };

Trường messaging_type: RESPONSE báo cho Meta đây là tin trả lời trong cửa sổ 24 giờ. Nếu AI hay trả lời dài, ghi giới hạn độ dài trong System Message.
Bước 6: Thêm node HTTP Request gửi tin qua Send API
Node HTTP Request gọi Send API của Meta bằng Page ID và Page Access Token. Đây là chỗ bài cũ dùng nhầm ID ứng dụng: URL phải chứa Page ID, token phải là Page Token.
- Method: POST.
- URL:
https://graph.facebook.com/v26.0/{{ $('Edit Fields').first().json['ID Page'] }}/messages. Phiên bản mới nhất ngày 22/10/2026 là v26.0 theo trang Changelog của Meta; workflow cũ ghi v22.0 vẫn chạy tới 20/05/2027. - Authentication: chọn Generic Credential Type → Header Auth, tạo credential với Name
Authorization, ValueBearer {Page Access Token}. Để token trong credential thay vì gõ thẳng vào header của node. - Send Body: bật, Body Content Type JSON, Specify Body Using JSON, ô JSON nhập
{{ $json.data }}.

Ảnh chụp ở bản n8n cũ, token dán thẳng vào header; ở n8n 2.x nên chọn Authentication là Header Auth như mục Authentication ở trên.

Cấu trúc yêu cầu theo Meta, Send a message (đọc 22/10/2026): Page ID của Trang gửi, PSID người nhận, Page Access Token, loại tin và nội dung.
Bước 7: Trả lời khi tin nhắn đi vào nhánh false
Khách bấm nhầm biểu tượng thích hay gửi sticker thì dữ liệu đi nhánh false và chatbot im lặng. Chính sách Messenger yêu cầu bot tự động phản hồi mọi tin của khách, nên nên có câu trả lời mặc định.
const body = {
recipient: { id: $input.first().json.body.entry[0].messaging[0].sender.id },
messaging_type: 'RESPONSE',
message: { text: 'Chào bạn, mình là trợ lý tự động của shop. Bạn cần tư vấn sản phẩm nào ạ?' }
};
return { data: body };
Copy node Code và HTTP Request ở trên, nối vào nhánh false của If, thay nội dung node Code bằng đoạn mã này.

Bước 8: Publish workflow và đăng ký webhook với Meta
Workflow phải được Publish thì Production URL mới nhận tin khi bạn đóng editor. Ở n8n 2.x, nút Publish thay cho công tắc Active cũ.
- Bấm Publish trên thanh trên cùng của workflow.
- Mở node Webhook, tab Production URL, copy địa chỉ (dạng
https://n8n.example.com/webhook/...). - Trong App Dashboard của Meta, vào Messenger → Cài đặt (Messenger API Settings), mục Đặt cấu hình webhook: dán URL vào URL gọi lại, nhập đúng chuỗi ở Bước 1 vào Xác minh mã, bấm Xác minh và lưu.
- Đăng ký trường
messagesvà kết nối Trang với app (nút thêm Trang trong cùng màn hình, hoặc gọiPOST /{page-id}/subscribed_apps?subscribed_fields=messagesbằng Page Token).

Ảnh chụp ở bản n8n cũ; ở n8n 2.x vị trí này là nút Publish.

Nhắn thử vào Fanpage bằng một tài khoản khác (có vai trò trên app nếu app chưa Live) để kiểm tra.

Quy tắc cửa sổ 24 giờ của Messenger là gì?
Cửa sổ 24 giờ là khoảng thời gian Trang được nhắn tự do cho khách, tính từ hành động gần nhất của khách như gửi tin hay bấm nút. Ngoài cửa sổ, Trang chỉ được gửi tin có message tag đúng mục đích và không chứa khuyến mãi; dùng sai có thể bị hạn chế gửi tin.

- Ghi lại lúc khách nhắn: lưu mốc thời gian của tin gần nhất (ví dụ vào Google Sheets hoặc database) để workflow biết còn trong hạn hay không. Tin trả lời trong hạn đặt
messaging_type: RESPONSE; khách vào từ quảng cáo Click-to-Messenger được hạn dài hơn, tới 7 ngày tính từ tin đầu. - Hết hạn thì bàn giao cho nhân viên: workflow ngừng trả lời tự động và báo cho người phụ trách; người trả lời tay được dùng tag
HUMAN_AGENTtrong 7 ngày. - Gỡ các tag cũ khỏi workflow: kể từ 27/04/2026, Meta từ chối với lỗi 100 các yêu cầu dùng CONFIRMED_EVENT_UPDATE, ACCOUNT_UPDATE hoặc POST_PURCHASE_UPDATE.
- Ưu đãi cho khách cũ: đi qua Sponsored Messages hoặc One-Time Notification với người đã đồng ý nhận, không chèn vào tin chatbot khi đã quá hạn.
- Trả lời trong 30 giây: bot tự động phải phản hồi mọi tin văn bản, nút bấm, menu của khách, nên tránh để workflow chạy các bước chậm trước khi gửi tin trả lời.
Nguồn: Meta, Send a message và Messenger Platform Policy (đọc 22/10/2026). Không dùng chatbot n8n để gửi tin hàng loạt cho danh sách khách cũ: ngoài vi phạm chính sách Messenger, đây còn là xử lý dữ liệu cá nhân cần căn cứ theo Luật Bảo vệ dữ liệu cá nhân.
Có cần kiểm chữ ký X-Hub-Signature-256 không?
Có, nên kiểm. Meta ký mọi webhook POST bằng SHA256 với App Secret và gửi chữ ký trong header X-Hub-Signature-256 (dạng sha256=...). Không kiểm chữ ký thì ai biết URL webhook cũng gửi được tin giả vào workflow và tốn token AI của bạn.
- Bật tuỳ chọn Raw Body của node Webhook để giữ nguyên thân yêu cầu; Meta tính chữ ký trên bản thô, chuỗi JSON đã được n8n phân tích lại sẽ cho kết quả khác.
- Tính HMAC SHA256 của thân thô với App Secret (node Crypto hoặc node Code), so với phần sau
sha256=trong header. - Không khớp thì dừng workflow, không gọi AI Agent.
Mô tả thuật toán theo Meta, Webhooks for Messenger Platform. Meta gửi lại khi không nhận được 200 và có thể gửi trùng, nên lưu message.mid đã xử lý để bỏ tin lặp.
Vì sao chatbot Facebook không trả lời?
Chatbot không trả lời thường do workflow chưa Publish, webhook chưa đăng ký đúng Trang, token sai loại hoặc người nhắn không có vai trò trên app khi app còn ở Development. Kiểm tab Executions của n8n trước: không có execution nghĩa là Meta chưa gửi webhook tới.
Hiện tượng Nguyên nhân thường gặp Cách xử lý Meta báo không xác minh được Callback URL Workflow chưa Publish, dùng nhầm Test URL, verify token không khớp, SSL không hợp lệ Publish, dùng Production URL, kiểm chuỗi verify token, kiểm chứng chỉ HTTPS Không có execution khi nhắn tin Chưa đăng ký trường messages hoặc chưa kết nối Trang với app Đăng ký messages, gọi subscribed_apps cho Trang Chỉ tài khoản quản trị nhận được trả lời App ở Development, chưa có Advanced Access Chuyển Live, xin Advanced Access cho pages_messaging qua App Review HTTP Request báo lỗi 190 Page Token hết hạn hoặc bị vô hiệu Lấy lại token theo bài Page Access Token HTTP Request báo thiếu quyền Dùng User Token, ID ứng dụng thay cho Page ID, hoặc thiếu pages_messaging Dùng Page Token, Page ID trong URL, cấp lại quyền Khách nhận cùng câu trả lời hai lần Meta gửi lại webhook vì phản hồi chậm hơn 5 giây Respond to Webhook trả 200 ngay ở nhánh POST; bỏ tin trùng theo message.mid
Các lỗi kết nối API khác trong n8n có ở lỗi kết nối API thường gặp trong n8n.
Muốn chạy n8n 24/7 mà không tự cài? VPS n8n của Tino cài sẵn n8n trên VPS NVMe đặt tại Việt Nam; bạn vẫn có quyền root để cấu hình. Xem cấu hình và giá trên trang sản phẩm.
Câu hỏi thường gặp về chatbot Facebook với n8n
Tạo chatbot Facebook với n8n có tốn phí không?
Node AI Agent không thu phí riêng. Bạn trả phí token cho nhà cung cấp model (Google Gemini có hạn mức miễn phí tuỳ tài khoản, xem trang giá của Google AI), phí máy chủ nếu tự host, hoặc phí gói nếu dùng n8n Cloud.
PSID Facebook là gì?
PSID (Page-scoped ID) là ID Meta gán cho một người khi họ nhắn tin lần đầu với Trang của bạn. Cùng một người sẽ có PSID khác nhau với các Trang khác nhau. Chatbot dùng PSID làm người nhận trong Send API và làm khoá Memory để nhớ hội thoại.
Vì sao gửi tin vào Fanpage mà chatbot không phản hồi?
Kiểm theo thứ tự: workflow đã Publish chưa; Callback URL có phải Production URL không; Trang đã đăng ký trường messages chưa; token có phải Page Token còn hạn với quyền pages_messaging không; người nhắn có vai trò trên app không nếu app còn ở Development.
Cần quyền gì để chatbot gửi được tin nhắn?
Cần Page Access Token có quyền pages_messaging, lấy bởi tài khoản có vai trò kiểm duyệt (MODERATE) trên Trang; đăng ký webhook cho Trang cần thêm pages_manage_metadata. Trả lời khách ngoài vai trò app cần Advanced Access qua App Review.
Làm sao để chatbot hiểu rõ sản phẩm của tôi?
Viết System Message nêu phạm vi tư vấn và bắt buộc tra Tool trước khi báo giá, rồi gắn Google Sheets chứa sản phẩm, giá, câu hỏi thường gặp làm Tool. Cập nhật sheet khi đổi giá; chatbot đọc dữ liệu mới ở lần hỏi sau.
Chatbot có trả lời nhiều người cùng lúc được không?
Được. Mỗi tin nhắn tạo một execution riêng trong n8n, và Memory dùng PSID làm khoá nên hội thoại của từng khách không lẫn nhau. Khi n8n chạy queue mode nhiều worker, đổi Simple Memory sang Postgres hoặc Redis Chat Memory.
