将Agenda应用于聊天机器人
Agenda是Stella中的一个调度系统,它将在一个特定的时间内为一个成员运行一个特定的节点。简单地说,它是一个定时器,当倒计时结束时,就会发送一条消息。
你可以应用Agenda来创建一个预定信息,而预定的时间和响应都由你决定。你可以使用预定消息来更新应用状态,确认交易等。为了使你的对话流程更加灵活,你也可以删除议程,并继续进行另一个树节点。
在本节课中,你将学习如何在Stella中设置议程,并建立一个对话流程样本,向闲置的用户发送预定提醒信息。
预期结果
想象一下,你有一个客户服务的聊天机器人。当一个客户进入你的对话流程,但在5分钟内没有进入下一个对话,你想发送一个提醒信息**,鼓励闲置的用户继续进行对话流程。
示例树结构
动手试试看
点击这里,进入Bot Builder。
在树形节点中设置议程
创建第一个树形节点,命名为 "问候"。这是你对话流程的入口。在这种情况下,我们将把议程应用于这个树节点。
2.创建一个回应来问候客户。点击 "保存"。
##添加预行动
- 添加一个新的预行动,命名为 "议程"。然后输入以下代码。
this.newAgenda
为一个成员创建一个议程。议程将在指定的时间执行:如果是单次运行,则在nextRunAt
字段,如果是多次运行,则在pattern
字段。每当有客户经过这个树节点时,议程就会开始倒计时。
return new Promise((resolve) => {
let nextRunAt = this.moment().add(5, "minutes").valueOf()
this.newAgenda({
member: this.member,
treeId: this.node.tree,
nodeCompositeId: "FPl8vZRflSPBU9XD",
nextRunAt,
tag: "reminder",
replace: true
})
resolve()
})
输入时间
- 输入一个预定的时间。数字必须是整数,单位可以是 "分钟"、"小时"、"天"或 "周**",记住要保持单位的复数形式。允许的最小计划时间是1分钟。
输入TreeID
- 输入你的预定信息所属的树的TreeID。如果是在同一棵树上,输入 "this.node.tree"。如果是不同的树,输入TreeID,例如,"6054b3e99cfe3e84ee174e88"。
CompositeID是一个树节点的唯一ID。我们稍后将编辑复合ID。
输入标签
tag
字段用于标记议程。为你的议程输入一个标签,让我们把它命名为 "提醒"。它可以用来为其他行动识别这个议程。然后点击 "保存"。
替换议程
- 创建的标签可以与
replace
字段一起使用,当创建一个新的议程时,replace
字段为真,将删除同一成员的相同标签的任何旧议程,并以新议程取代。
创建预定信息
创建一个新的树节点,将其命名为 "预定信息"。我们将在这个树节点中创建提醒信息。
为你的客户创建一个回复或后续问题,这个客户在特定的时间段内没有回应。
- 如果需要,你也可以让你的客户回到正常的对话流程中。在这种情况下,你可以创建一个全局节点,如果客户对后续问题选择 "是",就可以重定向到对话中。
输入复合ID
- 复制你的预定消息节点的复合ID。
- 返回到你设置议程的节点,然后选择预操作,用新的ID替换**复合ID。现在议程将在计时器停止时触发预定消息。
- 检查并看看你是否能产生预期结果。
移除议程
你想向闲置的用户发送提醒信息,而不打扰响应的用户。当客户在特定的时间段内做出回应时,你希望他能继续正常的对话流程。因此,你需要通过删除议程来收回提醒信息。
预期的结果
如果客户在5分钟内继续进行对话,则不会显示预定信息。
- 在 "问候 "之后创建一个新的树节点,让我们把它命名为 "对话继续"。然后,为你的客户创建一个 "回应",他继续进行对话。
- 为 "继续对话 "添加一个新的触发器。然后当客户选择 "了解更多关于我们 "时,这个节点将被触发。
添加Post-actions
- 在这个节点中创建一个新的Post-actions,我们把它命名为 "删除议程",然后输入以下代码。当这个节点在预定的时间内被触发时,对话流继续进行,这个后动作可以删除之前的议程。
return new Promise(async(resolve, reject) => {
try {
await this.deleteMemberAgenda({
memberId: this.member._id,
tag: "reminder"
})
resolve()
} catch (e) {
reject(e)
}
})
- 输入你在步骤6中创建的议程标签 "最后",那么当这个树节点被触发时,具有相同标签的议程将被删除。
- 检查并看看你是否能产生预期结果。
Facebook消息标签
在Facebook Messenger中,鼓励企业在24小时内对客户做出回应。如果你决定在24小时后向客户发送一条预定的消息,你需要在议程中包括具体的消息标签。
预期结果
发送 "账户更新 "信息,通知客户申请状态的变化。
添加信息标签
- 回到 "问候 "节点,或者你的任何一个包含议程的节点。选择预操作,在议程中添加以下代码。
meta: {
messagingTag: "ACCOUNT_UPDATE",
messagingType: "MESSAGE_TAG"
}
- 字段
meta
可用于保存议程中的信息。在meta中,输入信息标签和信息类型。点击这里,找到与你的信息性质相匹配的其他信息标签。
请确保您在Facebook Meseenger上发送的信息遵循Facebook的指导方针和信息标签政策,例如,避免频繁发送促销内容和向已取消订阅或不同意接收的受众发送推送信息。
- 检查并看看你是否能产生预期结果。
Whatsapp信息模板
对于议程,预定时间可以超过24小时。如果你的聊天机器人是在WhatsApp上,你也会受到他们24小时客户服务窗口的约束。如果你决定在客户最后一次回应的24小时后发送预定信息。你需要利用WhatsApp消息模板。
- 进入 "Scheduled Message "节点,将响应类型改为WhatsApp Message Template,然后从您批准的信息模板中选择。