Chuyển tới nội dung chính

Nhúng vào trang web

Đưa khung chat của ứng dụng lên website mà không cần tự dựng giao diện. Có hai kiểu nhúng:

Kiểu nhúngTrải nghiệmPhù hợp khi
Bong bóng chatNút tròn nổi ở góc màn hình, bấm để mở khung chatWebsite đã có nội dung, muốn thêm trợ lý hỗ trợ
Trang toàn màn hìnhKhung chat chiếm trọn trang, mở qua đường dẫn hoặc iframeTrang chuyên để trò chuyện, hoặc nhúng vào một khu vực riêng

Cả hai đều dùng chung access token của ứng dụng và URL nền tảng (PLATFORM_URL, xem Môi trường).


1. Chuẩn bị

Lấy access token và URL nền tảng

Vào Ứng dụng → chọn ứng dụng chat → Nhúng vào trang web. Hệ thống hiển thị sẵn đoạn mã kèm access token (token) và URL nền tảng (baseUrl).

Môi trường dev

Trên môi trường Development, Simplize sẽ cung cấp sẵn access token và URL nền tảng cho bạn. Access token là định danh công khai, không phải khóa bí mật.

Publish và bật chia sẻ ứng dụng

Đảm bảo ứng dụng đã publishbật chia sẻ. Nếu chưa, khung chat sẽ báo lỗi 404 khi tải.


2. Bong bóng chat

Dán đoạn mã sau vào ngay trước thẻ </body> của trang. Thay APP_ACCESS_TOKENhttps://app.simplize.dev bằng giá trị của bạn.

<script>
window.simplizeChatbotConfig = {
token: 'APP_ACCESS_TOKEN',
baseUrl: 'https://app.simplize.dev',
};
</script>
<script src="https://app.simplize.dev/embed.js" id="APP_ACCESS_TOKEN" defer></script>
Dán đúng ở hai chỗ

Access token xuất hiện hai lần: trong token và trong thuộc tính id của thẻ <script> tải embed.js. Hai giá trị này phải giống nhau, nếu không bong bóng sẽ không hiện.

Tùy chọn cấu hình

Thêm các trường sau vào window.simplizeChatbotConfig khi cần:

TrườngKiểuMô tả
tokenstringBắt buộc. Access token của ứng dụng.
baseUrlstringBắt buộc. URL nền tảng (PLATFORM_URL).
clientIdstringBật đăng nhập SSO (xem mục 4).
systemVariablesobjectBiến hệ thống: user_id, conversation_id (nếu có, phải là UUID hợp lệ).
userVariablesobjectThông tin hiển thị: name, avatar_url.
<script>
window.simplizeChatbotConfig = {
token: 'APP_ACCESS_TOKEN',
baseUrl: 'https://app.simplize.dev',
systemVariables: {
user_id: '45',
},
userVariables: {
name: 'Nguyễn Văn A',
avatar_url: 'https://example.com/avatar.png',
},
};
</script>
<script src="https://app.simplize.dev/embed.js" id="APP_ACCESS_TOKEN" defer></script>

3. Trang chat toàn màn hình

Có hai đường dẫn, chọn theo mục đích:

Đường dẫnDùng cho
{PLATFORM_URL}/chat/{token}Trang chat độc lập — mở qua liên kết hoặc tab mới.
{PLATFORM_URL}/chatbot/{token}Khung chat để nhúng iframe vào trang của bạn.

Mở khung chat độc lập bằng đường dẫn:

https://app.simplize.dev/chat/APP_ACCESS_TOKEN

Dùng làm liên kết trong menu, nút bấm, hoặc mở ở tab mới.


4. Tự động đăng nhập người dùng (SSO)

Mặc định khung chat mở ở chế độ ẩn danh. Nếu người dùng đã đăng nhập trên website của bạn, bạn có thể cho họ vào chat với đúng danh tính mà không phải đăng nhập lại.

