Dialogflow CX Messenger JavaScript 事件

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 後端的要求。

詳細屬性:

  • 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):已指定的按鈕點擊事件
  • languageCode (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):引用內容的錨點 href
  • title (string):引文標題

df-info-card-clicked

使用者點選資訊卡。

詳細屬性:

  • actionLink (string):資訊卡錨點 href
  • title (string):資訊卡的標題

df-list-element-clicked

使用者點選清單元素。

詳細屬性:

  • actionLink (string):清單元素的錨定 href (如有指定)
  • event (string):已按下的清單元素的事件 (如有指定)
  • languageCode (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 (如有指定)