Dialogflow CX Messenger 會觸發各種事件,您可以為這些事件建立事件監聽器。部分事件具有 detail 物件欄位,可提供更多事件資訊。
df-messenger-loaded
系統會先載入代理程式對話。
詳細資料屬性:
- 無
例如:
window.addEventListener('df-messenger-loaded', () => {
// Messenger is now ready.
});
df-chat-open-changed
開啟或關閉即時通訊。
詳細資料屬性:
isOpen(boolean):即時通訊的新狀態
例如:
window.addEventListener('df-chat-open-changed', (event) => {
console.log(`Chat is ${event.detail.isOpen ? 'open' : 'closed'}`);
});
df-user-input-entered
使用者輸入了文字。
詳細資料屬性:
input(string):使用者輸入的值
例如:
window.addEventListener('df-user-input-entered', (event) => {
console.log(event.detail.input);
});
df-request-sent
傳送至 Dialogflow CX 後端的要求。
詳細資料屬性:
data(object):資料容器data.requestBody(object):已傳送的要求
例如:
window.addEventListener('df-request-sent', (event) => {
console.log('Request', event.detail.data.requestBody);
});
window.addEventListener('df-request-sent', (event) => {
event.preventDefault(); // Messenger won't send the request.
// Send request yourself.
});
df-response-received
代理程式對話方塊收到回覆。
詳細資料屬性:
data(object):資料容器data.messages(object[]):已剖析的回應訊息清單raw(object):收到的逐字稿回覆
例如:
window.addEventListener('df-response-received', (event) => {
// Remove all non-text messages.
event.detail.data.messages = event.detail.data.messages.filter(message => {
return message.type === 'text';
});
});
window.addEventListener('df-response-received', (event) => {
event.preventDefault(); // Messenger won't handle the response.
const messenger = document.querySelector('df-messenger');
event.detail.data.messages.forEach(message => {
if (message.type === 'text') {
messenger.renderCustomText(message.text);
}
});
});
df-messenger-error
對後端的請求失敗。
詳細資料屬性:
error(object):發生的錯誤
例如:
window.addEventListener('df-messenger-error', (event) => {
console.log(event.detail.error);
});
df-session-expired
與服務專員的工作階段已過期。
詳細資料屬性:
- 無
例如:
window.addEventListener('df-session-expired', () => {
const messenger = document.querySelector('df-messenger');
messenger.renderCustomText(`*Session expired*`, /* isBot= */ true);
messenger.startNewSession({ retainHistory: true });
});
df-session-ended
工作階段已結束。
詳細資料屬性:
- 無
例如:
window.addEventListener('df-session-ended', () => {
const messenger = document.querySelector('df-messenger');
messenger.renderCustomText(`*Session ended*`, /* isBot= */ true);
messenger.startNewSession({ retainHistory: true });
});
df-url-suggested
建議資源的網址。
詳細資料屬性:
suggestedUrls(string[]):建議網址清單
例如:
window.addEventListener('df-url-suggested', (event) => {
if (event.detail.suggestedUrls.length === 1) {
window.location.href = event.detail.suggestedUrls[0];
}
});
df-accordion-clicked
使用者點選了手風琴。
詳細資料屬性:
- 無
df-button-clicked
使用者點選按鈕。
詳細資料屬性:
actionLink(string):所點選按鈕的錨點 href (如有指定)event(string):如果已指定,則為所點選按鈕的 eventlanguageCode(string):如果指定活動的語言代碼,則為該代碼,否則為主要語言代碼text(string):所點選按鈕的文字
window.addEventListener('df-button-clicked', (event) => {
event.preventDefault(); // Messenger won't send the "event" request.
// Handle "event" yourself.
});
df-chip-clicked
使用者點選了動態磚。
詳細資料屬性:
actionLink(string):點選晶片的錨點 href (如有指定)text(string):所點選方塊的文字
df-citation-clicked
使用者點選了引用內容。
詳細資料屬性:
actionLink(string):引用內容的錨點 hreftitle(string):引文的標題
df-info-card-clicked
使用者點選資訊卡。
詳細資料屬性:
actionLink(string):資訊卡的錨點 hreftitle(string):資訊卡的標題
df-list-element-clicked
使用者點選清單元素。
詳細資料屬性:
actionLink(string):清單元素的錨點 href (如有指定)event(string):如果已指定,則為所點選清單元素的 eventlanguageCode(string):如果指定活動的語言代碼,則為該代碼,否則為主要語言代碼title(string):清單元素的標題
window.addEventListener('df-list-element-clicked', (event) => {
event.preventDefault(); // Messenger won't send the "event" request.
// Handle "event" yourself.
});
df-image-clicked
使用者點按圖片。
詳細資料屬性:
actionLink(string):圖片的錨點 href (如有指定)