
# Tiện ích Chat

## Hướng dẫn tích hợp Tiện ích Chat trên Website

Thêm một tiện ích chat thân thiện với người dùng vào trang web của bạn, cho phép khách truy cập giao tiếp trực tiếp thông qua giao diện trang web. Quy trình tích hợp rất đơn giản và sẽ cung cấp cho trang web của bạn các tính năng nhắn tin được tích hợp sẵn.

::: walkthrough chat-widget
:::

### Tạo và Cấu hình Tiện ích Trò chuyện

**Cách truy cập:**

1. Nhấp vào **Settings** (Cài đặt) gần cuối thanh bên trái. (Trên điện thoại, trước tiên hãy nhấn vào biểu tượng menu **☰** ở góc trên cùng để mở thanh bên.)
2. Trong thanh điều hướng bên trái của phần Cài đặt, dưới mục **Channels** (Kênh), nhấp vào **Channels**.
3. Tìm thẻ **Website chat widget** (Tiện ích trò chuyện trên trang web).
4. Nếu bạn chưa có tiện ích, hãy nhấp vào **Connect** (Kết nối) để tạo một tiện ích với tên hiển thị và tin nhắn chào mừng.
5. Sau khi tạo, bạn có thể nhấp vào **Manage** (Quản lý) bất cứ lúc nào để mở bảng cấu hình đầy đủ.

::: master-only
<figure><img src="../.gitbook/assets/v2-channels-overview.png" alt="Phần đầu của trang Kênh — thẻ tiện ích trò chuyện trên trang web nằm xa hơn bên dưới trong cùng danh sách"><figcaption><p>Tiện ích trò chuyện có thẻ riêng trên trang Kênh — chọn Kết nối để tạo, chọn Quản lý để định cấu hình mọi thứ khác. Nó nằm xa hơn trong danh sách so với hình hiển thị ở đây, sau Instagram (Cá nhân), LINE, Email và các kênh khác.</p></figcaption></figure>
:::

Các thay đổi bạn lưu sẽ tự động áp dụng cho tiện ích trực tuyến của bạn — không cần phải dán lại mã cài đặt sau khi thực hiện thay đổi.

Một **Bản xem trước trực tiếp** nằm ngay cạnh các cài đặt: một trang web mẫu với tiện ích thực tế của bạn đang chạy trên đó, hiển thị màu sắc, vị trí, logo, biểu tượng trình khởi chạy và cửa sổ bật lên chủ động chính xác như cách khách truy cập sẽ thấy. Nó theo dõi các chỉnh sửa của bạn khi bạn thực hiện, vì vậy bạn không cần phải lưu để xem thay đổi màu sắc hoặc chủ đề trông như thế nào. Bạn thậm chí có thể nhấp vào nút trò chuyện bên trong bản xem trước để mở tiện ích và dùng thử.

### Những gì bạn có thể tùy chỉnh

Bảng Quản lý được chia thành bốn phần.

#### Giao diện

- **Chủ đề kiểu dáng:** Thay đổi kiểu dáng toàn bộ widget chỉ với một cú nhấp chuột. Sáu chủ đề, mỗi chủ đề thiết lập giao diện, màu sắc, góc bo và phông chữ cùng nhau: **Classic** (giao diện khối nguyên bản — thanh tiêu đề có màu trên bảng phẳng), **Glass** (bảng mờ, trong suốt làm mờ nhẹ trang phía sau, với tiêu đề và hộp tin nhắn nổi như các thẻ bo tròn bên trong), **Midnight** (Glass với tông màu tối), **Bloom** (hồng nhạt, bo tròn hơn), **Ember** (Glass tông cam ấm) và **Mono** (đen trắng, góc nhọn). Một chủ đề là điểm khởi đầu — sau khi chọn, bạn vẫn có thể thay đổi bất kỳ màu sắc hoặc tùy chỉnh nào một cách riêng biệt. Các widget mới bắt đầu với Glass; việc chuyển đổi diễn ra tức thì ở mọi nơi widget được nhúng mà không cần thay đổi mã trên trang web của bạn.
- **Góc bo và Phông chữ:** Hai tùy chỉnh kiểu dáng độc lập. **Góc bo** thiết lập độ bo tròn của bảng, bong bóng và nút (Tròn, Mềm hoặc Nhọn), và **Phông chữ** chọn kiểu chữ mà khách truy cập nhìn thấy (Mặc định, Serif, Tròn hoặc Mono) — phông chữ được lấy từ thiết bị của khách truy cập, vì vậy không có gì tải thêm trên trang web của bạn.
- **Tên hiển thị:** Được hiển thị trong tiêu đề widget.
- **Logo:** Tải lên một hình ảnh xuất hiện ở đầu cuộc trò chuyện. Sử dụng logo công ty hoặc ảnh đại diện thân thiện của bạn.
- **Biểu tượng trình khởi chạy:** Biểu tượng trên chính nút trò chuyện nổi. Chọn một trong các biểu tượng tích hợp (bong bóng trò chuyện, máy bay giấy, dấu hỏi, v.v.), sử dụng lại logo đã tải lên của bạn hoặc tải lên một hình ảnh riêng — rất tiện lợi nếu bạn muốn ảnh của một thành viên thực sự trong nhóm chào đón khách truy cập.
- **Màu sắc:** Năm màu, mỗi màu đặt tên cho phần của widget mà nó tô điểm. **Màu thương hiệu** là nút nổi, tiêu đề và tin nhắn của chính khách truy cập, với **Văn bản thương hiệu** cho văn bản nằm trên đó. **Bong bóng bot** là nền cho các câu trả lời của bot và chỉ báo đang nhập, với **Văn bản bong bóng bot** cho các từ bên trong chúng và các dấu chấm đang nhập hoạt hình. **Cửa sổ trò chuyện** là bảng phía sau tất cả các tin nhắn. Hãy chọn màu Bong bóng bot khác biệt rõ ràng với màu Thương hiệu của bạn — nếu hai màu này trùng nhau, cả hai phía của cuộc trò chuyện sẽ có cùng màu và khách truy cập không thể phân biệt câu trả lời của bot với tin nhắn của chính họ. Bong bóng bot màu xám nhạt với văn bản tối bên cạnh màu thương hiệu của bạn là sự kết hợp an toàn.
- **Vị trí:** Đặt nút trò chuyện nổi ở góc **dưới bên phải** hoặc **dưới bên trái**, với độ lệch ngang và dọc (tính bằng pixel) nếu nó chồng lên thứ gì đó khác trên trang của bạn.
- **Câu hỏi gợi ý:** Các gợi ý trả lời nhanh (các thẻ có thể nhấp) được hiển thị trong cuộc trò chuyện để khách truy cập có thể bắt đầu chỉ với một lần nhấn thay vì phải nhập — ví dụ: "Giá của bạn là bao nhiêu?" hoặc "Bạn có cung cấp hỗ trợ không?" — tối đa 10 câu.

::: master-only
<figure><img src="../.gitbook/assets/v2-channel-widget-config.png" alt="Bảng cấu hình tiện ích Trò chuyện, hiển thị sáu thẻ chủ đề kiểu dáng (Cổ điển, Kính, Đêm khuya, Nở hoa, Than hồng, Đơn sắc), bộ chọn Góc và Phông chữ, Tên hiển thị, Logo, Biểu tượng trình khởi chạy và bộ chọn Màu ở bên trái, với Bản xem trước trực tiếp ở bên phải hiển thị tiện ích mở trong chủ đề Kính"><figcaption><p>Phần Giao diện của bảng Quản lý. Các thẻ chủ đề ở trên cùng thay đổi kiểu dáng toàn bộ tiện ích chỉ bằng một cú nhấp chuột — ở đây Kính được chọn và bản xem trước ở bên phải hiển thị bảng điều khiển mờ với tiêu đề nổi và hộp tin nhắn. Hàng biểu tượng Trình khởi chạy hiển thị các biểu tượng tích hợp theo màu sắc riêng của tiện ích của bạn và mỗi bộ chọn màu cho biết phần nào của tiện ích mà nó tô màu. Bản xem trước theo dõi các chỉnh sửa của bạn trực tiếp; việc lưu sẽ xuất bản chúng lên trang web của bạn.</p></figcaption></figure>
:::

