close

Hướng dẫn cách kết nối API Messenger trên n8n bằng Webhook

Tác giả: Đông Tùng Ngày đăng: 19/05/2025 Chuyên mục: n8n
Disclosure
Website Tino blog được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Tino Group có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Tino blog sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại Tino blog được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

n8n chưa có node Messenger riêng, nên bạn kết nối Messenger API bằng node Webhook: Meta gửi yêu cầu GET để xác minh Callback URL (n8n trả lại hub.challenge), sau đó gửi mỗi tin nhắn tới Fanpage dưới dạng POST. Bạn cần app trên Meta for Developers, một Fanpage và n8n có địa chỉ HTTPS công khai.

Bài này dừng ở bước nhận được tin nhắn đầu tiên trong n8n. Phần soạn câu trả lời bằng AI và gửi lại qua Send API có ở bài tạo chatbot Facebook với n8n, dùng node AI Agent trong n8n. Các bước kiểm theo tài liệu Meta ngày 23/10/2026 (Graph API v26.0).

Vì sao phải kết nối Messenger API qua node Webhook?

Messenger Platform đẩy sự kiện (tin nhắn, bấm nút, đã đọc) tới một Callback URL do bạn khai báo, nên phía n8n cần một node Webhook để nhận. Khi có dữ liệu, các node HTTP Request, If, Edit Fields, Code xử lý tiếp mà không cần dựng máy chủ riêng.

  • n8n chưa có node Messenger chính thức: node Facebook Graph API của n8n không nhận sự kiện tin nhắn; Webhook là đường vào.
  • Webhook là cơ chế chuẩn của Meta: sự kiện như người dùng gửi tin, bấm nút postback, đổi trạng thái hội thoại đều đến qua Callback URL.
  • Xử lý linh hoạt: nối thêm If, Edit Fields, Code, HTTP Request để lọc, lưu và trả lời. Cách dùng node có ở bài node Webhook trong n8n.

Cần chuẩn bị gì trước khi kết nối Messenger API với n8n?

Bạn cần bốn thứ: tài khoản Meta for Developers, một app có sản phẩm Messenger, một Fanpage mà tài khoản của bạn có quyền kiểm duyệt (task MODERATE), và n8n có tên miền HTTPS. Meta không gửi webhook tới chứng chỉ tự ký.

Cách kết nối Messenger API trên n8n bằng Webhook như thế nào?

Quy trình gồm tám bước: tạo Webhook trong n8n, tạo app Meta, khai báo Callback URL và Verify Token, dựng nhánh xác minh, bấm Verify and Save, nối Fanpage và đăng ký trường messages, xử lý POST, rồi chuyển app sang Live.

Sơ đồ cách n8n trả lời Meta: một lần khi cài, Meta gửi GET xác minh, node If kiểm hub.mode bằng subscribe và hub.verify_token đúng chuỗi đã đặt, đúng thì trả nguyên văn hub.challenge mã 200, sai thì trả 403; mỗi tin nhắn Meta gửi POST, n8n kiểm chữ ký X-Hub-Signature-256 bằng HMAC SHA256 với App Secret, trả 200 trong 5 giây rồi xử lý, lọc trùng theo message.mid

Bước 1: Tạo workflow mới và thêm node Webhook trên n8n

Đăng nhập n8n, tạo workflow mới và thêm node Webhook làm trigger.

Bảng chọn trigger trong n8n, ô tìm kiếm webhook với kết quả Webhook và Respond to Webhook
Ảnh chụp ở n8n 1.x (05/2025); trên n8n 2.x công tắc Inactive được thay bằng nút Publish.
  • Trong tab Settings của node, bật Allow Multiple HTTP Methods, rồi chọn HTTP Methods là GET và POST. Node sẽ có hai đầu ra riêng.
  • Ở Respond, chọn Using ‘Respond to Webhook’ Node.
  • Đặt Path dễ nhận ra thay cho chuỗi ngẫu nhiên nếu muốn.

Sao chép URL ở tab Production URL để khai báo với Meta. Test URL chỉ nhận yêu cầu trong lúc bạn bấm Listen for test event, phù hợp khi thử lần đầu.

Node Webhook trong n8n với tab Test URL, URL dạng https://n8n.example.com/webhook-test/, HTTP Method GET, Path đã thay bằng ví dụ
Webhook URL (tên miền và path trong ảnh đã thay bằng ví dụ)

