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

Nhúng vào trang web

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

Kiểu nhúngTrải nghiệmĐịnh danh công khai cần có
Bong bóng chat AINút tròn nổi ở góc màn hình, bấm để mở trợ lý AIAccess token của ứng dụng
Trang chat AI toàn màn hìnhKhung chat chiếm trọn trang, mở qua đường dẫn hoặc iframeAccess token của ứng dụng
Live chatBong bóng ở góc màn hình nối tới tư vấn viên (và chatbot kịch bản)Channel ID của kênh

Cả ba đều dùng URL nền tảng (PLATFORM_URL, xem Môi trường). Mọi đường dẫn nhúng nằm dưới {PLATFORM_URL}/chat/….


1. Chuẩn bị​

Lấy định danh công khai

  • Chat AI: Ứng dụng → chọn ứng dụng → Nhúng vào trang web — Portal hiển thị sẵn đoạn mã kèm access token (token) và baseUrl.
  • Live chat: Live chat → Kênh → tab Nhúng — đoạn mã kèm channelId và baseUrl.
Môi trường dev

Trên môi trường Development, Simplize cung cấp sẵn access token / channel ID và URL nền tảng. Đây là định danh công khai, không phải khoá bí mật.

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

Ứng dụng chat AI phải đã publish và bật chia sẻ, nếu không khung chat báo 404. Kênh live chat phải đang bật.


2. Bong bóng chat AI​

Dán đoạn mã sau vào ngay trước thẻ </body>. Thay APP_ACCESS_TOKEN và https://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/chat/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ị phải giống nhau, nếu không bong bóng không hiện.

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

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).
clientIdstringclient_id của Ứng dụng OAuth — bật đăng nhập SSO (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.
draggablebooleanCho kéo khung chat.
<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/chat/embed.js" id="APP_ACCESS_TOKEN" defer></script>

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

Đườ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}/chat/embed/chatbot/{token}Khung chat để nhúng iframe vào trang của bạ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. Người đã đăng nhập trên nền tảng (khách hàng) vào đúng danh tính; còn lại vào ẩn danh.


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, cho họ vào chat với đúng danh tính mà không đăng nhập lại.

Cách làm: backend của bạn ký một identity assertion (JWT RFC 7523, ngắn hạn) rồi truyền { jwt, clientId } cho khung chat. Khung chat tự đổi assertion lấy phiên ở POST {PLATFORM_URL}/api/oauth2/token — 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

Một endpoint phát assertion (ví dụ /agent-assertion) và clientId của Ứng dụng OAuth. Cách tạo ứng dụng OAuth, 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: người đã đăng nhập nhận { "jwt": "...", "clientId": "..." }; chưa đăng nhập nhận HTTP 401.

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
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 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 chat AI được cấu hình bắt buộc đăng nhập, khung chat không mở ẩn danh — với người chưa đăng nhập, hãy chuyển hướng sang trang đăng nhập của bạn. Kênh live chat bắt đăng nhập sẽ phát sự kiện simplize-livechat:sign-in-required trên window để bạn hiện form đăng nhập.

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

Các đoạn dưới đây là trang HTML hoàn chỉnh — thay APP_ACCESS_TOKEN / CHANNEL_ID, 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/chat/embed.js" id="APP_ACCESS_TOKEN" defer></script>

<script>
// embed.js tải với `defer` nên chỉ sẵn sàng từ DOMContentLoaded.
window.addEventListener('DOMContentLoaded', function () {
// Hỏi backend của bạn: người dùng đã đăng nhập chưa, 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 assertion vào khung chat; khung chat tự đổi lấy phiên
window.simplizeChatbot.setIdentityToken(data.jwt);
}
// Chưa đăng nhập -> không làm gì: khung chat chạy ẩn danh.
// Muốn bắt đăng nhập:
// window.location.href = '/login?redirect=' + encodeURIComponent(location.href);
});
});
</script>
</body>
</html>

setIdentityToken gọi được bất kỳ lúc nào sau khi embed.js đã tải (khung chat chưa mở thì nó đợi); gọi setIdentityToken(null) để về ẩn danh.

Không đưa assertion lên URL

Đừng dựng liên kết kiểu …/chat/{token}?token=<assertion> — assertion trên URL lọt vào lịch sử trình duyệt, log proxy và header Referer. Dùng setIdentityToken / postMessage / identity như trên.


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; hoặc tải /embed.js thay vì /chat/embed.jsĐặt cùng một access token ở hai vị trí; đúng đường dẫn {PLATFORM_URL}/chat/embed.js
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 baseUrl ở 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 assertion bị nền tảng từ chối (invalid_grant: sai aud, hết hạn, jti dùng lại)Kiểm tra endpoint nhận đúng cookie (credentials: 'include'); ký assertion đúng claim theo trang SSO
Chat báo cần đăng nhậpỨng dụng / kênh bắt buộc đăng nhập nhưng chưa truyền assertionTruyền assertion, hoặc chuyển hướng sang trang đăng nhập của bạn
Khung chat nhúng bị chặn (trang trắng)Website của bạn chưa được thêm vào danh sách origin cho phép nhúngBáo Simplize thêm origin website của bạn

Cần tạo Ứng dụng OAuth và cách ký assertion? Xem Tích hợp đăng nhập (SSO).