---
title: "Cho chat ẩn danh hay bắt đăng nhập"
description: "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."
updated: "2026-08-28"
audience: [administrator]
source: "https://helpdesk-docs.svr1.feedapp.click/widget/chat-an-danh-hay-bat-dang-nhap"
---

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 [#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 [#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ả `404` chứ không mở.
* Đọc [Vai trò và quyền theo tính năng](/khai-niem/vai-tro-va-quyen) nếu bạn không chắc tài khoản mình sửa được kênh.

## Các bước [#các-bước]

1. Ở 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**.

   ![Phần Ai được chat trong tab Cấu hình: công tắc Cho phép chat ẩn danh đang bật, bên dưới là công tắc Bật biểu mẫu trước trò chuyện lùi vào trong một đường kẻ dọc](https://helpdesk-docs.svr1.feedapp.click/images/docs/widget/chat-an-danh-hay-bat-dang-nhap/01-ai-duoc-chat.vi.webp)

   *Biểu mẫu trước trò chuyện nằm bên trong nhánh cho phép chat ẩn danh.*
2. 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.
3. 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.
4. 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.
5. 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ỗ.
6. Đ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.
7. 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.
8. Bấm **Lưu cài đặt**.

> **Cảnh báo:** **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 [#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:

```bash
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:

```js
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();
```

> **Lưu ý:** 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 [#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 [#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 |

## Tiếp theo [#tiếp-theo]

* [Nhúng widget vào website](/widget/nhung-vao-website)
* [Thêm Zalo, Messenger, hotline vào widget](/widget/kenh-lien-he-khac)
* [Vai trò và quyền theo tính năng](/khai-niem/vai-tro-va-quyen)