Cách làm: backend của bạn ký một identity assertion (JWT ngắn hạn) rồi truyền cho khung chat. Khung chat tự đổi assertion lấy phiên đăng nhập — bạn không phải gọi API xác thực nào của nền tảng.

Cần làm trước ở backend

SSO cần một endpoint ở backend của bạn để phát assertion (ví dụ /agent-assertion) và một clientId. Cách tạo connection, ký assertion và bảo mật xem tại Tích hợp đăng nhập (SSO). Trang này chỉ hướng dẫn phần truyền assertion vào khung chat.

Quyết định luồng nào

Endpoint phát assertion phải yêu cầu đăng nhập: nếu người dùng đã đăng nhập, nó trả { "jwt": "..." }; nếu chưa, nó trả HTTP 401. Dựa vào đó, xử lý như sau:

Trạng thái người dùngBạn làm gìKết quả trong khung chat
Đã đăng nhập (endpoint trả jwt)Truyền assertion vào khung chatMở chat với đúng danh tính người dùng
Chưa đăng nhập (endpoint trả 401)Không truyền assertion (hoặc truyền null)Chat mở ẩn danh, hoặc bạn tự hiện form đăng nhập của mình
Khi nào phải bắt đăng nhập

Nếu ứng dụng được cấu hình bắt buộc đăng nhập, khung chat sẽ không mở ở chế độ ẩn danh — lúc này với người dùng chưa đăng nhập, bạn nên chuyển hướng sang trang đăng nhập của mình thay vì nhúng chat.

Mã nhúng theo từng cách

Các đoạn dưới đây là trang HTML hoàn chỉnh, dán chạy được ngay (chỉ cần thay APP_ACCESS_TOKEN, YOUR_CLIENT_ID, và đường dẫn endpoint phát assertion của bạn).

<!doctype html>
<html lang="vi">
<body>
<!-- Nội dung website của bạn ... -->

<script>
window.simplizeChatbotConfig = {
token: 'APP_ACCESS_TOKEN',
baseUrl: 'https://app.simplize.dev',
clientId: 'YOUR_CLIENT_ID',
};
</script>
<script src="https://app.simplize.dev/embed.js" id="APP_ACCESS_TOKEN" defer></script>

<script>
// Hỏi backend của bạn xem người dùng đã đăng nhập chưa và lấy assertion.
fetch('/your-backend/agent-assertion', { credentials: 'include' })
.then(function (res) {
if (res.status === 401) return null; // Chưa đăng nhập
return res.json();
})
.then(function (data) {
if (data && data.jwt) {
// Đã đăng nhập -> đưa danh tính vào khung chat
window.simplizeChatbot.setIdentityToken(data.jwt);
}
// Chưa đăng nhập -> không làm gì: khung chat chạy ẩn danh.
// Nếu muốn bắt đăng nhập, thay bằng:
// window.location.href = '/login?redirect=' + encodeURIComponent(location.href);
});
</script>
</body>
</html>

5. Xử lý sự cố

Hiện tượngNguyên nhân thường gặpCách xử lý
Bong bóng không xuất hiệnAccess token trong token và thuộc tính id không khớpĐặt cùng một access token ở cả hai vị trí
Khung chat báo 404Ứng dụng chưa publish hoặc chưa bật chia sẻPublish và bật chia sẻ ứng dụng
Không kết nối đượcbaseUrl không trỏ đúng URL nền tảngKiểm tra lại URL nền tảng ở trang Nhúng vào trang web
Vẫn vào chat ẩn danh dù đã đăng nhậpEndpoint phát assertion trả 401, hoặc gọi setIdentityToken quá muộnKiểm tra endpoint có nhận đúng cookie đăng nhập (credentials: 'include') và phản hồi nhanh
Chat báo cần đăng nhậpỨng dụng bắt buộc đăng nhập nhưng chưa truyền assertionTruyền assertion, hoặc chuyển hướng người dùng sang trang đăng nhập của bạn

Cần cấu hình connection và cách ký assertion? Xem Tích hợp đăng nhập (SSO).