Zalo ZNS — Nhắn nhở qua Official Account

Zalo Notification Service (ZNS) cho phép phòng khám gửi thông báo chính thức từ Official Account mà không cần theo dõi khách. ZNS chỉ phát hành từ template được Zalo duyệt sẵn, giới hạn tần suất gửi, nhưng thường được đọc cao hơn SMS vì xuất hiện trên tin nhắn chính.

Giao diện cấu hình ZNS template ở Settings
Giao diện cấu hình ZNS template ở Settings

ZNS là gì

ZNS (Zalo Notification Service) là dịch vụ nhắn tin chính thức từ Zalo OA (Official Account). Khác với tin nhắn riêng tư, ZNS chỉ dùng template được Zalo duyệt trước, dùng cho thông báo hợp pháp như nhắc lịch hẹn, thanh toán, hay tái khám. ZNS không yêu cầu bệnh nhân theo dõi bạn, nhưng bệnh nhân phải từng chat với OA hoặc follow để nhận được tin.

Cấu hình ZNS

Vào Thiết lập → Tích hợp → Zalo ZNS.

  1. Tạo OA và nhận App ID + Secret — Trên oa.zalo.me, đăng ký Official Account phòng khám. Copy App ID và App Secret từ Settings.
  2. Nhập credential vào DentIQ — Vào Zalo ZNS tab, nhập App ID + Secret. Test kết nối — system ping Zalo API.
  3. Duyệt template ở Zalo — Trên Zalo OA admin portal, submit template dạng "Bệnh nhân {{patient_name}}, hẹn ngày {{appointment_date}}". Zalo review trong 24h, phê duyệt hoặc từ chối.
  4. Map template vào DentIQ — Khi Zalo duyệt, template được gán Template ID duy nhất. Quay lại DentIQ Settings, chọn trigger (appointment reminder, follow-up, payment alert…) → select template → save.
  5. Cấu hình per-branch override — Mặc định dùng OA chính. Nếu chi nhánh có OA riêng, set override credential ở branch-specific tab.
Quan trọng

Zalo ZNS template phải được duyệt trước. Template chứa yêu cầu thanh toán hay lệnh hành động phải có nội dung rõ ràng không lừa dối. Template tuyệt đối không được chứa link mạo danh hay tập tin độc hại — Zalo sẽ từ chối.

Template và automation

DentIQ hỗ trợ 4 loại template tự động:

  • Appointment Reminder — Gửi 24h trước hẹn. Nội dung: "Bệnh nhân {{name}}, hẹn ngày {{date}} lúc {{time}}. Xác nhận tới {{phone}}."
  • Follow-up Care — Sau visit hoàn thành 3 ngày. Nội dung: "Cảm ơn đã khám. Mọi thắc mắc liên hệ {{phone}}."
  • Post-op Instruction — Nếu treatment có hướng dẫn chăm sóc. Gửi ngay sau cuộc khám. Nội dung có thể chứa link khảo sát hoặc gọi khám lại.
  • Payment Reminder — Công nợ còn lại. Gửi 7 ngày sau hạn thanh toán. Nội dung: "Công nợ {{amount}} đã quá hạn. Vui lòng thanh toán trong 3 ngày."

Automation trigger lên lịch ngay khi điều kiện đạt (visit done, appointment created…). Staff cũng có thể gửi thủ công từ Patient detail hoặc Recall Today queue.

Fallback chain

Khi gửi ZNS, DentIQ sử dụng fallback chain tự động:

  1. Cố gắng ZNS trước — Gửi qua Zalo OA. Nếu success → done.
  2. ZNS fail (patient không follow OA, template lỗi, OA hết quota) → tự động fallback SMS.
  3. SMS fail (phone sai, SMS brand hết credit) → log failed, staff thấy alert.

Fallback chain giảm rủi ro miss notification. Tuy nhiên, patient chỉ nhận một thông báo (ZNS hoặc SMS, không cả hai).

Delivery stats và audit

Vào Thiết lập → Communication History để xem:

  • Số ZNS sent / delivered / failed theo ngày.
  • Chi tiết từng message: template, recipient, status, timestamp.
  • Reason code nếu fail (e.g. "OA_INACTIVE", "INVALID_PHONE", "QUOTA_EXCEEDED").

Audit trail dùng để kiểm tra compliance với Zalo (không gửi spam) và tối ưu template (xem template nào có delivery cao).

Dry-run / test mode

Trước go-live, test ZNS ở Thiết lập → Test Send. Chọn patient + template → gửi test message. Kiểm tra:

  • Message đến official account của bạn trong 5 giây.
  • Template render đúng parameter (patient name, appointment date, …).
  • Fallback SMS gửi nếu ZNS fail.

Khi test ✓, enable automation để hệ thống tự gửi.

Permission & consent

Gửi ZNS yêu cầu communication_settings.manage. Patient phải có consent APPOINTMENT_REMINDER hoặc MARKETING_OR_RECALL tương ứng loại template — DentIQ check tự động trước gửi.

Nếu consent revoked sau khi message queued, worker bỏ qua, không gửi, và log "BLOCKED_CONSENT_REVOKED".