问题

我想使用 JavaScript API 修改Web Widget(经典)的原生行为。我阅读了帮助中心,发现有很多不同的实现。如何组合这些Web Widget(经典) API 工作流程?

回答

免责声明:本文仅供说明之用。Zendesk 对代码不提供支持,也不保证代码质量。如有任何问题,请将其发布在评论部分,或尝试在线搜索解决方案。

适时应用小组件设置。一些工作流程必须在部门更新后运行,而另一些工作流程必须在小组件首次连接或重新连接时运行。这一点很重要,因为小组件可以在在线交谈会话存在之前加载,并且访问者可以在会话超时或页面刷新后重新连接。如果您的代码在页面加载时仅运行一次,活跃的在线交谈会话可能会错过一些设置,或者小组件在重新连接后可能会丢失这些设置。

本例显示如何设置客户关系管理部门。在此示例中,"客户关系管理" 是您在 Chat 小组件设置中配置的 Chat 部门的名称(例如,销售或客户团队使用的部门)。将“客户关系管理”替换为您帐户中部门的确切名称。

<script id="ze-snippet" 
src="https://static.zdassets.com/ekr/snippet.js?key=ACCOUNT_KEY"> </script>

<script>
// first hide the widget on page load
zE('webWidget', 'hide');

// whenever an unread message appears unhide and open the widget 
zE('webWidget:on', 'chat:unreadMessages', function(number) {
  zE('webWidget', 'show');
  zE('webWidget', 'open');
});

// this callback runs whenever chat first connects (or reconnects)
zE('webWidget:on', 'chat:connected', function() {
  
  // put any code you only want run once here
  
});

// this callback runs whenever a department status changes
zE('webWidget:on', 'chat:departmentStatus', function(dept) {
  
  // only set the widget online for chat if this department was online
  if (dept.name === 'CRM' && dept.status === 'online') {
    
    // apply the chat widget settings
    zE('webWidget', 'updateSettings', {
      webWidget: {
        chat: {
          departments: {
            enabled: [''],
            select: 'CRM'
          },
          suppress: false
        }
      }
    });
  } else if (dept.name === 'CRM' && dept.status !== 'online') {
    
    // or suppress chat (optional: apply contact form settings here)
    zE('webWidget', 'updateSettings', {
      webWidget: {
        chat: {
          suppress: true
        }
      }
    });
  }
});
</script>

关于此脚本,有两点需要注意。您可以省略未读消息的初始隐藏和后续显示,而不更改脚本的其余部分。由于这些调用在小组件加载后立即运行,因此脚本将其置于顶部。选填。

一些自定义工作流程会放置 updateSettings API 会阻止 chat:connected 回调,但您也可以将其放在 chat:departmentStatus 回调中。小组件会在首次连接时或由于会话超时重新连接后应用该策略。通常,将您的工作流程与设置必须生效的事件绑定:

  • 使用 chat:connected 用于每个在线交谈会话应运行一次的逻辑,例如每次部门状态刷新后不应重复的初始配置。
  • 使用 chat:departmentStatus 用于必须与部门空闲状态或路由更改保持同步的逻辑,因为它可能在部门状态更改和小组件初始化时触发。

有关不同Web Widget(经典) API 工作流程的更多信息,请参阅:

  • 是否可以将Web Widget(经典)配置为仅当特定部门在线时在我的网页上显示 Chat?
  • 超时在线交谈访问者重新连接后,是否可以重新应用部门?
  • 如果访问者超时但重新连接,如何确保向访问者显示交谈前的表格?

翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性

如对翻译准确性有任何疑问,请以文章的英语版本为准。

由 Zendesk 提供技术支持