Hướng dẫn kết nối Zalo OA với n8n từ A-Z

28 Tháng 5, 2025
Blog

Zalo OA là một trong những công cụ marketing mạnh mẽ nhất tại Việt Nam, nhưng việc tích hợp và tự động hóa thường gặp nhiều khó khăn. Trong bài viết này, mình sẽ hướng dẫn bạn cách kết nối Zalo OA với n8n một cách hoàn chỉnh, từ xác minh domain đến tự động lấy access token hàng ngày.

Chuẩn bị trước khi bắt đầu

Trước khi thực hiện, bạn cần có:

  • Tài khoản Zalo OA đã được phê duyệt
  • Server n8n đang hoạt động (phiên bản 0.186.0 trở lên)
  • Domain/subdomain để xác minh
  • Kiến thức cơ bản về n8n workflow

Bước 1: Cài đặt Community Node cho Zalo OA

n8n hỗ trợ cài đặt community nodes trực tiếp từ giao diện web:

Cài đặt qua n8n Interface

  1. Vào n8n instance của bạn
  2. Truy cập SettingsCommunity Nodes
  3. Click Install a community node
  4. Nhập tên package: n8n-nodes-zalo-oa-integration
  5. Click Install

Bước 2: Xác minh domain với Zalo OA

Theo tài liệu chính thức của Zalo, việc xác minh domain là bắt buộc để sử dụng các API. Quá trình này bao gồm:

Tại Zalo for Developers Console:

  1. Truy cập developers.zalo.me
  2. Vào app Zalo OA của bạn
  3. Chọn Cài đặtXác minh domain
  4. Thêm domain chính của bạn
  5. Tải file xác minh hoặc copy mã HTML

Tại server của bạn:

  • Upload file xác minh vào thư mục root của domain
  • Hoặc thêm meta tag vào trang chủ
  • Đảm bảo domain có thể truy cập qua HTTPS

Bước 3: Xác minh subdomain cho webhook

Nếu n8n instance của bạn chạy trên subdomain khác (ví dụ: n8n.yourdomain.com), bạn cũng cần xác minh subdomain này:

  • Thêm subdomain vào danh sách domain cần xác minh
  • Thực hiện quy trình xác minh tương tự
  • Đảm bảo webhook URL sử dụng domain đã xác minh

Video hướng dẫn chi tiết A-Z

Nếu ae chưa có n8n, ae có thể mua VPS cài đặt sẵn N8N + Redis khi đặt hàng, có tặng kèm domain, SSL miễn phí tại Tino

  • Mã giảm giá 1-2 năm giảm 20%: tinon8n20
  • Mã giảm giá 3-5 năm giảm 40%: tinon8n40

Hỗ trợ cài đặt wf và vấn đề khi kết nối Zalo miễn phí: https://zalo.me/g/sfuihb835
Tải wf miễn phí https://drive.google.com/drive/u/0/folders/1-7Oul7nyUI7Baxs4kBQN9qo37DHraXhN

Code xác minh subdomain

#Cài nano

apt update
apt install nano -y

#Sửa docker-compose.yml

nano docker-compose.yml


#code sửa nội dung docker-compose

 static-verify:
    image: nginx:alpine
    restart: always
    volumes:
      - ./verify:/usr/share/nginx/html:ro
    labels:
      - traefik.enable=true
      - traefik.http.routers.verify.rule=Host(`dev102.tino.page`) && Path(`/zalo_verifierRUMaDwZq7mufoxyltlrk42pgra_0d00LC3On.html`)
      - traefik.http.routers.verify.entrypoints=web,websecure
      - traefik.http.routers.verify.tls=true
      - traefik.http.routers.verify.tls.certresolver=mytlschallenge

#tạo file html verify zalo

mkdir -p ./verify
nano ./verify/zalo_verifierRUMaDwZq7mufoxyltlrk42pgra_0d00LC3On.html


#Chạy lại docker compose

docker-compose down
docker-compose up -d

Bước 4: Tạo webhook xác minh với Zalo

Webhook là cầu nối để nhận thông tin từ Zalo OA. Trong n8n:

Tạo Webhook Receiver:

  1. Tạo workflow mới
  2. Thêm Webhook node
  3. Cấu hình:
    • HTTP Method: GET
    • Path: /zalo-webhook
    • Response Mode: Respond to Webhook

Xác minh webhook với Zalo:

  • URL webhook: https://your-n8n-domain.com/webhook/zalo-webhook
  • Zalo sẽ gửi GET request để verify
  • Webhook cần trả về challenge code từ query parameter

Bước 5: Lấy access token từ authorization code

Theo flow OAuth 2.0 của Zalo OA:

Bước 5.1: Tạo authorization URL

curl \
-X POST \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'secret_key: <your_secret_key>' \
--data-urlencode 'code=<your_oauth_code>' \
--data-urlencode 'app_id=<your_app_id>' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code_verifier=your_code_verifier' \
'https://oauth.zaloapp.com/v4/oa/access_token'

Bước 5.2: Xử lý callback và lấy token Trong n8n workflow:

  1. HTTP Request node để exchange authorization code
  2. Endpoint: https://oauth.zaloapp.com/v4/oa/access_token
  3. Method: POST
  4. Body: { "app_id": "your_app_id", "app_secret": "your_app_secret", "code": "authorization_code", "grant_type": "authorization_code"}

Bước 6: Test kết nối Zalo OA cơ bản

Sau khi có access token, thực hiện các test cơ bản:

Test API cơ bản:

  1. Get OA Info: GET https://openapi.zalo.me/v2.0/oa/getoa
  2. Send Message: POST https://openapi.zalo.me/v3.0/oa/message/cs
  3. Get User Profile: GET https://openapi.zalo.me/v2.0/oa/getprofile

Sử dụng Zalo OA nodes:

  • Drag & drop các node Zalo OA từ palette
  • Cấu hình credentials với access token
  • Test từng chức năng cơ bản

Bước 7: Tự động refresh access token

Điểm quan trọng nhất – setup auto refresh token để tránh gián đoạn:

Tạo Scheduled Workflow:

Cron node: Chạy hàng ngày lúc 2:00 AM 0 2 * * *

HTTP Request node để refresh token:

curl \
-X POST \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'secret_key: <your_secret_key>' \
--data-urlencode 'refresh_token=<your_refresh_token>' \
--data-urlencode 'app_id=<your_app_id>' \
--data-urlencode 'grant_type=refresh_token' \
'https://oauth.zaloapp.com/v4/oa/access_token'

Kết luận

Việc tích hợp Zalo OA với n8n thông qua community node mở ra vô số khả năng automation cho doanh nghiệp. Với workflow đã setup, bạn có thể tạo được hệ thống marketing automation mạnh mẽ và ổn định.

Quan trọng nhất là tuân thủ đúng quy trình OAuth 2.0 của Zalo và setup auto refresh token để đảm bảo hệ thống hoạt động liên tục.


Bài viết dựa trên video hướng dẫn chi tiết và tài liệu chính thức của Zalo for Developers. Subscribe channel để cập nhật thêm các tutorial automation khác!

Viết một bình luận