Lưu ý: với n8n tự host, URL phải là HTTPS có chứng chỉ hợp lệ, đúng tên miền công khai (biến N8N_WEBHOOK_URL ở n8n 2.x).

Bước 2: Tạo ứng dụng trên Meta for Developers

Mở tab mới, vào Meta for Developers, bấm Ứng dụng của tôi (My Apps) → Tạo ứng dụng (Create App).

Trang chủ Meta for Developers, mũi tên chỉ vào menu Ứng dụng của tôi
Menu Ứng dụng của tôi
Trang danh sách ứng dụng trống của Meta for Developers với nút Tạo ứng dụng
Bấm Tạo ứng dụng
  • Nhập Tên ứng dụng (ví dụ: test-n8n) và email liên hệ.
  • Ở bước trường hợp sử dụng (use case), chọn Khác (Other), bấm Tiếp.
  • Chọn loại ứng dụng Business, bấm Tiếp, rồi Tạo ứng dụng.
Bước Chi tiết ứng dụng: tên ứng dụng test-n8n, email liên hệ ten@example.com, nút Tiếp
Tên và email liên hệ của app (email đã thay bằng ten@example.com)
Bước Thêm trường hợp sử dụng của Meta, lựa chọn Khác được đánh dấu
Ảnh chụp giao diện Meta for Developers 05/2025; tên bước có thể khác ở giao diện hiện tại.
Bước Chọn loại ứng dụng, Business được chọn
Chọn loại Business
Bước Chi tiết trước khi tạo ứng dụng: tên test-n8n, email ten@example.com, hồ sơ doanh nghiệp không bắt buộc, nút Tạo ứng dụng
Xác nhận tạo app (email đã thay)

Trong App Dashboard, tìm Messenger trong danh sách sản phẩm và bấm Thiết lập (Set Up).

Danh sách sản phẩm trong App Dashboard: Messenger, Instagram, WhatsApp, API Tiếp thị, App Events, Audience Network; mũi tên chỉ nút Thiết lập của Messenger
Thêm sản phẩm Messenger

Bước 3: Khai báo Callback URL và Verify Token

Trong mục Đặt cấu hình webhook của Messenger:

  • Dán Webhook URL của n8n vào ô URL gọi lại (Callback URL).
  • Ô Xác minh mã (Verify Token): nhập một chuỗi ngẫu nhiên, đủ dài, chỉ bạn biết. Chuỗi này phải khớp với giá trị kiểm ở Bước 4; đừng dùng chữ dễ đoán như tên công ty.
Mục Đặt cấu hình webhook của Messenger: URL gọi lại https://n8n.example.com/webhook/duong-dan-webhook, Xác minh mã chuoi-bi-mat-cua-ban, nút Xác minh và lưu
Callback URL và Verify Token (giá trị trong ảnh đã thay bằng ví dụ)

Chưa bấm Xác minh và lưu: phải dựng nhánh xác minh trong n8n trước.

Bước 4: Dựng nhánh xác minh GET trong n8n

Khi bấm Xác minh và lưu, Meta gửi GET kèm hub.mode=subscribe, hub.verify_token và hub.challenge. Theo tài liệu Webhooks for Messenger Platform, bạn phải kiểm token đúng rồi trả lại nguyên văn hub.challenge; sai thì trả 403. Bản cũ của bài này trả challenge mà không kiểm token, nên ai biết URL cũng đăng ký được.

  • Ở đầu ra GET của Webhook, thêm node If với hai điều kiện (AND): {{ $json.query["hub.mode"] }} bằng subscribe và {{ $json.query["hub.verify_token"] }} bằng chuỗi Verify Token của bạn.
  • Nhánh true: node Respond to Webhook, Respond With = Text, Response Body = {{ $json.query["hub.challenge"] }}.
  • Nhánh false: node Respond to Webhook trả Response Code 403.
Node Webhook trong n8n với HTTP Methods GET và POST, Path đã thay bằng ví dụ, Respond chọn Using Respond to Webhook Node
Webhook nhận cả GET và POST, trả lời bằng node Respond to Webhook

Bấm Listen for test event (nếu dùng Test URL) hoặc bấm Publish workflow (nếu dùng Production URL) để n8n sẵn sàng nhận yêu cầu xác minh.