#### Hành vi

- **Tin nhắn chào mừng:** Tin nhắn đầu tiên khách truy cập nhìn thấy khi họ mở trò chuyện (ví dụ: "Tôi có thể giúp gì cho bạn?").
- **Âm thanh:** Phát âm thanh khi có tin nhắn mới trong cuộc trò chuyện.
- **Yêu cầu quyền thông báo:** Tùy chọn nhắc khách truy cập cho phép thông báo trình duyệt, để họ được cảnh báo về các phản hồi ngay cả khi họ đã chuyển sang tab khác.
- **Bong bóng bật lên chủ động:** Một bong bóng nhỏ tùy chọn bật lên bên cạnh nút trò chuyện để mời mọi người tham gia. Bật tính năng này để thiết lập tin nhắn, văn bản nút chấp nhận/từ chối và số giây chờ trước khi nó xuất hiện. Bong bóng sẽ tự ẩn sau 20 giây nếu không ai nhấp vào (số đó là cố định), và khi khách truy cập nhấp vào **Để sau**, nó sẽ không xuất hiện nữa trong suốt thời gian họ truy cập. Bản thân cửa sổ trò chuyện không bao giờ tự mở: nó chỉ mở khi khách truy cập nhấp vào nút trò chuyện hoặc bong bóng, và vẫn mở cho đến khi họ đóng lại.
- **Tốc độ phản hồi của AI:** Một thanh trượt giữa **Chậm hơn** (giống con người hơn — AI mất một chút thời gian trước khi trả lời) và **Tốc độ tối đa** (giống robot hơn — phản hồi trả về nhanh nhất có thể). Cân bằng nằm ở giữa.

::: master-only
<figure><img src="../.gitbook/assets/v2-chat-widget-behavior.png" alt="Phần Hành vi của bảng Quản lý, hiển thị các trường Tin nhắn mở đầu, Âm thanh, Yêu cầu quyền thông báo, Bong bóng bật lên chủ động và Tốc độ phản hồi AI"><figcaption><p>Phần Hành vi. Âm thanh và Yêu cầu quyền thông báo là các nút chuyển đổi đơn giản; Bong bóng bật lên chủ động mở rộng thành các trường tin nhắn/nút/độ trễ riêng khi được bật.</p></figcaption></figure>
:::

#### Ngôn ngữ

Tiện ích này tự động hỗ trợ đa ngôn ngữ — bạn không cần phải bật bất kỳ cài đặt nào.

- **Nó tự động chọn ngôn ngữ của khách truy cập.** Trước tiên, nó sẽ xem xét ngôn ngữ mà trang của bạn khai báo trong HTML (`<html lang="it">`), sau đó nó sẽ chuyển sang ngôn ngữ trình duyệt của khách truy cập. Nếu không có ngôn ngữ nào trong số đó được chúng tôi hỗ trợ, các nhãn của tiện ích sẽ hiển thị bằng tiếng Anh, còn tin nhắn chào mừng, bong bóng bật lên và các câu hỏi bắt đầu của bạn sẽ xuất hiện chính xác như những gì bạn đã viết.
- **Hoặc tự chọn ngôn ngữ.** Trường **Ngôn ngữ tiện ích** trong phần Hành vi được đặt thành Tự động theo mặc định, đây chính là cơ chế phát hiện nêu trên. Hãy chọn một ngôn ngữ tại đó và các nhãn của tiện ích (các trường Tên, Email và Số điện thoại trong biểu mẫu của khách truy cập cùng văn bản ví dụ của chúng, thông báo quyền riêng tư, các nút) sẽ giữ nguyên ngôn ngữ đó bất kể trang web hay trình duyệt hiển thị gì. Hãy sử dụng tùy chọn này khi trình tạo trang web của bạn không khai báo đúng ngôn ngữ hoặc khi bạn muốn cố định một ngôn ngữ cho mọi khách truy cập.
- **Các ngôn ngữ được hỗ trợ:** Tiếng Anh, tiếng Hà Lan, tiếng Đức, tiếng Pháp, tiếng Tây Ban Nha, tiếng Ý, tiếng Bồ Đào Nha, tiếng Romania, tiếng Ba Lan, tiếng Ả Rập, tiếng Phần Lan, tiếng Philippines, tiếng Slovenia, tiếng Thái, tiếng Bangla và tiếng Nhật. Đây là danh sách các ngôn ngữ dành cho các nút và nhãn của tiện ích.
- **Tin nhắn của bạn được dịch tự động.** Mỗi khi bạn lưu, tin nhắn chào mừng, bong bóng bật lên chủ động và các câu hỏi bắt đầu của bạn sẽ được dịch sang tất cả mười sáu ngôn ngữ nêu trên. Bạn chỉ cần viết chúng một lần bằng bất kỳ ngôn ngữ nào bạn muốn: ngôn ngữ bạn viết sẽ được nhận diện từ chính văn bản đó, phiên bản đó sẽ được giữ nguyên từng chữ, và mọi ngôn ngữ khác sẽ là bản dịch của nó. Việc tài khoản của bạn được cài đặt ngôn ngữ nào không quan trọng.
- **Chỉ viết mỗi tin nhắn bằng một ngôn ngữ.** Nếu bạn đặt hai ngôn ngữ vào cùng một trường — ví dụ: một dòng tiếng Anh và một dòng tiếng Ý — toàn bộ nội dung đó sẽ được coi là một tin nhắn duy nhất và được dịch nguyên trạng, vì vậy khách truy cập người Ý sẽ thấy cùng một câu hai lần. Hãy viết một lần bằng bất kỳ ngôn ngữ nào bạn muốn.
- **AI trả lời bằng ngôn ngữ của khách truy cập.** Bất kể khách truy cập nhập ngôn ngữ nào, tác nhân của bạn sẽ trả lời bằng chính ngôn ngữ đó, bất kể nhãn của tiện ích đang hiển thị ngôn ngữ nào. Nếu bạn muốn tác nhân luôn trả lời bằng một ngôn ngữ cố định, hãy nêu rõ điều đó trong hướng dẫn dành cho tác nhân của bạn.

**Mẹo:** nếu trang web của bạn không đặt thuộc tính `lang` trên thẻ `<html>`, hãy thêm thuộc tính đó vào. Đây là tín hiệu mạnh nhất mà chúng tôi có để chọn đúng ngôn ngữ, đặc biệt là đối với những khách truy cập đang duyệt web từ nước ngoài.

#### Thu thập Khách hàng tiềm năng & Quyền riêng tư

- **Thu thập thông tin khách truy cập:** Mặc định là Tắt. Khi Bật, khách truy cập sẽ được yêu cầu cung cấp tên và email (và tùy chọn số điện thoại) trước khi cuộc trò chuyện bắt đầu, nhờ đó bạn có thể thu thập thông tin khách hàng tiềm năng ngay cả khi họ rời đi giữa chừng.
- **Tiêu đề biểu mẫu** và **Phụ đề biểu mẫu:** Tùy chỉnh tiêu đề và lời giải thích ngắn hiển thị phía trên biểu mẫu.
- **Thu thập số điện thoại:** Bật để yêu cầu thêm số điện thoại; tắt nếu chỉ muốn thu thập tên và email.

