Cho chat ẩn danh hay bắt đăng nhập
Chọn giữa cho khách chat ngay và bắt đăng nhập trước, hiểu vì sao biểu mẫu trước trò chuyện không phải là danh tính, và bàn giao phiên đã xác thực.
Phần Ai được chat hỏi đúng một câu: khách có phải khai mình là ai trước khi chat không, và bằng cách nào. Câu trả lời quyết định bạn có được tin dữ liệu kèm theo hội thoại hay không.
Mục tiêu
Kênh chạy đúng một trong hai chế độ — chat ẩn danh, hoặc bắt đăng nhập — và bạn biết dữ liệu ở mỗi chế độ đáng tin tới đâu.
Trước khi bắt đầu
- Vai trò quản trị viên, hoặc một vai trò khác đã được xếp vào nhóm quyền cho sửa kênh.
- Nếu định bắt đăng nhập: địa chỉ trang đăng nhập của website bạn, và một lập trình viên nối được backend bên bạn với api-engine.
- Biến môi trường
INTERNAL_API_TOKENđã đặt trên api-engine. Chưa đặt thì cửa server-to-server trả404chứ không mở. - Đọc Vai trò và quyền theo tính năng nếu bạn không chắc tài khoản mình sửa được kênh.
Các bước
Ở cột trái bấm Kênh, mở kênh tiện ích website, chọn tab Cấu hình rồi tới phần Ai được chat.

Giữ Cho phép chat ẩn danh ở trạng thái bật nếu khách được chat ngay mà không phải khai gì. Đây là mặc định của một kênh mới.
Muốn hỏi thông tin trước khi khách nhắn, bật Bật biểu mẫu trước trò chuyện. Ba công tắc con hiện ra ngay dưới.
Chọn trong Bắt buộc nhập tên, Bắt buộc nhập Email và Bắt buộc nhập số điện thoại. Cả ba ô luôn được hỏi; công tắc quyết định ô nào khách không được bỏ qua.
Cần danh tính đáng tin thì tắt Cho phép chat ẩn danh. Biểu mẫu biến mất và ô Trang đăng nhập hiện ra thay chỗ.
Điền Trang đăng nhập bằng một đường dẫn bắt đầu bằng https://. Console từ
chối lưu khi ô này trống hoặc sai dạng.
Bố trí bước bàn giao phiên ở phía website của bạn, theo hai đoạn mã bên dưới. Thiếu bước này thì khách đăng nhập xong vẫn không chat được.
Bấm Lưu cài đặt.
Biểu mẫu trước trò chuyện chỉ thu thập, không xác thực. Khách gõ được bất cứ tên và địa chỉ nào, và không có bước nào kiểm chứng chúng. Phiên mở ra từ biểu mẫu vẫn là phiên ẩn danh. Đừng dùng dữ liệu đó để tra cứu tài khoản, xác nhận đơn hàng hay mở bất cứ thông tin nào của khách khác.
Bàn giao một phiên đã xác thực
Chỉ chế độ bắt đăng nhập mới cho bạn một danh tính đáng tin, và nó đi qua backend của bạn chứ không qua trình duyệt. Sau khi backend đã xác thực khách, nó gọi cửa server-to-server của api-engine:
curl -X POST "https://<api-cua-ban>/internal/widget-sessions" \
-H "X-Internal-Token: <INTERNAL_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "inbox_id": <INBOX_ID>, "identifier": "cloudfly:1234567", "email": "khach@example.com" }'Phản hồi mang widget_token. Trang web đưa nó cho widget, và xoá nó đi khi
khách đăng xuất:
window.CustomChatSDK.identify({ widget_token: "<WIDGET_TOKEN>" });
// Khi khách đăng xuất. Token sống lâu hơn phiên duyệt web, nên bỏ bước này là
// người dùng máy chung tiếp theo thừa hưởng cuộc trò chuyện.
window.CustomChatSDK.reset();Hai chế độ loại trừ nhau, và console dựng biểu mẫu lồng bên trong nhánh cho
phép ẩn danh để bạn không bật được cả hai. Lý do: khi kênh bắt đăng nhập, cửa
ẩn danh POST /widgets/:inbox_id/contacts trả 403 — mà đó đúng là nơi biểu
mẫu gửi dữ liệu tới. Bật cả hai là mời khách điền tên, email, điện thoại rồi
báo gửi không được.
Kiểm chứng
Ở chế độ ẩn danh có biểu mẫu: mở widget bằng cửa sổ ẩn danh của trình duyệt. Biểu mẫu phải hiện trước khung soạn tin, và ô nào bạn đặt bắt buộc thì mang dấu sao đỏ trên nhãn.
Ở chế độ bắt đăng nhập: mở widget khi chưa đăng nhập, khung chat phải thay chỗ bằng nút Đăng nhập để chat dẫn tới trang bạn đã khai. Đăng nhập trên website rồi mở lại widget: khung soạn tin phải mở ra, và hội thoại cũ của đúng người đó hiện lại.
Sự cố thường gặp
| Hiện tượng | Nguyên nhân | Cách xử lý |
|---|---|---|
| Bấm Lưu cài đặt không ăn, ô Trang đăng nhập viền đỏ | Đang tắt chat ẩn danh mà chưa khai trang đăng nhập | Điền một đường dẫn bắt đầu bằng https:// |
| Khách đăng nhập xong widget vẫn hiện nút đăng nhập | Website chưa gọi identify() với token do backend lấy về | Bổ sung bước bàn giao phiên ở trên |
Backend gọi /internal/widget-sessions nhận 404 | INTERNAL_API_TOKEN chưa đặt trên api-engine, nên cửa này coi như không tồn tại | Đặt biến môi trường rồi khởi động lại api-engine |
Backend nhận 403 ở cùng lời gọi đó | Header X-Internal-Token sai giá trị | Đối chiếu lại với biến môi trường của api-engine |
| Người dùng sau trên máy chung thấy hội thoại của người trước | Website không gọi reset() khi đăng xuất | Gọi CustomChatSDK.reset() trong luồng đăng xuất |