【发布时间】:2019-01-19 01:52:53
【问题描述】:
我目前正在从事一个涉及创建“聊天机器人”的项目。它不会是任何一种“人工智能”、深度学习或类似的花哨的东西。这将是一个“基于菜单/按钮的聊天机器人”(正如他们在网络上所说的那样)。我不知道如何处理这种功能。它将在应用程序中,我将使用 Ionic,并且“数据库”将作为 JSON 存储在 firebase 上(但是如果更容易,我可以使用其他东西)。
在与聊天机器人交流时,用户将只能使用封闭式回答,主要是 1、2、3 或 4 个回答。每个回答都会引出下一个问题,依此类推。
然后我们必须创建一个包含所有不同可能性的结构。
假设聊天机器人首先询问“你晚餐想吃什么?”,而用户有 2 个选择:意大利面、比萨饼。然后,根据用户的回答,我们会显示下一个问题。因此,用户的答案范围非常有限,但我们需要针对每条路径进行处理。
到目前为止,我在想的是有一个带有这样的块的 JSON 配置:
{
address: 0001,
type: 1, // The type will probably help to identify the kind of block
question: 'What do you want to eat for dinner?',
responses : [{
title: "pasta",
link: 0002,
}, {
title: "pizza",
link: 0003,
}
},
{
address: 0002,
type: 1,
question: 'Great you want to eat some pasta, what else?',
responses : [{
title: "Cheese",
link: 0004,
}, {
title: "Cake",
link: 0005,
}
}, etc.
所以当用户点击“pasta”时,我应该显示下一个块(地址为 0002 的块)。我可以有不同的块类型,一种会显示文本问题,另一些只会在聊天中显示视频或任何其他类型。 (因此,视频 url、图像等块可能更复杂。)
我正在考虑创建一个非常基本的工具,该工具将有助于创建所有不同的块,然后生成大量的 JSON 配置。
但这有两个缺点: -> 我需要为每个交互定义一个块。 (如果聊天机器人变大,这将导致数百个区块) -> 假设我想提供一些更个性化的东西,我需要使用一些存储在聊天机器人之外的数据(例如在用户个人资料上)。 假设用户指定了他是否对奶酪过敏。
披萨->奶酪(他过敏)-> 转到“你应该避免奶酪” 比萨饼-> 奶酪(他不过敏)-> 转到“太好了,你想吃什么甜点?”
但在我的模型中,奶酪总是去地址 0004,所以这是行不通的。我需要这个块有一些“规则”关于下一步去哪里取决于一些变量,但这似乎很棘手......
我愿意使用任何类型的 API,我见过很多,但不是我可以轻松集成到 Ionic 中的东西。我想对设计进行一些控制,并且我想避免依赖外部解决方案,但我仍然很好奇是否有任何东西可以满足我的需求。
【问题讨论】:
-
您将如何将此 json 加载到您的应用程序中?作为一个遥远的文件?或者你会动态生成它?如果你想个性化交互,我想你应该生成你的 JSON,这样每个用户都可以根据他的数据进行聊天。 (或者为每个人生成相同的 JSON,并在您的 JSON 中设置条件)。示例:
responses : [{ title: "Cheese", conditions: "[{cheeseAllergy: false}], link: 0004}]