# Tối Ưu Tự Động Hóa Zalo Bot với n8n: Hướng Dẫn Chi Tiết từ hecigo

Zalo là ứng dụng nhắn tin phổ biến nhất tại Việt Nam, với hơn 75 triệu người dùng. Nếu doanh nghiệp của bạn hoạt động tại Việt Nam, khách hàng của bạn chắc

Published: 2026-04-11 · Language: vi · Tags: n8n, Zalo Bot, Tự động hóa, Vietnam · Canonical: https://hecigo.com/blog/toi-uu-tu-dong-hoa-zalo-bot-voi-n8n-huong-dan-chi-tiet-tu-hecigo/

---

Zalo là ứng dụng nhắn tin phổ biến nhất tại Việt Nam, với hơn 75 triệu người dùng. Nếu doanh nghiệp của bạn hoạt động tại Việt Nam, khách hàng của bạn chắc chắn có mặt trên Zalo. Việc tự động hóa các tương tác trên Zalo có thể giúp doanh nghiệp tiết kiệm thời gian, tăng hiệu quả và cải thiện trải nghiệm khách hàng. **n8n Zalo Bot node** nối thẳng Zalo Bot Platform vào workflow n8n: nhận tin nhắn qua webhook, gửi tin, ảnh, sticker, và quản lý cấu hình webhook. Node do hecigo phát triển và duy trì trên npm. 

