将选择加入流程应用于聊天机器人
选择加入是企业非常重要的保障,特别是当品牌正在进行有奖营销活动时。在大多数情况下,用户需要选择加入或同意一系列的**条款和条件。一个写得很好的条款将清除任何源于聊天机器人游戏的纠纷,因为它为玩家或用户设定了期望、规则和条例。
另一个重要的用例是,从WABA向用户发送WhatsApp模板信息。规则规定,企业在发送任何推送信息之前必须得到用户的同意。有关细节,您可以参考WhatsApp概述中的选择加入要求。
这些用例需要一个选择加入的对话流程,一个选择加入的用户数据的记录,以及一个在我们的会员页和推送面板中**过滤出选择加入的用户的方法。
以下对象和方法将在数据源的应用中使用。
通过www.DeepL.com/Translator(免费版)翻译
预期结果
有4种类型的预期结果。
- 用户同意服务条款并重定向到聊天机器人服务的起始信息。同时,用户被标记为 "同意TNC",并且在Opt-in Record数据源中也有记录。
- 任何之前接受了T&C的用户,在下次与聊天机器人打招呼时,不会被要求同意服务条款。
- 用户对服务条款有异议,并被重新定向到T&C信息。
- 用户随机输入一些东西来触发故障安全系统,并被重定向到T&C信息。
示例树结构
开始动手
进入Bot Builder这里,创建你的树节点。
创建一个树形节点 - TNC
创建一个树形节点并将其重命名为 "TNC"。
创建一个响应,用于说明服务条款,并定义什么构成对T&C的同意。
- 保存树节点。
创建一个数据源--Opt-in记录
- 创建一个新的数据源。
- 将此Opt-in记录样本导入到数据源。
- 复制数据源ID。
创建一个树形节点 - TNC同意
- 创建一个树形节点并将其重命名为 "TNC同意"。
- 创建一个触发器,用于检测构成协议的关键词。将该触发器重命名为 "只同意"。你可以参考以下条件。
this.messageEvent.type === "TEXT" && /^(1|agree|同意|y)$/i.test(this.messageEvent.data.text)
- 在会员数据中创建第一个预案,用于设置用户同意T&C的状态。将其重命名为 "设置用户同意TNC状态"。你可以参考以下代码。
return new Promise((resolve) => {
this.lodash.set(this.member, "tags", this.lodash.get(this.member, "tags", []).filter(tag => tag !== "Disagree TNC"))
this.lodash.set(this.member, "botMeta.tempData.userAgreeTNC", true)
resolve({
member: this.member
})
})
请确保阵列中的标签(即Disagree TNC)与创建一个树形节点 - TNC 不同意中设置的标签相同。
- 创建第二个前置动作,将用户的选择记录上传到数据源。你可以参考下面的代码。
return new Promise(async(resolve) => {
try {
await this.upsertDataToDataSource({
dataSourceId: "Insert Data Source ID Here",
data: {
"Member ID": this.member._id,
"Name": this.member.firstName,
"Whatsapp Number": this.member.externalId,
"Opt-in": "Y"
}
})
resolve({
member: this.member
})
} catch (e) {
reject(e)
}
})
请记住,用你为Opt-in Record创建的数据源ID来设置dataSourceId。你也可以改变数据的命名(即
data
的数组,如 "Member ID")以适应你的数据源列标题。
- 创建一个响应,向用户说明选择加入已经完成。
- 你可以选择切换到 "重定向",回到聊天机器人服务的起点,这样用户就可以继续无缝对话。
- 切换到 "成员标签",将标签设置为 "同意TNC"。
- 保存树节点。
创建一个树形节点 - TNC 不同意
- 创建一个树节点,并将其重命名为 "TNC Disagree"。
- 创建一个触发器,用于检测构成不同意的关键词。将该触发器重命名为 "仅有异议"。你可以参考以下条件。
this.messageEvent.type === "TEXT" && /^(2|disagree|不同意|n)$/i.test(this.messageEvent.data.text)
- 创建一个响应,向用户说明选择加入失败的情况。
- 你可以选择切换 "重定向"回到选择流程的起点,这样用户就可以第二次决定。
- 切换到 "成员标签"上,并将标签设置为 "不同意TNC"。
- 保存树节点。
创建一个树形节点 - TNC故障保护
创建一个树节点,并将其重命名为 "TNC failafe"。
为任何文本、任何有效载荷或任何媒体创建一个触发器。将触发器重命名为 "所有类型"。
- 创建一个响应,向用户说明聊天机器人不理解用户的输入。
- 切换到 "重定向",回到选择流程的起点,以便用户可以第二次输入。
- 保存树节点。
###创建一个全局节点 - 问候关键词
创建一个全局节点,并将其重命名为 "问候关键词"。这个全局节点是为了确定用户之前是否已经选择加入。如果成员标签 "同意TNC"存在,这意味着用户已经选择加入,那么系统将把用户重定向到聊天机器人服务的开始。否则,系统将把用户重定向到树状节点--"TNC"。
创建一个用于检测问候语关键词的触发器。将该触发器重命名为 "文本。问候语"。
- 切换到 "重定向"上,并将以下代码复制到 "高级"标签上。
return new Promise (resolve => {
const memberTagArray = this.lodash.get(this.member, "tags", [])
if (memberTagArray.includes("Agree TNC")) {
resolve({
tree: "Insert Tree ID here or this.node.tree", // Tree ID of the start of chatbot service
nodeCompositeId: "Insert Node Composite ID Here", // Node Composite ID of the start of chatbot service
runPreAction: true,
sendResponse: true,
runPostAction: true,
})
}
resolve({
tree: this.node.tree,
nodeCompositeId: "Insert Node Composite ID Here", // Node Composite ID of TNC
runPreAction: true,
sendResponse: true,
runPostAction: true,
})
})
对于这一部分,您可以设置聊天机器人应该重定向到哪个树节点。如果它不在同一个Opt-in Flow树中,请插入一个树的ID。否则,输入
this.node.tree
。
- 保存全局节点,看看你是否能产生预期结果。