自动结束实时聊天功能
对于WhatsApp Business API等平台,如果用户闲置超过24小时,代理将无法向用户发送任何消息。 因此,设置一个功能来自动结束用户闲置超过 24 小时的任何实时聊天 将非常有用。
预期结果?
将发送一条文本消息以指示实时聊天结束。 B此外,文本输入区域将被封锁,以防止代理在 24 小时后向用户发送任何消息。
Live chat is ended automatically after user has been idled for a particular time
示例树结构
Auto End Live Chat Sample Tree
动手实践
创建一个树节点 - 自动结束实时聊天
创建一个树节点,并将其命名为“Zendesk End Live Chat”。
在以下部分中,您将创建 3 个动作。 请按照此过程的步骤,将这些操作按照确切的顺序放置在此节点的 pre-action 下。
使用以下代码创建1st pre-action。 这是在入口组中结束实时聊天:
return new Promise(async (resolve, reject) => {
try {
this.member = await this.inletEndLiveChat({
channel: this.channel,
member: this.member,
})
this.lodash.set(this.member, "group", null)
resolve({
member: this.member
})
} catch (e) {
reject(e)
}
})
- 使用以下代码创建2nd pre-action以将结束实时聊天消息发送到outlet (您可以在“response”数组中的“text”中自定义消息):
return new Promise(async (resolve, reject) => {
try {
console.log("in Send End Live Chat Message to Zendesk")
let assignments = await this.getAssignmentsByMemberId({
memberId: this.member._id,
sortBy: { _id: -1 },
})
console.log("assignments", assignments)
let assignment = assignments[0]
console.log("assignment", assignment)
console.log("channelId", assignment.targets[0].channel)
let result = await this.sendZendeskResponse({
member: this.member,
channelId: assignment.targets[0].channel,
threadId: assignment._id,
response: {
type: "TEXT",
text: "WhatsApp live chat session ended"
},
allowChannelBack: false,
})
console.log("result", result)
resolve()
} catch (e) {
reject(e)
}
})
- 创建 3rd pre-action 以使用以下代码删除任何议程:
return new Promise(async (resolve, reject) => {
try {
await this.deleteMemberAgenda({
memberId: this.member._id,
})
resolve()
} catch (e) {
reject(e)
}
})
- 创建一个响应来告诉入口组中的用户实时聊天已经结束。
Zendesk End live Chat Message
频道实时聊天设置
- 前往您的入口频道并找到实时聊天设置。
Inlet Channel Live Chat Settings
添加并设置空闲定时器。 如果用户空闲,计时器将开始倒计时。
找到并选择“自动结束实时聊天”树节点,
保存 Channel 中的设置。
测试并查看您是否可以产生预期结果。
删除议程
由于自动结束实时聊天消息将在达到您在实时聊天设置中设置的时间限制时发送。
如果您打算同时使用 Done Command 和 Auto End Livechat,当您使用 done 命令结束实时聊天时,您需要一个额外的步骤来删除议程。
前往您在 上一节 中创建的 Done Command 节点。
使用以下代码创建后操作,这是为了删除在实时聊天设置中创建的议程。 需要
tag
来标识相应的议程。
return new Promise(async (resolve, reject) => {
try {
await this.deleteMemberAgenda({
memberId: this.member._id,
tag: "livechatAgenda_{ID}"
})
resolve()
} catch (e) {
reject(e)
}
})
- 前往实时聊天设置,复制议程的 ID,并将其插入到代码中。
例如:
标签:“livechatAgenda_NRbp4hYV”
Inlet Channel Live Chat Settings
- 现在您可以在同一树中使用 Done Command 和 Auto End Livechat,而无需重复自动消息。