Bài viết này sẽ cung cấp hướng dẫn chi tiết về cách triển khai và cấu hình **n8n Zalo Bot node** trong môi trường thực tế. Chúng tôi hướng đến các kỹ sư tự động hóa, nhà tích hợp hệ thống và những người sáng lập có kiến thức kỹ thuật, những người muốn triển khai nhanh chóng các giải pháp tự động hóa Zalo. Bài viết này được kế thừa và phát triển từ bài viết gốc của THE NEXOVA: [n8n Zalo Bot Node: Setup, Operations & Workflow Guide](https://thenexova.com/n8n-zalo-bot-node-complete-setup-and-operations-guide/).

## Tại sao nên tự động hóa Zalo Bot?

**n8n Zalo Bot node** cho phép bạn tự động hóa các phản hồi, thu thập thông tin khách hàng tiềm năng, đồng bộ hóa dữ liệu CRM và định tuyến thông báo mà không cần viết code tùy chỉnh. Điều này đặc biệt hữu ích cho các doanh nghiệp muốn:

*   **Cải thiện thời gian phản hồi:** Tự động trả lời các câu hỏi thường gặp của khách hàng ngay lập tức.
*   **Tăng hiệu quả làm việc:** Giảm tải công việc thủ công cho nhân viên, giúp họ tập trung vào các nhiệm vụ quan trọng hơn.
*   **Cá nhân hóa trải nghiệm khách hàng:** Gửi các tin nhắn được cá nhân hóa dựa trên hành vi và thông tin của khách hàng.
*   **Tích hợp Zalo với các hệ thống khác:** Kết nối Zalo với CRM, hệ thống quản lý kho, và các ứng dụng khác.

## Những gì bạn nhận được

Package `n8n-nodes-zalo-platform` bao gồm hai node chính:

*   **Zalo Bot Trigger:** Nhận tin nhắn và sự kiện đến từ Zalo bot của bạn thông qua webhook, với khả năng tự động đăng ký webhook và quản lý secret token.
*   **Zalo Bot (Action):** Gửi tin nhắn, ảnh, sticker, hành động chat và quản lý cấu hình webhook thông qua 9 operations.

Zalo Bot Platform API tuân theo các quy ước tương tự như Telegram Bot API. Tất cả các yêu cầu đều là `POST` và bot token được nhúng trong đường dẫn URL:

```
https://bot-api.zaloplatforms.com/bot{TOKEN}/{method}
```

## Cài đặt

### Bước 1: Tạo Zalo Bot

1.  Mở ứng dụng **Zalo** trên điện thoại của bạn.
2.  Tìm kiếm Official Account **"Zalo Bot Manager"**.
3.  Nhấn **"Tao bot"** (Tạo bot) trong menu chat.
4.  Nhập tên bot (phải bắt đầu bằng "Bot", ví dụ: `Bot MyShop`).
5.  Zalo sẽ gửi **Bot Token** của bạn qua tin nhắn theo định dạng: `bot_id:secret_key`.

### Bước 2: Cài đặt Node

**Thông qua n8n Community Nodes (khuyến nghị):**

    Settings > Community Nodes > Install > n8n-nodes-zalo-platform

**Cài đặt thủ công (self-hosted):**

```bash
cd ~/.n8n
npm install n8n-nodes-zalo-platform
```

**Chế độ Queue/Worker:** Nếu bạn chạy n8n với các container worker riêng biệt, hãy cài đặt node trên **cả instance chính và tất cả các worker**. Các node tùy chỉnh phải tồn tại trong `~/.n8n/` trên mọi container. Bỏ qua bước này là lỗi triển khai phổ biến nhất.

### Bước 3: Cấu hình Credentials

Tạo một credential mới thuộc loại **Zalo Bot API**:

| Field     | Value                                         |
| --------- | --------------------------------------------- |
| Bot Token | Chuỗi `bot_id:secret_key` nhận được từ Zalo |

Khi bạn lưu, n8n sẽ tự động gọi `POST /getMe` để xác minh token có hợp lệ hay không.

> **Triển khai trên VPS và cần cấu hình Cloudflare?** Webhook Zalo Bot yêu cầu địa chỉ HTTPS công khai. Nếu bạn cần hướng dẫn thiết lập Cloudflare Tunnel hoặc reverse proxy cho n8n self-hosted, xem hướng dẫn đầy đủ tại THE NEXOVA (tiếng Anh, có hình ảnh từng bước): [Cloudflare Configuration for n8n Zalo Bot →](https://thenexova.com/n8n-zalo-bot-node-complete-setup-and-operations-guide/)

> Related: [Thu Thập Dữ Liệu Web cho Doanh Nghiệp Việt với n8n và Firecrawl](https://hecigo.com/blog/toi-uu-hoa-quy-trinh-thu-thap-du-lieu-web-cho-doanh-nghiep-viet-voi-n8n-va-firec/): Node Firecrawl trong n8n có sáu thao tác dễ nhầm nhau: scrape, crawl, map, search, get status và cancel. Bài này đi qua từng cái và khi nào dùng...

## Zalo Bot Trigger: Nhận tin nhắn

Node **n8n Zalo Bot** Trigger tự động xử lý lifecycle webhook. Khi bạn kích hoạt một workflow, node sẽ:

1.  Đăng ký một URL webhook với Zalo API (`POST /setWebhook`).
2.  Tạo một **secret token** một cách xác định: `SHA256(botToken).hex().substring(0, 32)`.
3.  Xác thực mọi yêu cầu đến dựa trên header `X-Bot-Api-Secret-Token`.
4.  Dọn dẹp webhook khi workflow bị tắt (`POST /deleteWebhook`).

Bạn không cần sao chép URL webhook hoặc quản lý secret token thủ công.

### Bộ lọc sự kiện

| Option         | Value              | What Passes Through         |
| -------------- | ------------------ | ----------------------------- |
| Any Message    | `anyMessage`       | Tất cả các loại tin nhắn đến    |
| Text Message   | `message.text.received`  | Chỉ tin nhắn văn bản             |
| Image Message  | `message.image.received` | Chỉ tin nhắn hình ảnh            |
| Sticker Message| `message.sticker.received`| Chỉ tin nhắn sticker           |

### Sample Output Payload

Khi người dùng gửi tin nhắn văn bản đến bot của bạn, trigger sẽ xuất ra:

```json
{
  "event_name": "message.text.received",
  "message": {
    "date": 1775362520302,
    "chat": {
      "chat_type": "PRIVATE",
      "id": "818e7bf147beaee0f7af"
    },
    "message_id": "261de7b845d153890ac6",
    "from": {
      "id": "818e7bf147beaee0f7af",
      "is_bot": false,
      "display_name": "Nguyen Van A"
    },
    "text": "Xin chao"
  }
}
```

**Các expression chính cho các node downstream:**

| Expression                     | Returns                       |
| ------------------------------ | ----------------------------- |
| `$json.message.chat.id` | Chat ID (sử dụng để trả lời) |
| `$json.message.text`    | Nội dung tin nhắn             |
| `$json.message.from.display_name` | Tên hiển thị của người gửi   |
| `$json.event_name`        | Chuỗi loại sự kiện            |

## Zalo Bot Action Node: 9 Operations

### Get Bot Info

**Endpoint:** `POST /getMe` | **Parameters:** None

Trả về tên và ID của bot. Sử dụng để xác minh kết nối của bạn.

### Send Message

**Endpoint:** `POST /sendMessage`

| Parameter | Type   | Required | Description                                  |
| --------- | ------ | -------- | -------------------------------------------- |
| `chatId`  | String | Yes      | User ID hoặc Group ID                         |
| `text`    | String | Yes      | Nội dung tin nhắn, tối đa 2000 ký tự          |

**Request body được gửi đến Zalo:**

```json
{ "chat_id": "818e7bf147beaee0f7af", "text": "Thanks for reaching out!" }
```

### Send Photo

**Endpoint:** `POST /sendPhoto`

| Parameter | Type   | Required | Description           |
| --------- | ------ | -------- | --------------------- |
| `chatId`  | String | Yes      | User ID hoặc Group ID |
| `photo`   | String | Yes      | HTTPS image URL       |
| `caption` | String | No       | Caption text, max 2000 characters |

### Send Sticker

**Endpoint:** `POST /sendSticker`

| Parameter | Type   | Required | Description           |
| --------- | ------ | -------- | --------------------- |
| `chatId`  | String | Yes      | User ID hoặc Group ID |
| `stickerId`| String | Yes      | Sticker ID (ví dụ: `bfe458bf64fa8da4d4eb`) |

**Lưu ý:** UI gắn nhãn trường này là `stickerId`, nhưng request body API sử dụng key `"sticker"`. Node tự động xử lý mapping này.

### Send Chat Action

**Endpoint:** `POST /sendChatAction`

| Parameter | Type    | Required | Description                                                                         |
| --------- | ------- | -------- | ----------------------------------------------------------------------------------- |
| `chatId`  | String  | Yes      | User ID hoặc Group ID                                                               |
| `action`  | Options | Yes      | `typing` (bot đang nhập tin nhắn) hoặc `upload_photo` (bot đang tải ảnh lên)        |

**Request body được gửi đến Zalo:**

```json
{ "chat_id": "818e7bf147beaee0f7af", "action": "typing" }
```

Sử dụng **Send Chat Action** trước khi gửi tin nhắn hoặc ảnh để cho người dùng biết rằng bot của bạn đang xử lý yêu cầu của họ. Điều này cải thiện trải nghiệm trò chuyện bằng cách hiển thị trạng thái xử lý.

### Set Webhook

**Endpoint:** `POST /setWebhook`

| Parameter     | Type   | Required | Description                                             |
| ------------- | ------ | -------- | ------------------------------------------------------- |
| `url`         | String | Yes      | HTTPS URL công khai để Zalo gửi event đến               |
| `secretToken` | String | No       | Secret token để xác thực request đến từ Zalo            |

> **Lưu ý:** Node `ZaloBotTrigger` tự động gọi operation này khi workflow được kích hoạt - bạn không cần gọi thủ công trong hầu hết trường hợp. Dùng operation này khi cần đăng ký webhook từ một workflow riêng hoặc tích hợp với hệ thống bên ngoài n8n.

### Delete Webhook

**Endpoint:** `POST /deleteWebhook` | **Parameters:** None

Xóa webhook đang đăng ký của bot. Node `ZaloBotTrigger` tự động gọi operation này khi workflow bị tắt để dọn dẹp. Gọi thủ công khi cần reset hoàn toàn cấu hình webhook.

### Get Webhook Info

**Endpoint:** `POST /getWebhookInfo` | **Parameters:** None

Trả về thông tin webhook hiện tại của bot:

```json
{
  "url": "https://your-n8n.example.com/webhook/zalo-bot",
  "has_custom_certificate": false,
  "pending_update_count": 0
}
```

Dùng để kiểm tra xem webhook đã được đăng ký đúng chưa, hoặc debug khi bot không nhận được event.

## Workflow Mẫu Chính Thức: Chăm Sóc Khách Hàng SME Việt trên Zalo Bot

Workflow của chúng tôi đã được **n8n duyệt và publish chính thức** trên thư viện cộng đồng n8n.io:

**[Handle Vietnamese SME customer care on Zalo Bot with Gemini and Google Sheets](https://n8n.io/workflows/14816-handle-vietnamese-sme-customer-care-on-zalo-bot-with-gemini-and-google-sheets/)**

Đây là workflow sẵn sàng production cho doanh nghiệp nhỏ Việt Nam, được xếp vào danh mục **Support Chatbot** và **AI Chatbot** trên n8n.io. Workflow quản lý toàn bộ hành trình khách hàng bao gồm:

*   **Chào mừng và định tuyến tin nhắn** - Tự động phân loại tin nhắn đến theo intent.
*   **Phản hồi AI bằng tiếng Việt** - Tích hợp Google Gemini để trả lời tự nhiên, hỗ trợ đầy đủ dấu tiếng Việt.
*   **Chuyển tiếp lên nhân viên** - Tự động escalate khi bot không xử lý được.
*   **Ghi nhật ký cuộc trò chuyện** - Lưu toàn bộ lịch sử chat vào Google Sheets như một CRM đơn giản.

Workflow này sử dụng tất cả operations từ `n8n-nodes-zalo-platform` và là tài liệu tham khảo tốt nhất để xem node hoạt động trong thực tế.

**Yêu cầu:** n8n self-hosted (community nodes không khả dụng trên n8n Cloud), tài khoản Google (Sheets + Gemini API), và Zalo Bot đã tạo qua Zalo Bot Manager.

> **Gặp sự cố hoặc cần giải pháp nâng cao?** Bài viết gốc tiếng Anh tại THE NEXOVA có thêm các phần chưa được dịch trong bài này, bao gồm: Troubleshooting checklist cho các lỗi phổ biến (webhook không nhận event, token invalid, SSL errors) và Premium & Custom Solutions cho nhu cầu enterprise. Xem tại: [n8n Zalo Bot Node: Complete Setup Guide - THE NEXOVA →](https://thenexova.com/n8n-zalo-bot-node-complete-setup-and-operations-guide/)

## hecigo và node này

`n8n-nodes-zalo-platform` là node cộng đồng do hecigo phát triển và duy trì, phát hành công khai trên npm. Nếu bạn chạy nó trong production và gặp trường hợp node chưa xử lý được, mở issue trên GitHub là cách nhanh nhất để nó được bổ sung.

hecigo xây và vận hành lớp middleware giữa những hệ thống cần trao đổi dữ liệu với nhau. Node này là một mảnh nhỏ tách ra dùng chung; phần lớn công việc còn lại nằm ở chỗ dữ liệu chảy đúng giữa hai đầu: chống trùng, đối soát, và biết được khi nào một bản ghi bị rơi.

Nếu bạn đang có hai hệ thống không nói chuyện được với nhau, [mô tả cho chúng tôi](https://hecigo.com/#contact) hai hệ thống đó là gì và chỗ nào đang sai.

> **Triển khai xong rồi, cần gì thêm?** Theo dõi hecigo trên [Zalo OA](https://zalo.me/3108963776852260798) để nhận bài viết kỹ thuật mới sớm nhất - không spam, chỉ nội dung thực tế. Hoặc [liên hệ trực tiếp](https://hecigo.com/#contact) nếu bạn cần hỗ trợ setup workflow cho doanh nghiệp.

> Related: [Đọc tiếp: Thu Thập Dữ Liệu Web cho Doanh Nghiệp Việt với n8n và Firecrawl](https://hecigo.com/blog/toi-uu-hoa-quy-trinh-thu-thap-du-lieu-web-cho-doanh-nghiep-viet-voi-n8n-va-firec/): Node Firecrawl trong n8n có sáu thao tác dễ nhầm nhau: scrape, crawl, map, search, get status và cancel. Bài này đi qua từng cái và khi nào dùng...

## Nguồn tham khảo

*   [Handle Vietnamese SME customer care on Zalo Bot with Gemini and Google Sheets | n8n.io](https://n8n.io/workflows/14816-handle-vietnamese-sme-customer-care-on-zalo-bot-with-gemini-and-google-sheets/)
*   [n8n Zalo Bot Node: Setup, Operations & Workflow Guide | THE NEXOVA](https://thenexova.com/n8n-zalo-bot-node-complete-setup-and-operations-guide/)

---

Published by hecigo, middleware & integration lab. https://hecigo.com · hi@hecigo.com
