Website 進階使用指南
Website 通道支援基於 LiveDesk Widget SDK 介面,或採用 iframe 方式進行更多設定,以滿足使用者需求。
iframe 相關設定
略過歡迎畫面
支援使用者在 iframe 模式下透過新增參數 action=autoStart,略過氣泡開啟時的歡迎畫面,直接進入聊天框進行對話。
<iframe
class="livedesk-widget-iframe"
src="https://livedesk-stg.engagelab.com/console/livedesk/widget/?website_token=iTMtGDnzR1tccf3fiikLjL71&action=autoStart" // website_token 填寫建立通道後產生的對應值
title="Live desk"
allow="camera;microphone"
/>
<iframe
class="livedesk-widget-iframe"
src="https://livedesk-stg.engagelab.com/console/livedesk/widget/?website_token=iTMtGDnzR1tccf3fiikLjL71&action=autoStart" // website_token 填寫建立通道後產生的對應值
title="Live desk"
allow="camera;microphone"
/>
此代碼塊在浮窗中顯示
設定 User ID
提供兩種方式進行設定:
方法一:
Array.from(document.getElementsByTagName('iframe'))
.filter((iframe) => iframe.src && iframe.src.includes('livedesk'))
.forEach((iframe) =>
iframe.contentWindow?.postMessage(
'livedesk-widget:' +
JSON.stringify({
event: 'set-user',
identifier: 'your_user_id',
user: { name: '顯示名稱', email: 'user@example.com' },
}),
'*',
),
);
Array.from(document.getElementsByTagName('iframe'))
.filter((iframe) => iframe.src && iframe.src.includes('livedesk'))
.forEach((iframe) =>
iframe.contentWindow?.postMessage(
'livedesk-widget:' +
JSON.stringify({
event: 'set-user',
identifier: 'your_user_id',
user: { name: '顯示名稱', email: 'user@example.com' },
}),
'*',
),
);
此代碼塊在浮窗中顯示
方法二:在 iframe 中新增參數:user_id=xxxxx
<iframe
class="livedesk-widget-iframe"
src="https://livedesk-stg.engagelab.com/console/livedesk/widget/?website_token=Etsz4XtvqKi7iqbHf8Ma6ZLR&action=autoStart&user_id=5002"
title="LiveDesk"
allow="camera;microphone"
/>
<iframe
class="livedesk-widget-iframe"
src="https://livedesk-stg.engagelab.com/console/livedesk/widget/?website_token=Etsz4XtvqKi7iqbHf8Ma6ZLR&action=autoStart&user_id=5002"
title="LiveDesk"
allow="camera;microphone"
/>
此代碼塊在浮窗中顯示
LiveDesk Widget SDK 介面
設定 User ID 及使用者資訊(一般模式)
window.addEventListener("livedesk:ready", function () {
window.$livedesk.setUserId("使用者唯一 ID(例如 user_id)", { // 第一個參數為唯一識別碼
email: "user@example.com",
name: "使用者姓名",
avatar_url: "https://example.com/avatar.jpg", // 可選
phone_number: "+1234567890" // 可選
});
});
window.addEventListener("livedesk:ready", function () {
window.$livedesk.setUserId("使用者唯一 ID(例如 user_id)", { // 第一個參數為唯一識別碼
email: "user@example.com",
name: "使用者姓名",
avatar_url: "https://example.com/avatar.jpg", // 可選
phone_number: "+1234567890" // 可選
});
});
此代碼塊在浮窗中顯示
注意: 如果設定中是由終端使用者觸發操作來設定 User ID,則可移除 window.addEventListener("livedesk:ready", function ()) 事件設定。
設定 User ID 及使用者資訊(加密模式)
啟用身分驗證(建議):為防止偽造並確保會話可跨瀏覽器持續存在,請在設定中啟用 HMAC(使用 SHA256 產生 identifier_hash)。範例(JavaScript):
const crypto = require('crypto');
const key = '你的 HMAC Token'; // 從 Inboxes 設定複製
const message = '使用者唯一ID';
const identifier_hash = crypto.createHmac('sha256', key).update(message).digest('hex');
// 在 setUser 中附加
window.$livedesk.setUserId("使用者唯一ID", {
...其他資訊,
identifier_hash: identifier_hash
});
const crypto = require('crypto');
const key = '你的 HMAC Token'; // 從 Inboxes 設定複製
const message = '使用者唯一ID';
const identifier_hash = crypto.createHmac('sha256', key).update(message).digest('hex');
// 在 setUser 中附加
window.$livedesk.setUserId("使用者唯一ID", {
...其他資訊,
identifier_hash: identifier_hash
});
此代碼塊在浮窗中顯示
設定「對話自訂變數」
window.$livedesk.setConversationCustomAttributes({
utm_source: "google", // 範例:會話層級 UTM
session_type: "support"
});
window.$livedesk.setConversationCustomAttributes({
utm_source: "google", // 範例:會話層級 UTM
session_type: "support"
});
此代碼塊在浮窗中顯示
- 這些自訂變數會顯示於
livedesk - Conversation - 對話資訊中。
設定「使用者自訂變數」
window.addEventListener("livedesk:ready", function () {
window.$livedesk.setCustomAttributes({
pricing_plan: "premium", // key: 預先定義的唯一識別碼,value: 依類型設定(例如字串)
signup_date: new Date(), // 範例:日期類型
account_id: 123 // 範例:數字類型
});
});
window.addEventListener("livedesk:ready", function () {
window.$livedesk.setCustomAttributes({
pricing_plan: "premium", // key: 預先定義的唯一識別碼,value: 依類型設定(例如字串)
signup_date: new Date(), // 範例:日期類型
account_id: 123 // 範例:數字類型
});
});
此代碼塊在浮窗中顯示
- 這些自訂變數會顯示於「livedesk - Conversation - 聯絡人屬性」中。
刪除使用者屬性
刪除指定的自訂屬性。
window.$livedesk.deleteCustomAttribute("pricing_plan");// string 屬性鍵名
window.$livedesk.deleteCustomAttribute("pricing_plan");// string 屬性鍵名
此代碼塊在浮窗中顯示
切換聊天氣泡的開啟狀態
切換元件的開啟/關閉狀態。
window.$livdesk.toggle();
// Toggle widget by passing state
window.$livedesk.toggle("open"); // 開啟聊天元件
window.$livedesk.toggle("close"); // 關閉聊天元件
window.$livdesk.toggle();
// Toggle widget by passing state
window.$livedesk.toggle("open"); // 開啟聊天元件
window.$livedesk.toggle("close"); // 關閉聊天元件
此代碼塊在浮窗中顯示
顯示/隱藏聊天氣泡
window.$livedesk.toggleBubbleVisibility('hide');// show/hide
window.$livedesk.toggleBubbleVisibility('hide');// show/hide
此代碼塊在浮窗中顯示
彈出視窗模式
以彈出視窗模式開啟聊天介面。
window.$livedesk.popoutChatWindow();
window.$livedesk.popoutChatWindow();
此代碼塊在浮窗中顯示
設定語言
設定元件語言。
window.$livedesk.setLocale("en");// string 語言代碼,範例:zh-CN
window.$livedesk.setLocale("en");// string 語言代碼,範例:zh-CN
此代碼塊在浮窗中顯示
新增/移除標籤
為目前會話新增標籤(對話開始前),標籤將自動套用到對話中。
window.$livdesk.setLabel('support-ticket');// string 標籤識別碼
window.$livdesk.removeLabel('support-ticket');
window.$livdesk.setLabel('support-ticket');// string 標籤識別碼
window.$livdesk.removeLabel('support-ticket');
此代碼塊在浮窗中顯示
Livedesk Widget 設定物件
初始化時(載入 SDK 前)設定的全域物件,用於自訂元件行為。透過 window.livedeskSettings 定義,然後在 window.livedeskSDK.run() 中傳遞。
物件屬性
| 屬性名稱 | 類型 | 描述 | 預設值 | 範例 |
|---|---|---|---|---|
hideMessageBubble |
boolean | 隱藏訊息氣泡。 | false | true |
showUnreadMessagesDialog |
boolean | 顯示未讀訊息對話框。 | true | false |
position |
string | 元件位置。 | 'right' |
'left' |
locale |
string | 預設語言代碼。 | 儀表板語言 | 'zh-CN' |
useBrowserLanguage |
boolean | 使用瀏覽器語言(忽略 locale)。 |
false | true |
type |
string | 元件類型。 | 'standard' |
'expanded_bubble' |
darkMode |
boolean | 啟用深色模式。 | false | true |
baseDomain |
string | 基礎網域(可選,用於多網域)。 | - | 'example.com' |
launcherTitle |
string | 啟動器標題。 | - | '支援' |
showPopoutButton |
boolean | 顯示彈出按鈕。 | true | false |
welcomeTitle |
string | 歡迎標題。 | - | '歡迎!' |
welcomeDescription |
string | 歡迎說明。 | - | '如何幫助您?' |
availableMessage |
string | 線上訊息。 | - | '我們在線上。' |
unavailableMessage |
string | 離線訊息。 | - | '我們稍後回覆。' |
enableFileUpload |
boolean | 啟用檔案上傳。 | true | false |
enableEmojiPicker |
boolean | 啟用表情符號選擇器。 | true | false |
enableEndConversation |
boolean | 啟用結束對話按鈕。 | true | false |
範例程式碼
<script>
// 1. 在載入 sdk.js 之前,先設定全域設定(必須放在腳本最前面)
window.livedeskSettings = {
// 元件位置:左下角(預設是右下角)
position: "left",
// 語言強制為簡體中文(即使瀏覽器是英文也會顯示中文)
locale: "zh-CN",
// 自動偵測瀏覽器語言(如果想優先使用使用者瀏覽器語言,設為 true 並刪除上方的 locale)
// useBrowserLanguage: true,
// 元件類型:expanded_bubble = 大氣泡(含歡迎語),standard = 經典小氣泡
type: "expanded_bubble",
// 深色模式(自動跟隨系統或強制深色)
darkMode: "auto", // 可選值:true | false | "auto"
// 隱藏底部的小氣泡圖示(適合放在自訂按鈕中)
hideMessageBubble: false,
// 隱藏右下角的「彈出視窗」小箭頭按鈕
showPopoutButton: false,
// 自訂啟動器標題(大氣泡模式下顯示)
launcherTitle: "線上客服",
// 歡迎訊息(expanded_bubble 模式下生效)
welcomeTitle: "您好!有什麼可以幫助您的?",
welcomeDescription: "我們通常會在幾分鐘內回覆~",
// 線上/離線時顯示的提示文字
availableMessage: "我們在線上,隨時為您服務",
unavailableMessage: "我們目前不在線上,會在上班時間盡快回覆您",
// 功能開關
enableFileUpload: true, // 允許上傳檔案
enableEmojiPicker: true, // 允許使用表情符號
enableEndConversation: true, // 允許使用者主動結束對話
// 其他進階選項(依需求開啟)
// showUnreadMessagesDialog: true, // 有未讀訊息時彈窗提醒(預設 true)
// baseDomain: "yourcompany.com", // 多網域部署時使用
};
</script>
<!-- 2. 載入 livedesk Widget SDK(替換成你自己的網域和 token)-->
<script>
(function(d,t) {
var BASE_URL="https://www.engagelab.com"; // ← 改成你的 livedesk 位址
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=BASE_URL+"/packs/js/sdk.js";
g.defer = true;
g.async = true;
s.parentNode.insertBefore(g,s);
g.onload=function(){
window.livedeskSDK.run({
websiteToken: 'abcdefgh1234567890abcdefgh123456', // ← 改成你的 Website Token
baseUrl: BASE_URL
});
}
})(document,"script");
</script>
<script>
// 1. 在載入 sdk.js 之前,先設定全域設定(必須放在腳本最前面)
window.livedeskSettings = {
// 元件位置:左下角(預設是右下角)
position: "left",
// 語言強制為簡體中文(即使瀏覽器是英文也會顯示中文)
locale: "zh-CN",
// 自動偵測瀏覽器語言(如果想優先使用使用者瀏覽器語言,設為 true 並刪除上方的 locale)
// useBrowserLanguage: true,
// 元件類型:expanded_bubble = 大氣泡(含歡迎語),standard = 經典小氣泡
type: "expanded_bubble",
// 深色模式(自動跟隨系統或強制深色)
darkMode: "auto", // 可選值:true | false | "auto"
// 隱藏底部的小氣泡圖示(適合放在自訂按鈕中)
hideMessageBubble: false,
// 隱藏右下角的「彈出視窗」小箭頭按鈕
showPopoutButton: false,
// 自訂啟動器標題(大氣泡模式下顯示)
launcherTitle: "線上客服",
// 歡迎訊息(expanded_bubble 模式下生效)
welcomeTitle: "您好!有什麼可以幫助您的?",
welcomeDescription: "我們通常會在幾分鐘內回覆~",
// 線上/離線時顯示的提示文字
availableMessage: "我們在線上,隨時為您服務",
unavailableMessage: "我們目前不在線上,會在上班時間盡快回覆您",
// 功能開關
enableFileUpload: true, // 允許上傳檔案
enableEmojiPicker: true, // 允許使用表情符號
enableEndConversation: true, // 允許使用者主動結束對話
// 其他進階選項(依需求開啟)
// showUnreadMessagesDialog: true, // 有未讀訊息時彈窗提醒(預設 true)
// baseDomain: "yourcompany.com", // 多網域部署時使用
};
</script>
<!-- 2. 載入 livedesk Widget SDK(替換成你自己的網域和 token)-->
<script>
(function(d,t) {
var BASE_URL="https://www.engagelab.com"; // ← 改成你的 livedesk 位址
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=BASE_URL+"/packs/js/sdk.js";
g.defer = true;
g.async = true;
s.parentNode.insertBefore(g,s);
g.onload=function(){
window.livedeskSDK.run({
websiteToken: 'abcdefgh1234567890abcdefgh123456', // ← 改成你的 Website Token
baseUrl: BASE_URL
});
}
})(document,"script");
</script>
此代碼塊在浮窗中顯示
Livedesk Widget 事件監聽
| 事件名稱 | 描述 | 監聽範例 |
|---|---|---|
livedesk:ready |
SDK 完全載入完成,可安全呼叫方法。 | window.addEventListener('livedesk:ready', () => { /* 初始化 */ }); |
livedesk:on-message |
收到新訊息時觸發。 | window.addEventListener('livedesk:on-message', (data) => { console.log(data); }); |
livedesk:error |
SDK 發生錯誤時觸發(v2.3.0+)。 | window.addEventListener('livedesk:error', (error) => { console.error(error); }); |










