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 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):所点击按钮的事件(如果已指定)
  • 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):所点击的 chip 的锚点 href(如果已指定)
  • text (string):所点击的 chip 的文本

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(如果已指定)