> **Khách truy cập đã để lại số điện thoại và rời khỏi trang web của bạn — tôi có thể tiếp tục trên WhatsApp không?** Có. Hãy mở cuộc trò chuyện của họ và chọn **Tiếp tục trên WhatsApp** từ menu ba chấm (cần kết nối WhatsApp Web hoặc WhatsApp Business). <span data-t="appName">DM Champ</span> tạo một cuộc trò chuyện WhatsApp được liên kết cho cùng một người, sao chép tên, email và thông tin chi tiết của họ, đồng thời AI sẽ chuyển tiếp những gì họ đã nói trên trang web của bạn, vì vậy không ai phải lặp lại những gì đã nói. Cuộc trò chuyện trên trang web vẫn giữ nguyên và cả hai cuộc trò chuyện đều trỏ đến nhau trong phần **Các cuộc trò chuyện được liên kết** trong bảng điều khiển liên hệ. Xem [Giao diện trò chuyện](../chats/chat-interface.md).

> **Tác nhân AI có thể tự đề nghị chuyển sang WhatsApp không?** Có, và không cần thêm tính năng nào — chỉ cần một dòng trong hướng dẫn của tác nhân là đủ. Tạo một [Liên kết rút gọn](../settings/short-links.md) cho số WhatsApp của bạn với tin nhắn soạn sẵn như "Xin chào, tôi đang trò chuyện trên trang web của bạn và muốn tiếp tục tại đây", sau đó cho tác nhân biết khi nào cần gửi tin nhắn đó, ví dụ: "Nếu khách truy cập cần rời đi, muốn tiếp tục sau hoặc yêu cầu dùng WhatsApp, hãy đề nghị tiếp tục ở đó và gửi liên kết này: (liên kết rút gọn của bạn)". Các liên kết trong tiện ích có thể nhấn vào được, vì vậy khách truy cập sẽ chuyển đến WhatsApp với số của bạn đã được chọn và tin nhắn đã được soạn sẵn, và tin nhắn đầu tiên của họ sẽ mở một cuộc trò chuyện WhatsApp trong hộp thư đến của bạn. Nếu khách truy cập đã để lại số điện thoại mà họ dùng để nhắn tin (kèm mã quốc gia) trong biểu mẫu tiện ích, <span data-t="appName">DM Champ</span> sẽ tự động liên kết hai cuộc trò chuyện và AI trên WhatsApp sẽ biết về cuộc trò chuyện trên trang web, giống hệt như với **Tiếp tục trên WhatsApp**. Nếu không có số điện thoại nào được thu thập, hai cuộc trò chuyện sẽ không được liên kết, vì vậy hãy giữ tin nhắn soạn sẵn đủ cụ thể để tác nhân WhatsApp biết người đó đến từ đâu.
- **Yêu cầu xác nhận chính sách quyền riêng tư:** Tùy chọn yêu cầu khách truy cập chấp nhận chính sách quyền riêng tư của bạn trước khi trò chuyện và đặt URL mà chính sách đó trỏ đến.

> **Widget lưu trữ những gì trong trình duyệt của khách truy cập và tôi có cần đặt nó sau biểu ngữ cookie không?** Không có gì được lưu trữ chỉ bằng việc tải trang. Widget không ghi cookie và không sử dụng bộ nhớ trình duyệt cho đến khi khách truy cập chọn trò chuyện: gửi tin nhắn đầu tiên, điền vào biểu mẫu thông tin khách truy cập hoặc chấp nhận chính sách quyền riêng tư của bạn. Kể từ thời điểm đó, nó giữ một ID cuộc trò chuyện ngẫu nhiên và một bản sao của cuộc trò chuyện trong trình duyệt đó, dưới dạng bộ nhớ bên thứ nhất trên tên miền của riêng bạn, để cuộc trò chuyện vẫn còn đó khi họ quay lại. Nó không tải bất kỳ tập lệnh phân tích hoặc theo dõi nào và không đặt cookie của bên thứ ba. Vì không có gì được ghi lại cho đến khi khách truy cập yêu cầu trò chuyện, nên nó thuộc loại bộ nhớ hoàn toàn cần thiết cho dịch vụ mà khách truy cập đã yêu cầu, vì vậy bạn có thể tải nó mà không cần đặt nó sau biểu ngữ đồng ý. Nếu trang web của bạn vẫn sử dụng công cụ đồng ý, bạn hoàn toàn có thể đặt widget sau công cụ đó; cuộc trò chuyện sẽ chỉ xuất hiện khi khách truy cập chấp nhận.

::: master-only
<figure><img src="../.gitbook/assets/v2-chat-widget-lead-capture-privacy.png" alt="Phần Thu thập khách hàng tiềm năng & Quyền riêng tư của bảng Quản lý, hiển thị Thu thập thông tin khách truy cập, Tiêu đề biểu mẫu, Phụ đề biểu mẫu, Thu thập số điện thoại và Yêu cầu xác nhận chính sách quyền riêng tư"><figcaption><p>Phần Thu thập khách hàng tiềm năng & Quyền riêng tư. Khi bật Thu thập thông tin khách truy cập, khách truy cập sẽ thấy đây là một biểu mẫu nhỏ trước khi cuộc trò chuyện bắt đầu — được hiển thị từ phía khách truy cập ở xa hơn bên dưới trang này.</p></figcaption></figure>
:::

#### Kênh & Nhúng