Node Webhook nhận yêu cầu xác minh từ Meta: Output có header user-agent facebookplatform, host đã thay bằng n8n.example.com, Executed successfully
Yêu cầu GET từ Meta đến n8n (tên miền đã thay bằng ví dụ)

Bước 5: Xác minh và lưu Webhook trên Meta

Quay lại Meta for Developers, bấm Xác minh và lưu (Verify and Save). Thấy dấu tích xanh ở mục Đặt cấu hình webhook là xong.

Trang Thiết lập API Messenger, mục 1 Đặt cấu hình webhook có dấu tích xanh
Webhook đã được xác minh

Nếu thất bại, kiểm lại:

  • Callback URL đúng từng ký tự, là HTTPS hợp lệ.
  • Verify Token trong Meta và trong node If khớp nhau.
  • Workflow đang lắng nghe (Listen for test event) hoặc đã Publish khi dùng Production URL.

Bước 6: Kết nối Fanpage và đăng ký trường messages

Ở mục Tạo mã truy cập, bấm Connect và chọn Trang cho phép app truy cập.

Mục 2 Tạo mã truy cập trong Thiết lập API Messenger, chưa có trang Facebook nào, nút Connect
Bấm Connect để liên kết Trang
Hộp thoại chọn Trang cho phép test-n8n truy cập: chọn áp dụng cho riêng Trang hiện tại, Trang Test Tino được đánh dấu, Page ID đã che
Chỉ chọn Trang cần dùng (Page ID đã che)
Trang Thiết lập API Messenger sau khi kết nối: Trang Test Tino với Page ID đã che, nút Thêm đăng ký ở cột Gói đăng ký Webhook
Bấm Thêm đăng ký để chọn trường webhook

Bấm Thêm đăng ký và bật trường messages (tin nhắn của người dùng). Thêm messaging_postbacks nếu chatbot có nút bấm.

Danh sách trường webhook của Messenger với cột phiên bản v22.0, trường messages đã đăng ký
Ảnh chụp 05/2025 với v22.0. Khi tạo mới, chọn phiên bản mới nhất v26.0 (Graph API Changelog, phát hành 29/07/2026; v22.0 hết hạn 20/05/2027).

Bước 7: Xử lý tin nhắn POST an toàn

Ở đầu ra POST của Webhook, 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 5 giây; quá hạn, Meta gửi lại và có thể tắt webhook nếu lỗi kéo dài.

  • Kiểm chữ ký: mỗi POST có header X-Hub-Signature-256 là HMAC SHA256 của payload với App Secret. Bật tuỳ chọn Raw Body của Webhook, dùng node Crypto (Hmac, SHA256, khoá App Secret) trên chuỗi body gốc, so với phần sau sha256=; không khớp thì dừng.
  • Lọc trùng: Meta có thể gửi lại cùng một sự kiện; lưu message.mid đã xử lý và bỏ qua lần lặp.
  • Lấy dữ liệu: PSID của người gửi ở {{ $json.body.entry[0].messaging[0].sender.id }}, nội dung ở …message.text.

Bước 8: Thêm chính sách quyền riêng tư và chuyển app sang Live

Vào Cài đặt ứng dụng → Thông tin cơ bản, điền URL chính sách quyền riêng tư trỏ tới trang chính sách trên website của bạn, mô tả đúng dữ liệu chatbot thu thập và cách người dùng yêu cầu xoá. Bấm Lưu thay đổi, rồi gạt Chế độ của ứng dụng từ Phát triển sang Chính thức.

Trang Thông tin cơ bản của app Meta: App ID đã che, email ten@example.com, URL chính sách quyền riêng tư https://example.com/chinh-sach-bao-mat, công tắc Chế độ ứng dụng ở Chính thức, nút Lưu thay đổi
Thông tin cơ bản và công tắc Live (App ID, email, URL đã thay bằng ví dụ)

Ở Development và Standard Access, webhook chỉ nhận 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 nhận tin của khách thật, app cần Live và được Advanced Access cho pages_messaging qua App Review.

Bước 9: Gửi tin nhắn thử

Bấm Execute workflow (hoặc Publish nếu dùng Production URL), dùng tài khoản có vai trò trên app nhắn vào Fanpage. Dữ liệu tin nhắn xuất hiện ở phần Output của node Webhook là kết nối đã chạy.

Messenger API có giới hạn gửi tin nào cần biết?

