将Data Source应用于聊天机器人
数据源 将数据从聊天机器人流更新到数据源或从数据源获取数据并应用回 聊天机器人流程。 以下对象和方法将用于数据源的应用程序:
更多对象或方法参考请参考【参考文档】(https://doc.stella.sanuker.com/docs/en/reference-introduction)。
预期结果
以下聊天机器人对话只是举例说明数据源的应用。 请随意使用您认为合适的对象/代码。
- 用户用用户的电子邮件回复聊天机器人。
Save Email Sample Flow
- 电子邮件记录在数据源中,包含以下字段:psid、firstName、lastName、email。
Email Data Source
PSID是当你与Facebook页面互动时分配给你的唯一ID。Stella也利用PSID来识别Facebook会员。对于其他平台,如WhatsApp,Stella利用会员的WhatsApp号码。一般来说,这些ID被称为外部ID。
示例树结构
Email Data Source Sample Tree Structure
动手试试看
点击这里,创建你的树形节点。
创建第1个树节点--询问电子邮件
创建第个树节点,并将其重命名为 "询问电子邮件"。
2.创建一个文本或电子邮件快速回复(如果你的隐私设置允许,Messenger可以检索你的个人资料电子邮件并显示在快速回复上)的回复,以询问用户的电子邮件地址。
Email Quick Reply
- 保存树结点。
创建一个数据源
- 前往 "数据源"并创建一个新的数据源。
Add a New Data Source
Import the Data Source File
- 这些字段(psid, firstName, lastName, email)将出现在数据源上。复制 "数据源ID"供以后使用。
Email Data Source
###创建第2个树节点 - 保存电子邮件
- 添加第个树节点,并将其重命名为 "保存电子邮件"。
- 创建以下触发器,以检查电子邮件的有效载荷或电子邮件文本是否具有正确的电子邮件格式。
Email Checking Trigger
条件组。"有效载荷类型 "或 "文本类型 "
this.messageEvent.type === "PAYLOAD"
this.messageEvent.type === "TEXT"
条件2:"电子邮件重码 "
/^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+[^@]*\.[a-zA-Z0-9-]+)*$/.test(this.messageEvent.data.text)
- 创建第一个预操作,将收集到的电子邮件地址保存到成员的tempData中,并将其重命名为 "保存电子邮件**"。你可以应用以下示例代码。
Save Email Pre-action
return new Promise((resolve) => {
this.lodash.set(this.member, "botMeta.tempData.email", this.messageEvent.data.text)
resolve({
member: this.member
})
})
上面的示例代码将messageEvent中的电子邮件地址作为tempData保存在成员对象中,这样保存的数据就可以在同一频道的其他节点中重复使用。
- 创建第二个预行动,将电子邮件地址保存到**数据源中。你可以应用下面的示例代码。
Save Email to Data Source Pre-action
- 请记得将代码中
collectionName
的值改为你之前复制的数据源ID。
return new Promise(async(resolve, reject) => {
try {
let data = {
psid: this.member.externalId,
firstName: this.member.firstName,
lastName: this.member.lastName,
email: this.lodash.get(this.member, "botMeta.tempData.email")
}
const alreadyHaveThisEmail = await this.fetchDataFromDataSource({
collectionName: "Insert Your Data Source ID Here",
filter: {
email: data.email
}
})
if (!alreadyHaveThisEmail.length) {
await this.upsertDataToDataSource({
channel: this.channel,
collectionName: "Insert Your Data Source ID Here",
data: data
})
}
resolve({
member: this.member
})
} catch (e) {
reject(e)
}
})
上面的示例代码从数据源获取数据,检查电子邮件是否已经被保存。如果电子邮件之前没有被保存,数据源将把电子邮件地址上移到数据源。
- 如果你想在你的聊天机器人响应中显示保存的电子邮件文本,你可以在 "响应对象"上应用以下代码示例。
Create a Response with Saved Email
{
"type": "TEXT",
"text": "Your email {{botMeta.tempData.email}} is saved"
}
由于电子邮件文本被保存在成员对象的tempData中,上述格式允许Stella从成员中获取数据并显示在响应中。你可以在响应中使用{{}}而不是this.member。
保存树节点。
检查并看看你是否能产生类似于预期结果的结果。