- **Nút đính kèm:** Cho phép khách truy cập gửi hình ảnh và tệp trong cuộc trò chuyện.
- **Bộ chọn biểu tượng cảm xúc:** Thêm bộ chọn biểu tượng cảm xúc bên cạnh hộp tin nhắn.
- **Liên kết kênh:** Tùy chọn bao gồm các liên kết WhatsApp, Instagram hoặc Messenger để khách truy cập có thể tiếp tục cuộc trò chuyện trên nền tảng họ ưa thích. Mục này chỉ xuất hiện sau khi bạn đã kết nối số WhatsApp, Instagram hoặc Messenger.
- **Nút hành động:** Một hàng phím tắt ở đầu cuộc trò chuyện đưa khách truy cập đến một nơi nào đó thay vì vào cuộc trò chuyện — xem [Nút hành động](#action-buttons) bên dưới.
- **Danh sách trắng tên miền:** Hạn chế các trang web được phép nhúng tiện ích của bạn. Thêm các tên miền nơi bạn đã cài đặt nó (ví dụ: `example.com` hoặc `*.example.com`); để trống để cho phép bất kỳ tên miền nào.
- **Quốc gia bị chặn:** Ngăn tiện ích hiển thị với khách truy cập ở các quốc gia bạn không phục vụ. Khách truy cập có vị trí mạng ở quốc gia bạn chọn sẽ không bao giờ thấy tiện ích và mọi cuộc trò chuyện họ cố gắng bắt đầu đều bị từ chối. Để trống để cho phép tất cả mọi người. Xem [Ngăn chặn bot và tiêu hao tín dụng](#keeping-bots-and-credit-drain-out) bên dưới.
- **Điều hướng các cuộc trò chuyện này đến:** Chọn chiến dịch hoặc tác nhân sẽ xử lý các cuộc trò chuyện đến từ mã bạn sắp sao chép. Để ở chế độ **Mặc định tài khoản** để sử dụng định tuyến tiện ích trò chuyện thông thường của bạn. Xem [Gửi các trang khác nhau đến các chiến dịch khác nhau](#send-different-pages-to-different-campaigns) bên dưới.
- **Đoạn mã nhúng:** Chọn **Bong bóng nổi** hoặc **Nhúng** và sao chép mã cài đặt (xem bên dưới).
- **Liên kết demo khách hàng:** Dán bất kỳ địa chỉ trang web nào để nhận liên kết có thể chia sẻ, mở trang web đó với tiện ích của bạn chạy trên đó — không cần cài đặt gì ở phía họ. Xem [Hiển thị tiện ích trên trang web của người khác](#show-the-widget-on-someone-elses-website) bên dưới.

Ở cuối bảng, hành động **Delete chat widget** (Xóa tiện ích trò chuyện) sẽ xóa tiện ích khỏi trang web của bạn ngay lập tức — thao tác này không thể hoàn tác và khách truy cập sẽ không còn thấy bong bóng trò chuyện nữa.

#### Nút hành động

Một số khách truy cập không muốn trò chuyện. Họ muốn số điện thoại, địa chỉ hoặc email của bạn và họ muốn có được thông tin đó chỉ bằng một lần nhấn. Các nút hành động là một hàng phím tắt ở đầu bảng trò chuyện dành riêng cho mục đích đó.

Thêm tối đa sáu nút. Mỗi nút có một **nhãn** (từ ngữ trên nút) và một **đích đến**, và đích đến phụ thuộc vào hành động bạn chọn:

| Hành động | Khách truy cập nhận được gì | Những gì bạn cần điền |
| --- | --- | --- |
| **Gọi** | Trình quay số điện thoại của họ mở ra với số của bạn đã sẵn sàng | Số điện thoại của bạn, ví dụ: `+1 555 123 4567` |
| **Nhắn tin** | Ứng dụng nhắn tin của họ mở ra một tin nhắn mới gửi cho bạn | Số điện thoại của bạn |
| **WhatsApp** | WhatsApp mở ra một cuộc trò chuyện với bạn | Số WhatsApp của bạn, hoặc một liên kết `wa.me` bạn đã có |
| **Email** | Ứng dụng thư của họ mở ra một email mới gửi cho bạn | Địa chỉ email của bạn |
| **Chỉ đường** | Google Maps mở ra với vị trí của bạn | Địa chỉ của bạn, hoặc một liên kết bản đồ bạn đã có |
| **Liên kết** | Trang web mở ra trong một tab mới | Bất kỳ địa chỉ web đầy đủ nào bắt đầu bằng `https://` |

**Các nút này không sử dụng tín dụng.** Việc nhấn vào một nút không gửi tin nhắn và không bắt đầu cuộc trò chuyện — nó chỉ đưa khách truy cập đến nơi họ muốn. Chỉ một cuộc trò chuyện thực sự với tác nhân AI của bạn mới sử dụng tín dụng, giống như trước đây.

Một vài điều cần lưu ý:

- **Các nút vẫn hiển thị trong khi khách truy cập trò chuyện.** Ai đó có thể đặt hai câu hỏi và vẫn nhấn **Chỉ đường** sau đó mà không cần tải lại trang.
- **Nhãn của bạn được hiển thị chính xác như bạn đã viết.** Không giống như tin nhắn chào mừng và câu hỏi gợi ý, nhãn nút không được tự động dịch, vì vậy nếu bạn phục vụ khách truy cập bằng nhiều ngôn ngữ, hãy giữ cho nhãn ngắn gọn và dễ hiểu (hoặc viết chúng bằng ngôn ngữ chính của bạn).
- **Điền thông tin nút đúng cách nếu không nó sẽ không lưu.** Nếu số điện thoại, địa chỉ email hoặc liên kết không hợp lệ, bảng điều khiển sẽ thông báo và chặn **Lưu thay đổi** thay vì xuất bản một nút không có tác dụng gì trên trang web của bạn.
- **Chúng không phải là câu trả lời FAQ.** Các nút hành động chỉ gửi mọi người đến nơi khác; chúng không trả lời bằng văn bản soạn sẵn. Câu hỏi là công việc của tác nhân AI của bạn và nó sẽ trả lời từ cơ sở kiến thức của bạn. Nếu bạn muốn gợi ý những gì cần hỏi, hãy sử dụng **câu hỏi gợi ý** trong phần Giao diện.

::: master-only
<figure><img src="../.gitbook/assets/v2-chat-widget-action-buttons.png" alt="Phần nút Hành động của bảng Quản lý, với ba nút được thêm vào: Gọi điện có nhãn Gọi cho chúng tôi, Chỉ đường có nhãn Tìm chúng tôi, và WhatsApp"><figcaption><p>Ba nút hành động đang được thiết lập. Mỗi hàng là một hành động, văn bản trên nút và nơi nó sẽ dẫn đến. Nút Thêm sẽ thêm một nút khác, tối đa là sáu nút.</p></figcaption></figure>
:::

::: master-only
<figure><img src="../.gitbook/assets/v2-chat-widget-action-strip.png" alt="Tiện ích trò chuyện mở trên một trang web với một hàng gồm ba nút hành động ở trên cùng: Gọi cho chúng tôi, Tìm chúng tôi và WhatsApp"><figcaption><p>Những gì khách truy cập nhìn thấy. Các nút nằm phía trên cuộc trò chuyện và vẫn ở đó trong khi họ trò chuyện, vì vậy họ có thể nhấn vào một nút bất kỳ lúc nào.</p></figcaption></figure>
:::

#### Những gì bạn không thể tùy chỉnh

Bảng Manage (Quản lý) là toàn bộ các tùy chọn có sẵn. Cụ thể:

- **Không có CSS hoặc tệp kiểu tùy chỉnh.** Kiểu dáng là những gì mà các bộ chọn chủ đề, góc, phông chữ và màu sắc cung cấp — bạn không thể chèn CSS của riêng mình vào tiện ích và các quy tắc trên trang của bạn sẽ không ảnh hưởng đến bên trong tiện ích.
- **Không có văn bản giữ chỗ tùy chỉnh** trong hộp tin nhắn.
- **Không nhúng video** trong cuộc trò chuyện.
- **Không có bộ hẹn giờ tự động ẩn.** Bong bóng lời mời tự biến mất sau 20 giây và con số đó không thể thay đổi; cửa sổ trò chuyện đang mở không bao giờ tự đóng lại. Nếu bong bóng nằm đè lên nội dung trang của bạn, hãy di chuyển tiện ích bằng các khoảng bù **Vị trí** hoặc tắt bong bóng và chỉ giữ lại nút khởi chạy.

Nếu một trong những điều trên là rào cản đối với bạn, [nhúng nội dòng](#embed-inline-on-a-page-advanced) sẽ cung cấp cho bạn quyền kiểm soát tối đa: tiện ích nằm trong một vùng chứa trên trang của riêng bạn, nơi bạn tự định kích thước và vị trí.

::: master-only
<figure><img src="../.gitbook/assets/v2-chat-widget-channels-embed.png" alt="Phần Kênh & Nhúng của bảng Quản lý, hiển thị Danh sách trắng tên miền, Định tuyến các cuộc trò chuyện này tới, hộp mã đoạn mã Nhúng, trường liên kết demo khách hàng với địa chỉ trang web đã nhập và liên kết được tạo bên dưới, cùng vùng nguy hiểm Xóa tiện ích trò chuyện"><figcaption><p>Phần Kênh & Nhúng, với đoạn mã cài đặt sẵn sàng để sao chép, liên kết demo khách hàng bên dưới và hành động Xóa tiện ích trò chuyện ở cuối. Tại đây, trang web của khách hàng đã được nhập vào trường demo và liên kết có thể chia sẻ đã xuất hiện bên dưới nó. Cả đoạn mã và liên kết demo hiển thị ở đây đều dành riêng cho tài khoản này — hãy sao chép của riêng bạn từ bảng Quản lý, không phải những cái này.</p></figcaption></figure>
:::

### Ngăn chặn Bot và Tiêu hao Tín dụng

Mỗi câu trả lời của AI đều tốn tín dụng, vì vậy một tập lệnh (hoặc một người rảnh rỗi) mở hết cuộc trò chuyện này đến cuộc trò chuyện khác trên trang web của bạn là điều duy nhất mà một tiện ích công cộng phải chống lại. Tiện ích tự xử lý hầu hết các vấn đề này và hai cài đặt trên bảng Quản lý cho phép bạn thắt chặt hơn cho trang web của mình.

- **Danh sách trắng tên miền.** Chỉ các trang web bạn liệt kê mới có thể hiển thị tiện ích. Bất kỳ ai sao chép mã nhúng của bạn sang trang web khác sẽ không nhận được gì.
- **Quốc gia bị chặn.** Khách truy cập có vị trí mạng ở quốc gia bạn chặn sẽ không bao giờ thấy tiện ích và cuộc trò chuyện họ cố gắng bắt đầu sẽ bị từ chối. Vị trí được lấy từ kết nối của khách truy cập: ai đó sử dụng VPN sẽ hiển thị là quốc gia của VPN đó và khách truy cập không xác định được vị trí sẽ được cho phép thay vì bị chặn. Bản xem trước của riêng bạn trong ứng dụng vẫn hoạt động ngay cả khi bạn chặn quốc gia nơi bạn đang ở.
- **Cuộc trò chuyện mới trên mỗi kết nối.** Một kết nối (trên thực tế là một địa chỉ hộ gia đình hoặc văn phòng) có thể mở 20 cuộc trò chuyện mới mỗi ngày trên một tiện ích. Khách truy cập quay lại tiếp tục cuộc trò chuyện hiện có của họ không được tính, chỉ các cuộc trò chuyện hoàn toàn mới mới được tính, vì vậy một tập lệnh liên tục bắt đầu các cuộc trò chuyện mới để thu thập câu trả lời AI sẽ cạn kiệt sau 20 lần trong khi khách truy cập thực sự không bao giờ nhận ra. Nếu nhiều người chia sẻ một kết nối trên trang web của bạn (khuôn viên trường, trung tâm cuộc gọi), hãy tăng số lượng qua [REST API](../api/reference.md) với `max_new_chats_per_ip_daily`; `0` sẽ tắt kiểm tra này.
- **Giới hạn tích hợp.** Ngoài ra, mỗi phiên trình duyệt bị giới hạn số lượng tin nhắn có thể gửi mỗi phút và mỗi ngày, và tác nhân trả lời cuộc trò chuyện sẽ ngừng trả lời khách truy cập khi đạt đến **Số tin nhắn AI tối đa mỗi cuộc trò chuyện** được đặt trong **Giới hạn phản hồi**.

Không có điều nào trong số này xác định thiết bị hoặc con người: tiện ích không lưu trữ bất cứ thứ gì trong trình duyệt của khách truy cập cho đến khi họ chọn trò chuyện (xem ở trên) và không có dấu vân tay kỹ thuật số nào được thực hiện.

### Hướng dẫn Cài đặt

Để thêm tiện ích trò chuyện vào trang web của bạn, hãy thêm một dòng mã vào HTML của trang web.

1. Mở tệp HTML trên trang web của bạn bằng trình soạn thảo văn bản.
2. Tìm thẻ đóng `</body>` — thẻ này thường nằm ở cuối tệp.
3. Dán dòng mã này ngay trước thẻ `</body>` để phần còn lại của trang web được tải trước:

{% code overflow="wrap" %}
```html
<script src="https://api.dmchamp.com/v1/chat-widget/CONFIG_ID"></script>
```
{% endcode %}

4. Thay thế `CONFIG_ID` bằng mã định danh cấu hình duy nhất của bạn, được hiển thị trong phần **Channels & Embed** (Kênh & Nhúng) của bảng Quản lý (Manage panel). Mã định danh này dành riêng cho tài khoản của bạn và kết nối tiện ích với hệ thống nhắn tin của bạn.

Đoạn mã này sẽ không làm chậm trang web của bạn: nó là một trình tải nhỏ gọn và bản thân tiện ích sẽ được tải xuống trong nền mà không chặn trang. Nếu bạn vẫn muốn tiện ích chờ cho đến khi trang của bạn tải xong hoàn toàn, bạn có thể bao bọc cùng một URL như thế này:

{% code overflow="wrap" %}
```html
<script>
window.addEventListener('load', function () {
  var s = document.createElement('script');
  s.src = 'https://api.dmchamp.com/v1/chat-widget/CONFIG_ID';
  s.async = true;
  document.body.appendChild(s);
});
</script>
```
{% endcode %}

Và nếu điều bạn muốn trì hoãn là bong bóng lời mời nhỏ thay vì việc tải tiện ích, đó chính là độ trễ **Bong bóng bật lên chủ động** trong phần Hành vi ở trên — không cần mã.

Dưới đây là ví dụ hoàn chỉnh về cách tệp HTML của bạn sẽ trông như thế nào khi đã triển khai tiện ích chat:

{% code overflow="wrap" %}
```html
<!DOCTYPE html>
<html>
<head>
    <title>My Website</title>
</head>
<body>
    <!-- Your existing website content would be here -->

    <!-- Chat Widget Integration -->
    <script src="https://api.dmchamp.com/v1/chat-widget/CONFIG_ID"></script>
</body>
</html>
```
{% endcode %}

### Nhúng nội dòng trên trang (Nâng cao)

Nếu bạn muốn khung trò chuyện xuất hiện như một phần của trang web — ví dụ: bên trong phần "Liên hệ với chúng tôi", tab trợ giúp hoặc thanh bên — thay vì là một bong bóng nổi ở góc, hãy chuyển **Embed snippet** (Đoạn mã nhúng) sang **Inline** (Nội dòng) trong bảng Quản lý và sao chép đoạn mã nội dòng.

Nó trông như thế này:

{% code overflow="wrap" %}
```html
<div data-chat-widget="CONFIG_ID" style="width:100%;height:600px;"></div>
<script src="https://api.dmchamp.com/v1/chat-widget/embed.js" async></script>
```
{% endcode %}

`<div>` là điểm gắn kết — bảng trò chuyện sẽ hiển thị bên trong đó và lấp đầy kích thước của nó. Bạn có thể định kiểu cho div này theo bất kỳ cách nào bạn muốn (đặt chiều cao cố định, đặt nó vào trong một flex container, đặt nó vào một ô lưới, v.v.) và bảng trò chuyện sẽ tuân theo.

Bạn chỉ cần **một** thẻ `<script>` trên trang, ngay cả khi bạn đang nhúng nhiều tiện ích trò chuyện. Tập lệnh sẽ quét trang để tìm mọi `<div data-chat-widget="…">` và gắn một bảng trò chuyện vào mỗi thẻ đó.

Khi nào nên chọn nhúng nội dòng (inline) so với nổi (floating):

- **Bong bóng nổi** phù hợp cho nút "Cần trợ giúp?" luôn hiển thị trên toàn trang web.
- **Nhúng nội dòng** phù hợp khi trò chuyện cần nằm ở một vị trí cụ thể — trang hỗ trợ, thanh bên của cơ sở kiến thức, tab trợ giúp trong ứng dụng — và tạo cảm giác như một phần tự nhiên của trang đó.

Tiện ích nhúng nội dòng sử dụng lại cùng một cấu hình như bong bóng nổi (logo, tin nhắn chào mừng, thu thập thông tin khách hàng tiềm năng, câu hỏi bắt đầu, v.v.), vì vậy bạn không cần phải thiết lập bất cứ điều gì hai lần.

### Hiển thị tiện ích trên trang web của người khác

Bạn có thể hiển thị tiện ích trò chuyện của mình chạy trên một trang web mà bạn không kiểm soát — không cần mã, không cần quyền truy cập vào trang web của họ. Đây là cách nhanh nhất để cho khách hàng tiềm năng thấy trợ lý sẽ trông như thế nào trên các trang của chính họ.

1. Mở bảng Quản lý và cuộn đến **Kênh & Nhúng**.
2. Trong **Liên kết bản demo cho khách hàng**, nhập địa chỉ trang web (ví dụ: `www.theircompany.com`).
3. Nhấp vào **Sao chép** để sao chép liên kết hoặc **Mở** để tự mình xem trước.
4. Gửi liên kết cho bất kỳ ai bạn muốn hiển thị.

Việc mở liên kết sẽ tải trang web đó với tiện ích trò chuyện của bạn nổi bên trên, chính xác như cách nó hiển thị nếu được cài đặt. Bất kỳ ai có liên kết đều có thể mở nó — không cần đăng nhập gì cả.

Một vài điều cần lưu ý:

- **Các cuộc trò chuyện từ bản demo là thật.** Tin nhắn mà khách truy cập gửi trong bản demo sẽ đến hộp thư đến của bạn và được tác nhân của bạn trả lời, đồng thời chúng sử dụng tín dụng như bất kỳ cuộc trò chuyện nào khác.
- **Trang này không có thương hiệu.** Nó chỉ hiển thị trang web của họ và tiện ích của bạn, không có gì khác.
- **Một số trang web không thể được đóng khung.** Một số trang web (ngân hàng, nhà bán lẻ lớn, bất kỳ trang nào có cài đặt bảo mật nghiêm ngặt) chặn các trang khác hiển thị chúng. Khi điều đó xảy ra, liên kết vẫn hoạt động: nó hiển thị một cửa sổ trình duyệt giả lập trung lập thay vì trang web thực, với tiện ích của bạn vẫn hoạt động bên trên để bản demo vẫn thực hiện được chức năng của nó.
- **Nó không thay đổi trang web của họ.** Không có gì được cài đặt và không có gì bị sửa đổi — bản demo chỉ tồn tại bên trong liên kết đó.

{% hint style="info" %}
Liên kết bản demo luôn sử dụng định tuyến mặc định tài khoản của bạn, bất kể **Chuyển hướng các cuộc trò chuyện này đến** được đặt là gì. Nếu bạn muốn các cuộc trò chuyện demo được xử lý bởi một tác nhân cụ thể, trước tiên hãy đặt tác nhân đó làm mặc định cho tiện ích trò chuyện của bạn.
{% endhint %}

### Gửi các trang khác nhau đến các chiến dịch khác nhau

Theo mặc định, mọi cuộc trò chuyện đến qua tiện ích của bạn đều được xử lý bởi cùng một chiến dịch hoặc tác nhân. Bạn có thể ghi đè điều đó cho từng trang, để khách truy cập trên trang giá của bạn trò chuyện với chiến dịch bán hàng trong khi khách truy cập trên trang trợ giúp trò chuyện với tác nhân hỗ trợ của bạn — tất cả đều từ một tiện ích trò chuyện duy nhất.

Có hai cách để lấy mã:

- **Từ chiến dịch hoặc tác nhân.** Trên trang **Chiến dịch**, hãy mở menu **⋮** trên một chiến dịch và chọn **Thêm vào trang web**. Trên trang **Tác nhân**, hãy nhấp vào nút **&lt;/&gt;** trên hàng đó, hoặc mở tác nhân và đi tới tab **Điểm truy cập** của nó. Dù bằng cách nào, bạn cũng sẽ nhận được một đoạn mã sẵn sàng để dán, đã được trỏ đến chiến dịch hoặc tác nhân đó.

  Tab **Điểm truy cập** của tác nhân cũng có bảng **Tiện ích trò chuyện trên trang web** hiển thị số lượng cuộc trò chuyện trên trang web mà tác nhân đó đang xử lý. Các cuộc trò chuyện từ mã nhúng sẽ tiếp cận trực tiếp tác nhân, vì vậy bạn **không** cần tạo quy tắc điểm truy cập cho chúng — một tác nhân không có bất kỳ quy tắc nào vẫn sẽ trả lời mã nhúng của nó.

  **Thêm vào trang web** chỉ xuất hiện trên các chiến dịch đang hoạt động và được thiết lập để xử lý các cuộc trò chuyện đến. Một chiến dịch nháp chưa thể nhận khách truy cập, vì vậy tùy chọn này sẽ bị ẩn cho đến khi bạn xuất bản chiến dịch đó. Trên trang Đại lý, tùy chọn này xuất hiện trên các đại lý đang hoạt động. Một đại lý bị tạm dừng sẽ nhận được cuộc trò chuyện nhưng không bao giờ trả lời, vì vậy tùy chọn này sẽ bị ẩn cho đến khi bạn bật lại. Không có kênh nào cần thiết lập cho đại lý — một đại lý có thể nhận cuộc trò chuyện từ bất kỳ kênh nào.
- **Từ cài đặt tiện ích.** Trong **Cài đặt → Kênh → Quản lý** trên tiện ích trò chuyện của bạn, hãy đặt **Chuyển các cuộc trò chuyện này đến** và sao chép đoạn mã bên dưới. Việc thay đổi menu thả xuống sẽ viết lại đoạn mã đó.

Đoạn mã nổi mang thông tin đích trong địa chỉ:

{% code overflow="wrap" %}
```html
<script src="https://api.dmchamp.com/v1/chat-widget/CONFIG_ID?campaign=CAMPAIGN_ID"></script>
```
{% endcode %}

Đoạn mã nhúng trực tiếp mang thông tin đó trên `<div>` thay vào đó, vì vậy một trang có thể chứa nhiều cuộc trò chuyện đi đến các nơi khác nhau:

{% code overflow="wrap" %}
```html
<div data-chat-widget="CONFIG_ID" data-campaign="CAMPAIGN_ID" style="width:100%;height:600px;"></div>
<script src="https://api.dmchamp.com/v1/chat-widget/embed.js" async></script>
```
{% endcode %}

Đối với một tác nhân, cách diễn đạt sẽ thay đổi thành `?agent=AGENT_ID` hoặc `data-agent="AGENT_ID"`.

Một vài điều cần lưu ý:

- Sử dụng nút sao chép thay vì tự nhập ID. Nếu ID không khớp với chiến dịch hoặc tác nhân trong tài khoản của bạn, cuộc trò chuyện vẫn hoạt động nhưng sẽ quay lại định tuyến mặc định của bạn.
- Người đang trong cuộc trò chuyện sẽ tiếp tục với người mà họ đã bắt đầu, ngay cả khi sau đó họ truy cập vào một trang trỏ đến nơi khác. Điều này giúp cuộc trò chuyện không bị thay đổi tính cách giữa chừng.
- Đích đến cụ thể cho từng trang sẽ được ưu tiên hơn mặc định tài khoản và các từ khóa kích hoạt của bạn.

### Cho Widget biết khách truy cập là ai (Nâng cao)

Nếu bạn đặt widget trò chuyện trong khu vực thành viên, cổng thông tin khách hàng hoặc ứng dụng nơi mọi người đã đăng nhập, trang web của bạn đã biết họ là ai. Bạn có thể chuyển thông tin đó cho widget để khách truy cập không bị hỏi lại những chi tiết họ đã cung cấp trước đó, đồng thời để AI của bạn có thể sử dụng những gì bạn đã biết về họ.

Thêm một khối cài đặt nhỏ **trước** tập lệnh widget:

{% code overflow="wrap" %}
```html
<script>
  window.chatWidgetSettings = {
    visitor: {
      id: "12345",
      name: "Maria",
      email: "maria@example.com",
      phone: "+391234567890"
    },
    data: {
      plan: "Professional",
      customer_since: "2024",
      last_order: "A-2291"
    }
  };
</script>
<script src="https://api.dmchamp.com/v1/chat-widget/CONFIG_ID"></script>
```
{% endcode %}

Trang của bạn nên điền các giá trị đó ở phía máy chủ, từ bất kỳ ai đã đăng nhập.

Hai điều sẽ xảy ra:

- **Biểu mẫu "Trước khi bắt đầu..." sẽ bị bỏ qua.** Với tên và email được cung cấp, khách truy cập sẽ đi thẳng vào cuộc trò chuyện và các chi tiết đó được lưu vào liên hệ của họ chính xác như thể họ đã tự nhập.
- **Mọi thứ trong `data` đều được chuyển cho AI của bạn.** Bất cứ điều gì bạn đặt ở đó — gói dịch vụ, số đơn hàng, ngày gia hạn, số dư tín dụng, số lượng chỗ ngồi họ có — đều trở thành một phần thông tin mà AI biết về người đó, vì vậy nó có thể trả lời "khi nào gói của tôi gia hạn?" mà không cần yêu cầu họ giải thích họ là ai trước. Hãy sử dụng bất kỳ tên trường nào có ý nghĩa với bạn; chúng sẽ xuất hiện trên liên hệ trong phần Trường tùy chỉnh (Custom Fields). Tối đa 20 giá trị, được gửi mới với mỗi tin nhắn, vì vậy nếu gói dịch vụ thay đổi giữa cuộc trò chuyện, AI sẽ thấy thông tin mới.

Đối với các nhúng nội dòng (inline embeds), bạn có thể đặt cùng thông tin đó trên `<div>`, điều này rất tiện lợi khi một trang chứa nhiều cuộc trò chuyện:

{% code overflow="wrap" %}
```html
<div data-chat-widget="CONFIG_ID"
     data-visitor-name="Maria"
     data-visitor-email="maria@example.com"
     data-visitor-data='{"plan":"Professional"}'
     style="width:100%;height:600px;"></div>
<script src="https://api.dmchamp.com/v1/chat-widget/embed.js" async></script>
```
{% endcode %}

Nếu trang web của bạn chỉ biết khách truy cập là ai sau khi trang đã tải xong — ví dụ như ứng dụng một trang (single-page app) nơi việc đăng nhập diễn ra mà không cần tải lại trang — hãy gọi lệnh này bất cứ khi nào bạn có thông tin chi tiết và widget sẽ tự cập nhật:

{% code overflow="wrap" %}
```html
<script>
  window.chatWidget.setVisitor({
    visitor: { id: "12345", name: "Maria", email: "maria@example.com" },
    data: { plan: "Professional" }
  });
</script>
```
{% endcode %}

Một vài điều cần lưu ý:

- Nếu hai người khác nhau đăng nhập trên cùng một máy tính, người thứ hai sẽ bắt đầu một cuộc trò chuyện mới thay vì nhìn thấy cuộc trò chuyện của người thứ nhất. Tiện ích sẽ nhận thấy sự thay đổi người dùng và tự đặt lại.
- Về bản chất, điều này phục vụ mục đích ngữ cảnh, không phải để đăng nhập cho ai đó. Các cuộc trò chuyện vẫn được giữ riêng biệt như trước đây, vì vậy việc truyền `id` không cho phép bất kỳ ai mở cuộc trò chuyện của người khác và người dùng sử dụng thiết bị hoặc trình duyệt khác sẽ bắt đầu một cuộc trò chuyện mới ở đó. Để tiếp tục cuộc trò chuyện trên các thiết bị, hãy đăng nhập `id` như được mô tả tiếp theo.
- Đây là tùy chọn. Một tiện ích trên trang công cộng thông thường không cần bất kỳ điều này và hoạt động chính xác như trước.

#### Tiếp tục cùng một cuộc trò chuyện trên mọi thiết bị (ID khách truy cập đã đăng nhập)

Nếu khách hàng của bạn có tài khoản, bạn có thể làm cho cuộc trò chuyện của họ theo chân họ: đăng nhập trên điện thoại, tiếp tục trên máy tính xách tay, và đó vẫn là cùng một cuộc trò chuyện với cùng một liên hệ trong hộp thư đến của bạn, và AI vẫn biết mọi thứ đã được trao đổi. Để làm được điều đó, <span data-t="appName">DM Champ</span> cần bằng chứng rằng khách truy cập thực sự là người mà trang của bạn xác nhận, nếu không bất kỳ ai cũng có thể nhập số khách hàng vào trình duyệt của họ và đọc cuộc trò chuyện của khách hàng đó. Bằng chứng là một chữ ký bạn tính toán trên máy chủ của mình.

1. Trong bảng **Manage** (Quản lý) của tiện ích, tại mục **Channels & Embed** (Kênh & Nhúng), hãy tìm **Signed-in visitors** (Khách truy cập đã đăng nhập) và nhấp vào **Generate secret** (Tạo bí mật). Sao chép mã bí mật định danh. Chỉ lưu giữ nó trên máy chủ của bạn; không bao giờ đặt nó trực tiếp trên trang.

::: master-only
<figure><img src="../.gitbook/assets/v2-chat-widget-signed-visitors.png" alt="Dòng Khách truy cập đã đăng nhập trong bảng Quản lý của tiện ích trò chuyện, hiển thị mã bí mật định danh bị ẩn với các nút Hiển thị, Sao chép và Tạo lại, cùng đoạn mã cài đặt với các trường id và hash bên dưới"><figcaption><p>Dòng Khách truy cập đã đăng nhập trong mục Kênh & Nhúng. Mã bí mật sẽ bị ẩn cho đến khi bạn nhấp vào Hiển thị; đoạn mã bên dưới cho thấy nơi đặt id và chữ ký của nó trên trang của bạn.</p></figcaption></figure>
:::
2. Khi máy chủ của bạn hiển thị trang cho khách hàng đã đăng nhập, hãy tính toán HMAC-SHA256 của ID khách hàng đó bằng cách sử dụng mã bí mật, dưới dạng chuỗi thập lục phân viết thường:

{% code overflow="wrap" %}
```js
// Node.js
const hash = require("crypto").createHmac("sha256", IDENTITY_SECRET).update(customerId).digest("hex");
```
{% endcode %}

{% code overflow="wrap" %}
```php
// PHP
$hash = hash_hmac('sha256', $customerId, IDENTITY_SECRET);
```
{% endcode %}

{% code overflow="wrap" %}
```python
# Python
import hmac, hashlib
hash = hmac.new(IDENTITY_SECRET.encode(), customer_id.encode(), hashlib.sha256).hexdigest()
```
{% endcode %}

3. Đặt ID và mã băm vào khối cài đặt, bên cạnh tên và email mà bạn đã truyền:

{% code overflow="wrap" %}
```html
<script>
  window.chatWidgetSettings = {
    visitor: {
      id: "12345",
      hash: "3f2a…e91c",
      name: "Maria",
      email: "maria@example.com"
    }
  };
</script>
<script src="https://api.dmchamp.com/v1/chat-widget/CONFIG_ID"></script>
```
{% endcode %}

Nhúng nội dòng (inline embed) nhận cùng giá trị với `data-visitor-hash` trên `<div>`, và `window.chatWidget.setVisitor({ visitor: { id, hash } })` hoạt động cho các ứng dụng đăng nhập người dùng mà không cần tải lại trang.

Điều gì xảy ra khi chữ ký được xác thực:

- Cuộc trò chuyện của khách hàng được lưu trữ theo tài khoản của họ thay vì theo trình duyệt, vì vậy đó là cùng một cuộc trò chuyện trên mọi thiết bị và mọi trình duyệt mà họ đăng nhập, và là một liên hệ duy nhất trong hộp thư đến của bạn.
- Các tin nhắn trước đó của họ sẽ tải trên thiết bị mới và AI sẽ tiếp tục từ nơi họ đã dừng lại.
- Nếu chữ ký không chính xác, tiện ích sẽ âm thầm hoạt động như trước đây, dưới dạng trò chuyện thông thường theo trình duyệt và in lý do trong bảng điều khiển trình duyệt để nhà phát triển có thể phát hiện. Khách truy cập của bạn sẽ không bao giờ thấy lỗi.
- ID được so sánh chính xác như bạn đã gửi, vì vậy hãy ký cùng giá trị mà bạn truyền dưới dạng `id` và sử dụng cùng một ID cho cùng một người ở mọi nơi.

Hai điều cần biết:

- **Tạo lại** trong bảng Quản lý sẽ cung cấp cho bạn một bí mật mới. Các trang vẫn ký bằng bí mật cũ sẽ quay lại trò chuyện bình thường theo trình duyệt cho đến khi máy chủ của bạn sử dụng bí mật mới. Các cuộc trò chuyện hiện có vẫn được giữ nguyên; chúng được gắn với ID của khách hàng, không phải với bí mật.
- Một cuộc trò chuyện mà ai đó đã có trước khi đăng nhập, với tư cách là khách truy cập ẩn danh, vẫn là một cuộc trò chuyện riêng biệt. Cuộc trò chuyện dựa trên tài khoản bắt đầu với tin nhắn đầu tiên họ gửi khi đã đăng nhập.

### Thay đổi cài đặt Widget từ mã của riêng bạn (API)

Mọi thứ trên bảng **Quản lý** (Manage) của widget cũng có thể được thay đổi thông qua [REST API](../api/reference.md), điều này rất hữu ích nếu bạn quản lý nhiều trang web hoặc muốn nút đính kèm tự động tắt cho khách hàng. Gửi một `PATCH` đến `https://api.dmchamp.com/v1/chat-widget-configs/CONFIG_ID` cùng với khóa API của bạn và chỉ các trường bạn muốn thay đổi — ví dụ: `{"show_upload_button": false}` ẩn nút đính kèm, `{"show_emoji_button": false}` ẩn bộ chọn biểu tượng cảm xúc và `{"launcher_icon": "chat-dots"}` thay đổi biểu tượng trình khởi chạy. `CONFIG_ID` là cùng một định danh như trong tập lệnh nhúng của bạn. Danh sách đầy đủ các trường được chấp nhận (tên, tin nhắn chào mừng, màu sắc, biểu tượng trình khởi chạy, tên miền được phép, biểu mẫu thông tin khách truy cập, thông báo quyền riêng tư, chủ đề, góc và kiểu phông chữ) có trong [Tài liệu tham khảo API](../api/reference.md) tại mục **Chat Widget**. Các trang web sẽ cập nhật thay đổi vào lần tải trang tiếp theo.

### Những gì sẽ xảy ra sau khi cài đặt

Sau khi bạn đã thêm tập lệnh vào trang web của mình, tiện ích trò chuyện sẽ tự động tạo một nút trò chuyện ở góc trang web của bạn (mặc định là góc dưới bên phải). Tiện ích vẫn ở vị trí cố định khi người dùng cuộn qua các trang của bạn, đảm bảo rằng nó luôn có thể truy cập được.

::: master-only
<figure><img src="../.gitbook/assets/v2-chat-widget-live-bubble-closed.png" alt="Bong bóng trò chuyện nổi ở góc dưới bên phải của một trang web trực tiếp, trước khi khách truy cập nhấp vào nó"><figcaption><p>Đây là những gì khách truy cập thấy trên trang web của bạn trước khi họ mở trò chuyện — chỉ là nút nổi, được định vị theo cài đặt Giao diện của bạn.</p></figcaption></figure>
:::

Khi khách truy cập nhấp vào nút này, nó sẽ mở rộng thành một cửa sổ trò chuyện đầy đủ, nơi họ có thể bắt đầu cuộc trò chuyện, hiển thị tin nhắn mở đầu của bạn. Nếu Thu thập thông tin khách truy cập được bật, một biểu mẫu nhỏ sẽ xuất hiện trước tiên để yêu cầu tên và email (và tùy chọn là số điện thoại) của họ trước khi họ có thể nhập tin nhắn.

::: master-only
<figure><img src="../.gitbook/assets/v2-chat-widget-live-panel-open.png" alt="Bảng trò chuyện đã mở hiển thị tin nhắn mở đầu ở nền và biểu mẫu thu thập khách hàng tiềm năng Trước khi chúng ta bắt đầu (Tên, Email, Điện thoại) ở phía trước"><figcaption><p>Bảng trò chuyện đã mở. Ở đây Thu thập thông tin khách truy cập đang bật, vì vậy biểu mẫu "Trước khi chúng ta bắt đầu..." xuất hiện trên cuộc trò chuyện — khách truy cập điền vào một lần, sau đó trò chuyện bình thường.</p></figcaption></figure>
:::

Giao diện trò chuyện tự động thích ứng với các kích thước màn hình khác nhau, vì vậy nó hoạt động liền mạch trên cả máy tính để bàn và thiết bị di động.

### Kiểm tra việc triển khai của bạn

Sau khi thêm tiện ích vào trang web của bạn, hãy kiểm tra xem nó có hoạt động không:

1. Mở trang web của bạn trong trình duyệt.
2. Nhấp vào nút trò chuyện để mở tiện ích.
3. Gửi tin nhắn kiểm tra và xác nhận rằng bạn nhận được phản hồi.
4. Lặp lại trên một thiết bị hoặc trình duyệt khác để xác nhận nó hoạt động ở mọi nơi.

::: master-only
<figure><img src="../.gitbook/assets/v2-chat-widget-live-conversation.png" alt="Bảng trò chuyện sau khi khách truy cập gửi tin nhắn thử nghiệm, hiển thị bong bóng tin nhắn gửi đi của họ bên dưới tin nhắn mở đầu"><figcaption><p>Sau khi gửi tin nhắn, nó xuất hiện dưới dạng bong bóng gửi đi trong chuỗi — AI hoặc nhóm của bạn trả lời trong cùng một cửa sổ.</p></figcaption></figure>
:::

Nếu tiện ích trò chuyện không xuất hiện trên trang web của bạn, hãy kiểm tra các mục sau:

1. Đảm bảo bạn đã thay thế `CONFIG_ID` bằng mã định danh cấu hình thực tế của mình.
2. Đảm bảo thẻ tập lệnh được đặt trước thẻ đóng `</body>`.
3. Kiểm tra mã xem có lỗi đánh máy không.

### Phía sau Tường lửa Doanh nghiệp

Nếu tiện ích tải được cho công chúng nhưng không tải được cho nhân viên trong mạng văn phòng, thì gần như chắc chắn mạng đó đang chặn tên miền mà tiện ích tải từ đó. Hãy yêu cầu nhóm CNTT của bạn cho phép truy cập qua HTTPS thông thường trên cổng 443:

- **Tên miền trong đoạn mã nhúng của bạn** — địa chỉ trong dòng `<script src="...">` mà bạn đã sao chép từ bảng Manage.
- **`api.youraiconnector.com`** — tiện ích cũng gửi tin nhắn của nó đến đây.

Không cần mở thêm bất cứ thứ gì khác: không cần thêm cổng và không cần quy tắc gửi đến. Nếu tiện ích vẫn không xuất hiện sau đó, hãy mở bảng điều khiển dành cho nhà phát triển của trình duyệt trên trang đó và gửi cho chúng tôi những gì nó báo cáo — một yêu cầu bị chặn sẽ nêu tên miền bị từ chối, đó thường là câu trả lời đầy đủ.