Messenger API chỉ cho Trang trả lời tự do trong 24 giờ kể từ tin nhắn gần nhất của người dùng. Ngoài cửa sổ đó, chỉ gửi được tin có message tag đúng mục đích (không khuyến mãi), theo tài liệu Send API của Meta.

  • Mỗi tin mới của người dùng mở lại cửa sổ 24 giờ.
  • Không dùng Messenger để gửi tin hàng loạt cho danh sách khách chưa nhắn tới Trang.
  • Chi tiết message tag, thời hạn và cách gửi trả lời có ở bài tạo chatbot Facebook với n8n.

Không nhận được tin nhắn Messenger trong n8n thì kiểm tra gì?

Khi Messenger không đẩy tin vào n8n, nguyên nhân thường nằm ở bốn chỗ: chưa đăng ký trường messages, Trang chưa liên kết, người nhắn không có vai trò trên app, hoặc workflow chưa Publish nên Production URL không nhận.

Hiện tượngNguyên nhân thường gặpCách xử lý
Verify and Save báo lỗiToken không khớp, URL sai, workflow không lắng ngheKiểm node If, dùng đúng URL, Publish workflow
Đã xác minh nhưng không có tinChưa bật trường messages hoặc chưa liên kết TrangBước 6: Connect Trang, Thêm đăng ký
Chỉ nhận tin của mìnhApp ở Development hoặc chưa có Advanced AccessChuyển Live, xin App Review cho pages_messaging
Nhận trùng một tin nhiều lầnKhông trả 200 trong 5 giâyTrả 200 ngay ở đầu nhánh POST, lọc theo message.mid
Webhook bị tắtLỗi liên tục khoảng một giờSửa lỗi rồi đăng ký lại webhook

Lỗi chung khi gọi API trong n8n (401, 403, 429) xem ở bài lỗi kết nối API thường gặp trong n8n. Webhook Messenger cần n8n chạy liên tục với tên miền HTTPS.

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.

Những câu hỏi thường gặp

Cần quyền gì để kết nối app với Fanpage?

Tài khoản của bạn phải làm được task MODERATE trên Trang (vai trò quản trị hoặc kiểm duyệt). Token dùng để đăng ký webhook cho Trang cần quyền pages_messaging và pages_manage_metadata.

Tại sao phải nhập chính sách quyền riêng tư?

Meta yêu cầu app có URL chính sách quyền riêng tư trước khi chuyển sang chế độ Chính thức (Live). Trang chính sách nên nằm trên website của bạn và mô tả đúng dữ liệu chatbot thu thập, thời gian lưu và cách yêu cầu xoá.

Tại sao n8n không có node Messenger riêng?

Messenger nhận tin qua webhook do Meta đẩy tới, nên node Webhook của n8n đảm nhận phần nhận; phần gửi dùng HTTP Request gọi Send API. Cách ghép này đủ cho cả chatbot hoàn chỉnh.

Tại sao không nhận được tin nhắn từ Messenger trong n8n?

Thường do chưa đăng ký trường messages, Trang chưa liên kết với app, người nhắn không có vai trò trên app khi app còn ở Development, hoặc workflow chưa Publish nên Production URL không nhận yêu cầu.

Có cần kiểm Verify Token không, hay chỉ cần trả hub.challenge?

Cần kiểm. Nếu chỉ trả hub.challenge, bất kỳ ai biết URL đều đăng ký webhook của họ vào workflow của bạn. Kiểm hub.mode và hub.verify_token, sai thì trả 403, đúng như tài liệu của Meta.

Đông Tùng

Senior Technology Writer

Là cử nhân Quản trị kinh doanh của Trường Đại học Tài chính - Marketing, Tùng bắt đầu làm việc tại Tino Group từ năm 2021 ở vị trí Content Marketing để thỏa mãn niềm đam mê viết lách của bản thân. Sở hữu khả năng sáng tạo đặc biệt, anh cùng đội ngũ của mình đã tạo nên những chiến dịch quảng cáo độc đáo cùng vô số bài viết hữu ích về nhiều chủ đề khác nhau. Sự tỉ mỉ, kiên trì và tinh thần sáng tạo của Tùng đã góp phần lớn vào thành công của Tino Group trong lĩnh vực marketing trực tuyến.

Xem thêm bài viết

Bài viết liên quan

Xem nhiều