Tự động hoá
Hạ Tầng Hỗ trợ làm thay đội của bạn nhiều việc lặp lại: chọn người nhận mỗi hội thoại mới, chào hỏi và sàng lọc khách bằng bot kịch bản, phản ứng khi có sự kiện như đơn đã thanh toán hay đánh giá thấp, mời khách trên website bắt đầu chat, nhắc khách đang im lặng và theo dõi thời gian phản hồi. Trang này giải thích từng công cụ, nơi đặt nó trong dashboard và cách quản lý qua API.
| Công cụ | Làm gì | Trong dashboard |
|---|---|---|
| Quy tắc phân phối | Chọn nhân viên cho hội thoại mới hoặc hội thoại AI chuyển giao | Hỗ trợ → Quy tắc phân phối |
| Luồng | Bot kịch bản nói chuyện với khách từng bước | Hỗ trợ → Tự động hoá |
| Chu trình | Chạy chuỗi việc khi có sự kiện (đơn đã thanh toán, đánh giá, khách chờ lâu…) | Hỗ trợ → Tự động hoá → Chu trình |
| Chiến dịch | Tin nhắn chủ động và biểu mẫu thu khách tiềm năng trong widget | Hỗ trợ → Tự động hoá → Chiến dịch |
| Tự động hoá của website | Nhắc lại, đánh giá hài lòng, social proof, theo dõi chuyển đổi | Hỗ trợ → Kênh → website của bạn → Tự động hoá |
| Chính sách SLA | Hạn trả lời lần đầu và hạn xử lý xong | Hỗ trợ → Phiếu hỗ trợ → Chính sách SLA |
Trước khi bắt đầu
- Bạn cần quyền quản lý module Hỗ trợ: chủ sở hữu, quản trị viên, hoặc nhân viên có quyền Quản lý với Hỗ trợ. Xem Nhân viên và phân quyền.
- Tự động hoá chạy trên mọi kênh đổ về Hộp thư: widget website, ứng dụng di động, email và các kênh mạng xã hội trong mục Kênh.
- Khi gọi API, dùng API key có scope
chat:readđể đọc vàchat:writeđể thay đổi. Xem Xác thực API.
Các phần phối hợp với nhau thế nào
Khi khách gửi tin nhắn, Hạ Tầng chạy theo thứ tự:
- Khách bị chặn được kiểm tra trước. Tin của họ vẫn được lưu nhưng vào thẳng mục Spam: không phân phối, không thông báo.
- Luồng được nói trước. Nếu một luồng đang bật khớp với tin nhắn (hoặc một luồng đang chờ khách trả lời), luồng đó trả lời.
- Khi không luồng nào lên tiếng, trợ lý AI trả lời tuỳ theo chế độ của nó. Xem Trợ lý AI.
- Khi hội thoại cần người (hội thoại mới, bước "Chuyển cho nhân viên" của luồng, AI chuyển giao), quy tắc phân phối chọn nhân viên.
- Ở nền, chu trình phản ứng với các sự kiện trong hội thoại, và lượt quét mỗi phút khởi động các chu trình theo thời gian.
Khi nhân viên bấm Dừng AI trong một hội thoại, cả luồng lẫn trợ lý AI đều im lặng trong hội thoại đó. Luồng cũng không bao giờ chạy trong hội thoại đã đóng hoặc hội thoại đã có nhân viên phụ trách.
Quy tắc phân phối
Quy tắc phân phối quyết định ai nhận hội thoại mới. Vào Hỗ trợ → Quy tắc phân phối và bấm Thêm quy tắc.
Quy tắc chạy từ trên xuống. Với mỗi quy tắc có điều kiện khớp, Hạ Tầng lập danh sách nhân viên ứng viên. Quy tắc đầu tiên khớp và tìm được nhân viên sẵn sàng sẽ thắng. Nếu quy tắc khớp nhưng không tìm được ai (ví dụ không ai trong danh sách đang trực tuyến), Hạ Tầng thử quy tắc kế tiếp. Không quy tắc nào giao được thì hội thoại để chưa giao cho tới khi có người nhận. Hội thoại do trợ lý AI chuyển giao cũng được phân phối theo cách này.
Điều kiện
Mọi điều kiện bạn điền phải cùng đúng. Để trống một điều kiện là bỏ qua nó.
| Điều kiện | Khớp khi |
|---|---|
| Kênh | Kênh của hội thoại nằm trong các kênh đã chọn (web, zalo, zalo_personal, messenger, instagram, email, tiktok, tiktokshop, whatsapp, telegram, x, line) |
| Thẻ (bất kỳ thẻ nào) | Hội thoại có ít nhất một trong các thẻ |
| Tin nhắn đầu chứa (bất kỳ từ nào) | Tin nhắn đầu tiên chứa một trong các từ (không phân biệt hoa thường) |
| Trong giờ làm việc / Ngoài giờ làm việc | Giờ làm việc của website cho biết đội đang mở hay đóng |
Quy tắc tạo trong dashboard áp dụng cho mọi website. Qua API, bạn có thể giới hạn quy tắc cho một số website (siteIds) hoặc một số tài khoản kênh đã kết nối (channelAccountIds).
Ai nhận hội thoại
| Cách giao | Hoạt động |
|---|---|
| Xoay vòng giữa các nhân viên | Lần lượt từng ứng viên |
| Nhân viên có ít hội thoại đang mở nhất | Chọn ứng viên có ít hội thoại đang mở và đang chờ nhất |
| Một nhân viên cụ thể | Nhân viên đầu tiên trong danh sách của quy tắc |
| Để chưa giao (dừng tại đây) | Dừng xét quy tắc và để hội thoại chưa giao |
Ứng viên là những nhân viên bạn chọn trong quy tắc, hoặc cả đội khi để trống. Chỉ nhân viên được phép trả lời trong Hỗ trợ mới được tính. Ba tuỳ chọn tinh chỉnh thêm:
- Chỉ giao cho nhân viên đang trực tuyến: bỏ qua nhân viên ngoại tuyến, và thử quy tắc kế tiếp nếu không còn ai.
- Ưu tiên người phụ trách khách: khách quay lại được giao cho người phụ trách của họ (đặt trên hồ sơ khách trong Khách hàng) khi người đó là ứng viên.
- Ưu tiên nhân viên đã trò chuyện với khách này lần trước: giữ khách với cùng một nhân viên.
Đồng thời tạo phiếu hỗ trợ, ưu tiên tạo một phiếu cho mỗi hội thoại quy tắc giao, với mức ưu tiên bạn chọn. Rất hợp với email: mọi email đến thành một phiếu có đồng hồ SLA.
Bảng thông tin hội thoại trong Hộp thư cho biết quy tắc nào đã xếp hội thoại và vì sao. Nhân viên có thể bấm Chia lại để chạy lại các quy tắc hiện tại.
Luồng
Luồng là kịch bản bot làm theo từng bước. Dùng luồng để chào khách, xin số điện thoại, hiện menu câu hỏi thường gặp hay gửi thẻ sản phẩm trước khi nhân viên hoặc AI trả lời. Vào Hỗ trợ → Tự động hoá và bấm Luồng mới, hoặc cài một mẫu ở cuối trang. Luồng vừa cài ở trạng thái tắt để bạn sửa nội dung trước.
Kích hoạt
| Kích hoạt | Bắt đầu khi |
|---|---|
| Tin nhắn đầu tiên của hội thoại | Khách gửi tin nhắn đầu tiên |
| Tin nhắn của khách chứa từ khoá | Tin nhắn chứa một trong các từ khoá (bỏ qua dấu và hoa thường) |
| Khách đang ở một trang | URL hiện tại của khách chứa đoạn bạn nhập (widget website) |
| Thủ công / chỉ từ hộp thư | Không tự chạy; nhân viên hoặc API khởi động |
Mọi kích hoạt đều có thể giới hạn theo kênh, trong hoặc ngoài giờ làm việc, và theo khách đến từ một chiến dịch (ref hoặc utm_source trong URL). Một luồng áp dụng cho một website hoặc cho tất cả. Khi nhiều luồng cùng khớp, luồng đứng trước trong danh sách thắng.
Các bước
Các bước chạy từ trên xuống. Mỗi bước có một id để bước khác nhảy tới. Một luồng có tối đa 60 bước.
| Bước | Làm gì |
|---|---|
| Gửi tin nhắn | Gửi văn bản, có thể kèm nút trả lời nhanh |
| Hỏi và lưu câu trả lời | Gửi câu hỏi, chờ khách trả lời rồi lưu vào tên, số điện thoại hoặc email của khách, một trường khách hàng, hoặc một biến của luồng. Có thể kiểm tra câu trả lời là số điện thoại hay email và hỏi lại (tối đa hai lần) khi chưa đúng. |
| Gửi thẻ sản phẩm | Gửi tối đa 4 sản phẩm trong danh mục, chọn theo id hoặc theo từ khoá tìm kiếm (ví dụ {{last}}, tin nhắn cuối của khách) |
| Rẽ nhánh theo câu trả lời | Nhảy tới một bước khi câu trả lời cuối (hoặc một biến) chứa từ cho trước, hoặc khi điều kiện về hội thoại, khách hàng đúng; nếu không thì nhảy tới bước khác |
| Chờ | Tạm dừng từ 1 đến 86.400 giây |
| Thêm thẻ | Gắn thẻ cho hội thoại |
| Giao cho nhân viên | Giao hội thoại cho một nhân viên hoặc theo quy tắc phân phối; luồng kết thúc |
| Gọi webhook | Gửi sự kiện chat.flow.webhook tới webhook của bạn |
| Nhảy tới bước | Tiếp tục ở bước khác |
| Chuyển cho trợ lý AI | Kết thúc luồng và để AI tiếp quản (cần bật trợ lý) |
| Chuyển cho nhân viên | Có thể nói một câu, rồi chuyển hội thoại theo quy tắc phân phối |
| Kết thúc | Kết thúc luồng; tin tiếp theo đến AI hoặc nhân viên như thường |
Trong nội dung tin nhắn, {{name}}, {{phone}} và {{email}} chèn thông tin của khách, {{last}} là câu trả lời cuối và {{var.order_ref}} là một biến đã lưu. Thêm giá trị dự phòng sau dấu gạch đứng: {{name|bạn}}.
Khi luồng đang ở bước Chờ, tin của khách đến người trả lời tiếp theo (AI hoặc nhân viên), không đến luồng.
Danh sách luồng hiện số lần mỗi luồng đã bắt đầu và đã hoàn thành.
Chu trình
Chu trình chạy một chuỗi việc khi có chuyện xảy ra trong hội thoại: đơn được thanh toán, khách chờ quá lâu, khách đánh giá thấp. Vào Hỗ trợ → Tự động hoá, bấm Chu trình, rồi Chu trình mới hoặc cài một mẫu. Mẫu được cài ở trạng thái tắt để bạn sửa lời nhắn trước khi bật.
Sự kiện
| Sự kiện | Bắt đầu khi |
|---|---|
| Khách bắt đầu hội thoại | Có hội thoại mới |
| Hội thoại được xử lý xong | Nhân viên (hoặc tự động hoá) đánh dấu xử lý xong |
| AI chuyển cho nhân viên | Trợ lý AI chuyển giao |
| Hội thoại được giao cho người | Có người được giao |
| Hội thoại được gắn tag | Có tag được thêm; có thể giới hạn một tag |
| Khách đánh giá | Có đánh giá hài lòng |
| Có đơn mới / Đơn đã thanh toán | Đơn gắn với một hội thoại được tạo hoặc được thanh toán |
| Khách để lại thông tin (popup) | Khách gửi biểu mẫu của chiến dịch |
| Khách chờ chưa được trả lời | Tin của khách chưa được trả lời sau N phút (mặc định 10) |
| Đơn chưa thanh toán sau một thời gian | Đơn gắn với hội thoại vẫn chưa thanh toán N phút sau khi tạo (mặc định 120) |
Hai sự kiện theo thời gian được kiểm tra mỗi phút. Để không xử lý lịch sử cũ khi bạn vừa bật chu trình, chúng chỉ nhận các hội thoại và đơn đến hạn trong vòng một giờ trở lại.
Điều kiện
Thêm điều kiện ở Chỉ chạy khi và chọn tất cả hay một điều kiện bất kỳ phải đúng. Mỗi điều kiện so một trường với một giá trị:
| Trường | Giá trị |
|---|---|
| Kênh | web, zalo, messenger… |
| Trạng thái hội thoại | open, pending, resolved |
| Tag | tên tag |
| Người phụ trách | bot, human, none |
| Giờ làm việc | within, outside |
| Có số điện thoại / Có email | có hoặc không |
| Nguồn (utm_source / ref) | ví dụ fb-tet |
| Số sao đánh giá | ví dụ 3 |
| Giá trị đơn / Trạng thái đơn | lấy từ sự kiện đơn hàng |
| Trường khách hàng | giá trị của một trường tuỳ chỉnh |
Phép so sánh: là, không phải, chứa, lớn hơn, nhỏ hơn, có giá trị, trống.
Các bước
Một chu trình có tối đa 30 bước.
| Bước | Làm gì |
|---|---|
| Nhắn khách | Gửi tin nhắn trong hội thoại |
| AI viết tin nhắn | Trợ lý AI viết tin từ nội dung hội thoại theo chỉ dẫn của bạn; khi AI không chạy được thì gửi câu dự phòng |
| Gửi email cho khách | Gửi email khi khách có địa chỉ email; không có thì bỏ qua |
| Gửi ZNS | Gửi mẫu Zalo ZNS tới số điện thoại của khách; không có số thì bỏ qua |
| Gắn / bỏ tag | Thay đổi tag của hội thoại |
| Giao hội thoại | Giao cho một nhân viên, hoặc chạy lại quy tắc phân phối |
| Báo cho người | Thêm người vào hội thoại và để lại ghi chú nội bộ; không chọn ai thì báo người đang phụ trách |
| Tạo nhắc việc | Tạo nhắc việc về hội thoại sau N phút, cho một người hoặc người phụ trách |
| Đổi trạng thái | Đặt trạng thái open, pending hoặc resolved |
| Gửi chuyển đổi (GA4/Meta) | Gửi chuyển đổi lead hoặc purchase khi đã bật theo dõi chuyển đổi |
| Gửi sự kiện webhook | Gửi sự kiện chat.flow.webhook kèm source: "workflow" |
| Chờ | Chờ từ 1 đến 43.200 phút rồi chạy tiếp |
| Điều kiện | Chỉ chạy tiếp khi điều kiện đúng; nếu không, lượt chạy kết thúc |
Tin nhắn dùng được {{name}}, {{phone}}, {{email}}, {{order_code}}, {{order_total}}, {{rating}} và {{site}}.
Lượt chạy
Trang của mỗi chu trình có mục Lượt chạy gần đây với trạng thái (Đang chạy, Đang chờ, Xong, Đã dừng, Lỗi) và nhật ký từng bước đã làm gì. Bạn có thể Dừng một lượt đang chờ hoặc Chạy lại cho một hội thoại. Mỗi sự kiện chỉ chạy một chu trình một lần. Nếu một chu trình chạy năm lần trong cùng hội thoại trong mười phút, Hạ Tầng coi đó là vòng lặp và bỏ qua các lượt tiếp theo. Tắt chu trình thì các lượt của nó dừng ở bước kế tiếp.
Chiến dịch
Chiến dịch là lời mời chủ động và biểu mẫu thu khách tiềm năng mà widget website hiện cạnh nút chat. Vào Hỗ trợ → Tự động hoá, bấm Chiến dịch, rồi Chiến dịch mới. Mỗi chiến dịch thuộc một website.
| Mục | Tuỳ chọn |
|---|---|
| Loại | Tin nhắn có nút bấm (tối đa 3 nút; bấm nút sẽ gửi chữ trên nút làm tin đầu tiên của khách) hoặc Biểu mẫu khách tiềm năng (tên, số điện thoại, email) |
| Hiển thị | Một lần mỗi khách, Một lần mỗi lượt truy cập hoặc Mỗi trang |
| Kích hoạt | Sau N giây trên trang, hoặc khi khách cuộn quá một tỉ lệ phần trăm, hoặc khi khách định rời trang (chỉ máy tính). Không chọn gì thì chiến dịch hiện ngay sau khi trang tải. |
| Bộ lọc | URL chứa, URL không chứa, nguồn giới thiệu chứa, nguồn UTM, chỉ khách lần đầu hoặc khách quay lại, di động hoặc máy tính |
| Chỉ khách chưa có hội thoại đang mở | Mặc định bật |
| Chỉ khi có nhân viên trực tuyến | Mặc định tắt |
| Nội dung | Văn bản tiếng Việt và tiếng Anh, chữ trên nút, nút gửi và lời cảm ơn |
Widget hiện tối đa một chiến dịch mỗi trang: chiến dịch đầu tiên trong danh sách thoả mọi điều kiện. Khi khách gửi biểu mẫu, Hạ Tầng lưu thông tin, mở hội thoại kèm lời cảm ơn của bạn, phân phối theo quy tắc phân phối, gửi sự kiện webhook chat.campaign.lead và chạy các chu trình Khách để lại thông tin (popup). Danh sách chiến dịch hiện số lần hiển thị, số lần nhấp và số khách tiềm năng thu được.
Tự động hoá của website
Mỗi website có tab Tự động hoá: vào Hỗ trợ → Kênh, mở website, rồi chọn Tự động hoá.
- Nhắc lại khi khách im lặng: khi đội nhắn sau cùng và khách chưa trả lời sau N phút (5 đến 43.200; mặc định 1.440), gửi một tin nhắc, tối đa 1 đến 3 lần mỗi hội thoại. Chọn câu cố định, hoặc để AI viết theo ngữ cảnh. Ở chế độ AI, trợ lý còn có thể quyết định chờ thêm hoặc không nhắc; khi AI không chạy được thì gửi câu cố định. Hội thoại nằm ngoài cửa sổ trả lời của kênh bị bỏ qua: 48 giờ với Zalo OA và TikTok, 24 giờ với Messenger, Instagram và WhatsApp.
- Đánh giá hài lòng (CSAT): mời khách đánh giá hội thoại khi xử lý xong: chấm sao trong widget, nút trả lời nhanh trên Zalo, Messenger và Instagram.
- Thông báo social proof: hiện thông báo kiểu "Hùng N. vừa đặt Áo thun" cạnh nút chat, lấy từ đơn đã thanh toán trong 14 ngày qua hoặc từ danh sách bạn tự nhập.
- Theo dõi chuyển đổi: gửi chuyển đổi bắt đầu chat, khách tiềm năng và mua hàng tới các thẻ phân tích đã có trên trang (gtag, Meta Pixel, dataLayer). Nhập GA4 measurement id và API secret, hoặc Meta pixel id và token Conversions API, để gửi thêm từ phía server; cách này đếm được cả đơn từ Zalo, Messenger và Instagram.
Chính sách SLA
Chính sách SLA quy định một phiếu phải được trả lời lần đầu và xử lý xong trong bao lâu, theo từng mức ưu tiên. Vào Hỗ trợ → Phiếu hỗ trợ và bấm Chính sách SLA.
| Mức ưu tiên | Phản hồi đầu tiên (mặc định) | Xử lý xong (mặc định) |
|---|---|---|
| Khẩn | 15 phút | 240 phút (4 giờ) |
| Cao | 60 phút | 480 phút (8 giờ) |
| Bình thường | 240 phút (4 giờ) | 1.440 phút (1 ngày) |
| Thấp | 1.440 phút (1 ngày) | 4.320 phút (3 ngày) |
- Phút tính theo lịch. Bật Chỉ tính giờ làm việc để đồng hồ dừng ngoài giờ làm việc và ngày nghỉ của website.
- Chính sách mới áp dụng cho phiếu tạo từ lúc đó, và cho phiếu cũ khi đổi mức ưu tiên.
- Khi quá hạn, phiếu bị đánh dấu vi phạm, người phụ trách nhận thông báo đẩy, và Hạ Tầng gửi sự kiện webhook
chat.ticket.breachedvớiclocklàfirst_responsehoặcresolve. - Hội thoại email mới cũng có hạn trả lời lần đầu theo mức Bình thường. Hộp thư hiện "Trả lời trước …" hoặc "Quá hạn trả lời" trên các hội thoại này.
Công cụ liên quan trong Hộp thư
| Công cụ | Ở đâu | Ghi chú |
|---|---|---|
| Câu trả lời mẫu | Hỗ trợ → Câu trả lời mẫu | Gõ / trong ô soạn tin để chèn, hoặc chọn từ nút tia sét trong ứng dụng. {{visitor.name|there}} được thay bằng tên khách. Mỗi nhân viên giữ câu mẫu riêng của mình, trên dashboard hoặc ngay trong ứng dụng; câu dùng chung cho cả nhóm do quản lý thêm. Phím tắt không bắt buộc (tạo từ tiêu đề) và câu mẫu có thể kèm tiêu đề email. |
| Tag hội thoại | Hỗ trợ → Tag hội thoại | Mỗi tag có màu và mô tả. Bật AI tự gắn để trợ lý tự gắn tag khi hội thoại khớp mô tả. |
| Danh sách chặn | Hộp thư, menu ⋯ của hội thoại | Chặn một khách, số điện thoại, email hoặc địa chỉ IP. Tin của họ vào mục Spam. |
Quản lý tự động hoá qua API
Mọi endpoint nằm ở https://api.hatang.dev và cần chat:read (GET) hoặc chat:write (các method khác).
| Endpoint | Dùng để |
|---|---|
GET, POST /chat/routing-rules, PATCH, DELETE /chat/routing-rules/{id}, POST /chat/routing-rules/reorder | Quy tắc phân phối |
GET, POST /chat/flows, GET, PATCH, DELETE /chat/flows/{id}, GET /chat/flows/templates | Luồng |
POST /chat/conversations/{id}/flows/{flowId} | Chạy ngay một luồng trong hội thoại |
GET, POST /chat/workflows, GET, PATCH, DELETE /chat/workflows/{id}, GET /chat/workflows/templates, GET /chat/workflows/{id}/runs | Chu trình và lượt chạy |
POST /chat/conversations/{id}/workflows/{workflowId}, POST /chat/conversations/{id}/workflows/stop | Chạy ngay một chu trình (bỏ qua điều kiện kích hoạt), hoặc dừng mọi lượt đang chạy, đang chờ trong hội thoại |
GET, POST /chat/campaigns, GET, PATCH, DELETE /chat/campaigns/{id} | Chiến dịch |
GET, PUT /chat/sla | Chính sách SLA |
GET, POST /chat/canned-responses, PATCH, DELETE /chat/canned-responses/{id} | Câu trả lời mẫu |
PATCH /chat/flows/{id} và PATCH /chat/workflows/{id} thay toàn bộ định nghĩa: gửi đủ tên, kích hoạt và mọi bước. Quy tắc phân phối nhận trường camelCase trong request (agentIds, preferPrevious, onlineOnly) và trả về trường snake_case (agent_ids, prefer_previous, online_only).
Ví dụ: cảm ơn khách khi đơn đã thanh toán
- cURL
- Node.js
- Python
- PHP
curl -X POST https://api.hatang.dev/chat/workflows \
-H "Authorization: Bearer ht_123..." \
-H "Content-Type: application/json" \
-d '{
"name": "Cảm ơn khi khách thanh toán",
"trigger": { "event": "order_paid" },
"steps": [
{ "type": "send_message", "text": "Cảm ơn {{name}} đã thanh toán đơn {{order_code}} ({{order_total}})!" },
{ "type": "conversion", "name": "purchase" }
]
}'
// SDK Node chưa bọc chu trình; gọi thẳng endpoint.
const res = await fetch("https://api.hatang.dev/chat/workflows", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.HATANG_API_KEY}`, "Content-Type": "application/json" },
body: JSON.stringify({
name: "Cảm ơn khi khách thanh toán",
trigger: { event: "order_paid" },
steps: [
{ type: "send_message", text: "Cảm ơn {{name}} đã thanh toán đơn {{order_code}} ({{order_total}})!" },
{ type: "conversion", name: "purchase" },
],
}),
});
const workflow = await res.json();
import os, requests
res = requests.post(
"https://api.hatang.dev/chat/workflows",
headers={"Authorization": f"Bearer {os.environ['HATANG_API_KEY']}"},
json={
"name": "Cảm ơn khi khách thanh toán",
"trigger": {"event": "order_paid"},
"steps": [
{"type": "send_message", "text": "Cảm ơn {{name}} đã thanh toán đơn {{order_code}} ({{order_total}})!"},
{"type": "conversion", "name": "purchase"},
],
},
)
workflow = res.json()
<?php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.hatang.dev']);
$res = $client->post('/chat/workflows', [
'headers' => ['Authorization' => 'Bearer ' . getenv('HATANG_API_KEY')],
'json' => [
'name' => 'Cảm ơn khi khách thanh toán',
'trigger' => ['event' => 'order_paid'],
'steps' => [
['type' => 'send_message', 'text' => 'Cảm ơn {{name}} đã thanh toán đơn {{order_code}} ({{order_total}})!'],
['type' => 'conversion', 'name' => 'purchase'],
],
],
]);
$workflow = json_decode($res->getBody(), true);
Response (201 Created):
{
"object": "chat_workflow",
"id": "cwf_...",
"name": "Cảm ơn khi khách thanh toán",
"site_id": null,
"enabled": true,
"trigger": { "event": "order_paid", "match": "all", "conditions": [] },
"steps": [
{ "type": "send_message", "text": "Cảm ơn {{name}} đã thanh toán đơn {{order_code}} ({{order_total}})!" },
{ "type": "conversion", "name": "purchase" }
],
"started": 0,
"completed": 0,
"created_at": "2026-10-23T03:00:00.000Z",
"updated_at": "2026-10-23T03:00:00.000Z"
}
Request sai schema (sự kiện không tồn tại, bước thiếu trường bắt buộc, quá 30 bước) trả về 422 với mã validation_error. Xem Mã lỗi.
Sự kiện webhook
| Sự kiện | Gửi khi |
|---|---|
chat.flow.webhook | Bước Gọi webhook của luồng hoặc Gửi sự kiện webhook của chu trình chạy |
chat.campaign.lead | Khách gửi biểu mẫu của chiến dịch |
chat.ticket.breached | Phiếu trễ hạn SLA |
chat.conversation.handoff | Trợ lý AI chuyển hội thoại cho nhân viên |
Xem Webhook để biết payload và cách ký.
Bước tiếp theo
- Trợ lý AI: để AI trả lời từ kho kiến thức của bạn.
- Zalo ZNS: gửi thông báo đơn hàng, thanh toán từ chu trình.
- Cấu hình widget: giờ làm việc, form trước khi chat.
- REST API cho Hỗ trợ: hội thoại, khách hàng và phiếu hỗ trợ từ backend của bạn.