问题
我想使用 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?
- 超时在线交谈访问者重新连接后,是否可以重新应用部门?
- 如果访问者超时但重新连接,如何确保向访问者显示交谈前的表格?
翻译免责声明:本文章使用自动翻译软件翻译,以便您了解基本内容。 我们已采取合理措施提供准确翻译,但不保证翻译准确性
如对翻译准确性有任何疑问,请以文章的英语版本为准。