
n8n kết nối Zalo OA là cách dùng n8n làm khâu trung gian: Zalo gửi tin nhắn của khách tới một webhook của n8n, n8n nhờ mô hình AI soạn câu trả lời, rồi gọi API của Zalo để gửi lại. Đây là hướng dẫn tạo chatbot Zalo bằng n8n qua API chính thức của Zalo Official Account (OA), không dùng tài khoản Zalo cá nhân. Bài không hứa chatbot đúng mọi câu và không khuyên tự động trả lời khi chưa có người xem. Chúng tôi chưa chạy workflow này: mọi bước dựa trên tài liệu chính thức của Zalo for Developers và n8n đọc ngày 04/11/2026, chưa thử trên hệ thống của chúng tôi. Bài có bảng luồng 8 bước, cách làm mới token, bước duyệt và các lỗi thường gặp.

Luồng từ tin nhắn của khách tới câu trả lời đã được người duyệt. Sơ đồ: OPCAIOS.
Cần chuẩn bị gì trước khi nối n8n với Zalo OA?
Bạn cần một OA doanh nghiệp, một ứng dụng trên nền tảng Zalo, một n8n có HTTPS công khai và khoá API của một mô hình AI. Theo trang Khám phá, Zalo không tính phí tích hợp nhưng bạn có thể phải trả phí gói OA và một số tính năng; bài không ghi giá vì chưa đọc bảng giá. Danh mục tài liệu n8n chúng tôi đọc không có node Zalo riêng, nên các lệnh gọi Zalo dùng node HTTP Request. Chọn hướng ở bài tích hợp ChatGPT vào Zalo, thiết kế OA ở bài trợ lý AI trả lời Zalo, khái niệm ở bài Zalo OA là gì, cài n8n ở bài cài đặt n8n trên VPS.
Luồng chatbot Zalo bằng n8n gồm những node nào?
Luồng gồm hai workflow: xử lý tin nhắn (bảng dưới) và làm mới token theo lịch.
| Bước | Node n8n | Việc làm |
|---|---|---|
| 1 | Webhook (POST) | Nhận sự kiện từ Zalo, trả 200 ngay |
| 2 | Crypto và If | Tính chữ ký, so với tiêu đề X-ZEvent-Signature |
| 3 | If, Data Table | Giữ user_send_text, bỏ tin trùng (msg_id) |
| 4 | Data Table | Lấy access token hiện hành |
| 5 | HTTP Request hoặc node AI | Soạn nháp |
| 6 | Telegram (Send and Wait) | Người duyệt hoặc từ chối |
| 7 | HTTP Request | Gửi tin Tư vấn qua API Zalo |
| 8 | Data Table | Ghi nhật ký |
Tạo ứng dụng Zalo và lấy access token thế nào?
Tạo ứng dụng tại trang Zalo for Developers bằng tài khoản Zalo, liên kết với OA và cấp quyền gửi tin và thông báo qua OA, theo trang Khởi tạo ứng dụng. Access token cho phép ứng dụng thay mặt OA gọi API và chỉ có hiệu lực 25 giờ. Theo trang Xác thực và uỷ quyền, mỗi access token đi kèm một refresh token sống 3 tháng; refresh token chỉ dùng được một lần, dùng xong Zalo trả refresh token mới và access token cũ hết hiệu lực ngay.
Lần đầu, quản trị viên có thể dùng công cụ API Explorer của Zalo for Developers để lấy cả hai token rồi chép vào một Data Table của n8n. Cách OAuth v4 đầy đủ (PKCE, mã uỷ quyền sống 10 phút) chỉ cần khi làm cho OA của người khác.
Workflow làm mới gồm Schedule Trigger, HTTP Request rồi ghi token mới vào Data Table. Chúng tôi gợi ý 12 giờ một lần, thấp hơn 25 giờ (số này do chúng tôi chọn, không phải của Zalo). Yêu cầu theo tài liệu: POST dạng form tới địa chỉ oauth.zaloapp.com/v4/oa/access_token, tiêu đề secret_key là khoá bí mật của ứng dụng, thân gồm app_id, grant_type=refresh_token và refresh_token.
Rủi ro lớn nhất: nếu bước lưu lỗi sau khi Zalo đã đổi refresh token, bạn mất chuỗi và phải cấp quyền lại; thêm workflow Error Trigger để được báo. Tài liệu Data Table không nói về mã hoá, nên coi token như lưu thường.
Đăng ký webhook nhận tin nhắn trên Zalo thế nào?
Webhook là địa chỉ nhận POST của Zalo mỗi khi khách nhắn OA. Trong cài đặt ứng dụng, nhập Webhook URL và bật sự kiện cần nhận; nên dùng tên miền HTTPS, không dùng dạng máy chủ và cổng. Nếu bật "Lọc cú pháp", webhook chỉ nhận tin văn bản bắt đầu bằng "#", nên hãy tắt nếu muốn nhận mọi tin. Xem thêm webhook là gì.
Zalo yêu cầu trả mã 200 trong tối đa 2 giây, nếu không người quản lý ứng dụng nhận thông báo lỗi. Sự kiện gửi thất bại (không mở được kết nối) được gửi lại sau 30 giây, 5 phút, 15 phút, 30 phút, 1 giờ, kèm tiêu đề num_retry; vẫn hỏng thì webhook bị vô hiệu hoá và bạn phải xin nhận sự kiện lại trong cài đặt ứng dụng.
Cấu hình node Webhook của n8n và kiểm chữ ký ra sao?
Node Webhook có địa chỉ Test (chạy khi bạn bấm Listen for Test Event) và Production (đăng ký khi bạn publish). Dán địa chỉ Production vào Zalo, đặt POST, đường dẫn khó đoán, và chọn Respond là Immediately để trả mã ngay, đúng yêu cầu 2 giây. Nếu n8n nằm sau reverse proxy, đặt N8N_WEBHOOK_URL thành địa chỉ công khai (bản cũ dùng WEBHOOK_URL, tài liệu ghi đã thay từ phiên bản 2.35.0). Sự kiện tin nhắn có event_name là user_send_text, người gửi ở sender.id, nội dung ở message.text, mã tin ở message.msg_id.
Tiêu đề X-ZEvent-Signature của Zalo bằng sha256 của app_id, chuỗi JSON dữ liệu, timestamp và khoá bí mật OA nối lại. Bật Raw Body để lấy đúng chuỗi gốc (dựng lại JSON có thể khác từng ký tự), rồi dùng node Crypto (Hash, SHA256) và node If để so sánh. Tài liệu Zalo không ghi dạng mã hoá đầu ra; chưa thử trên n8n, hãy đối chiếu bằng sự kiện thật. Sai chữ ký thì dừng, không gọi AI. Sau chữ ký, giữ user_send_text và tra msg_id trong Data Table: đã có thì dừng, chưa có thì ghi lại.
Gọi mô hình AI để soạn nháp thế nào?
Gửi nội dung tin cùng khối quy tắc cho mô hình qua node AI hoặc HTTP Request tới API nhà cung cấp bạn chọn, và chỉ cho phép trả lời từ tài liệu bạn đưa vào. Khối mẫu giả định:
Bạn soạn nháp trả lời khách của [tên doanh nghiệp] trên Zalo.
Chỉ dùng thông tin trong TÀI LIỆU. Không có thì viết đúng chữ: CHUYỂN NGƯỜI.
Không tự nêu giá, hoàn tiền, cam kết kết quả hay lời khuyên pháp lý.
Tối đa 600 ký tự.
TÀI LIỆU: [câu hỏi thường gặp và chính sách đã duyệt]
TIN CỦA KHÁCH: [nội dung]
Mô hình vẫn có thể sai. Tin khách đi sang nhà cung cấp mô hình, nên đừng gửi dữ liệu thừa; xem 5 quy tắc bảo mật dữ liệu khi dùng AI.
Người duyệt trước khi gửi bằng cách nào?
Dùng thao tác Send and Wait for Response của node Telegram, loại Approval (cách tạo bot Telegram nằm ở bài n8n và Telegram cùng loạt này): n8n gửi bạn tin của khách kèm bản nháp và tạm dừng tới khi bạn duyệt hoặc từ chối, có tuỳ chọn giới hạn thời gian chờ. Nếu từ chối, bạn trả lời tay bằng OA Manager, công cụ gửi tin có trong tài liệu Zalo. Chúng tôi gợi ý duyệt hết trong vài tuần đầu; câu về giá, hoàn tiền, khiếu nại luôn do người trả lời. Gợi ý của OPCAIOS, chưa đo.
Trả lời khách qua API tin Tư vấn thế nào?
Tin Tư vấn dùng để phản hồi khách. Điều kiện theo tài liệu: ứng dụng đã bật quyền gửi tin, khách có tương tác với OA trong 7 ngày và không chặn OA. Trong 48 giờ kể từ tương tác cuối, tin Tư vấn miễn phí; sau đó tính theo bảng giá Zalo (chưa kiểm chứng). Gọi bằng HTTP Request:
curl -X POST -H "Content-Type: application/json" \
-H 'access_token: <access token hiện hành>' \
-d '{"recipient":{"user_id":"<sender.id>"},"message":{"text":"<nội dung đã duyệt>"}}' \
"https://openapi.zalo.me/v3.0/oa/message/cs"
Văn bản tối đa 2.000 ký tự; cắt bằng node Code trước khi gửi. Đừng dùng tin Tư vấn để quảng cáo hàng loạt: Zalo tự hạn chế các luồng gây phiền. Cuối cùng ghi nhật ký mỗi tin: mã tin, người gửi, câu hỏi, bản nháp, quyết định, kết quả gửi. Chỉ lưu dữ liệu cần dùng và đặt thời hạn xoá; phần pháp lý về dữ liệu cá nhân chỉ để tham khảo, không phải tư vấn.
Lỗi thường gặp khi dựng chatbot Zalo bằng n8n
| Triệu chứng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| Không có sự kiện | "Lọc cú pháp" bật, thiếu quyền, webhook bị vô hiệu hoá | Tắt lọc, kiểm quyền, xin nhận lại |
| Zalo báo webhook không hoạt động | Phản hồi quá 2 giây | Respond là Immediately |
| Khách nhận hai câu trả lời | Zalo gửi lại sự kiện, hoặc chạy cả Test và Production | Loại trùng bằng msg_id |
| Gửi lỗi sau một ngày | Access token hết hạn sau 25 giờ | Kiểm workflow làm mới |
| Làm mới lỗi | Refresh token đã dùng, hết hạn hoặc chưa lưu | Cấp quyền lại bằng API Explorer |
Kinh nghiệm của OPCAIOS
Chúng tôi chưa chạy workflow n8n này; hướng dẫn dựa trên tài liệu chính thức. Điều có thật: CRM nội bộ của opcaios.org có hộp thư Zalo OA, viết trực tiếp trong website, không qua n8n, và kiểm chữ ký sự kiện theo công thức trên. Theo ghi chú lúc xây, hộp thư này mới thử cục bộ bằng sự kiện ký giả lập; chúng tôi chưa xác nhận nó chạy với OA thật, chưa có số liệu hiệu quả, chưa có khách ngoài dùng.
Câu hỏi thường gặp
n8n có node Zalo sẵn không?
Trong danh mục tài liệu n8n đọc ngày 04/11/2026 không có node Zalo riêng. Cách làm là node Webhook để nhận sự kiện và node HTTP Request để gọi API Zalo, như bài này. Node cộng đồng nếu có thì chúng tôi chưa kiểm chứng, và chưa đọc mã của chúng. Nếu dùng, hãy coi đó là phần mềm bên thứ ba chạm được vào token và tin nhắn khách.
Chatbot có tự trả lời tin nhắn Zalo không cần người duyệt được không?
Về kỹ thuật có thể: bỏ bước duyệt và nối thẳng nháp vào API gửi tin. Chúng tôi không khuyên ở giai đoạn đầu vì mô hình có thể bịa giá hoặc hiểu sai ý khách. Hãy duyệt tay, ghi nhật ký, rồi chỉ cho tự gửi nhóm câu lặp có tài liệu rõ. Câu về giá, hoàn tiền, khiếu nại và pháp lý luôn do người trả lời.
Vì sao khách không nhận được tin dù n8n báo thành công?
Kiểm ba điều theo tài liệu Zalo: khách có tương tác với OA trong 7 ngày không, có chặn OA không, access token còn hiệu lực không. Hãy đọc phản hồi của API trong nhật ký thay vì chỉ nhìn trạng thái node; bảng mã lỗi cụ thể chưa kiểm chứng ở đây, hãy tra tài liệu chính thức của Zalo. Nếu cả ba đều ổn, thử gửi bằng API Explorer để tách lỗi của n8n khỏi lỗi của Zalo.
Chi phí chạy chatbot này gồm những khoản nào?
Gồm gói OA và tin sau 48 giờ nếu có, máy chủ hoặc gói n8n, phí API mô hình AI và thời gian của người duyệt, khoản dễ bị quên nhất. Con số từng khoản chúng tôi chưa kiểm chứng và chưa đo. Hãy ước tính theo số tin khách nhắn mỗi ngày, rồi so với việc một người ngồi trực.
Tôi chưa biết lập trình thì làm được không?
Được một phần: node n8n kéo thả được, nhưng bạn vẫn phải đọc phản hồi API, xử lý token và sửa lỗi webhook. Muốn kiểm tra nhu cầu trước, hãy liệt kê 10 câu khách hỏi lặp nhiều nhất cùng câu trả lời chuẩn của bạn, rồi thử soạn chúng với một mô hình AI thông thường. Nếu chưa có người kỹ thuật, nên nhờ họ dựng thử trên một OA thử nghiệm thay vì OA đang bán hàng.
Bước tiếp theo
Nếu muốn xem cách này có hợp với OA của bạn không, đặt lịch trao đổi với chúng tôi.
Nguồn: tài liệu Zalo for Developers (Khám phá, Khởi tạo ứng dụng, Xác thực và uỷ quyền, Webhook, Tin nhắn, Tin Tư vấn) và tài liệu n8n (Webhook, Crypto, Telegram, Data tables, URL webhook), đọc ngày 04/11/2026. Chưa kiểm chứng: giá gói OA và tin sau 48 giờ, hạn mức gọi API, bảng mã lỗi, số ứng dụng tối đa mỗi OA, dạng mã hoá chữ ký, mã hoá Data Table, node cộng đồng. Chưa thử workflow trên hệ thống OPCAIOS; kinh nghiệm là của OPCAIOS.
Để lại bình luận
Email của bạn sẽ không hiển thị công khai. Bình luận sẽ hiển thị sau khi được duyệt.


