0

我想从用户那里捕获以下输入并使用这些实体:

  • 名字和姓氏:使用 sys-person(我稍后使用云操作提取名字和姓氏)。
  • 电子邮件地址:使用模式实体,名称@contactEmail 和值“电子邮件”模式\b[A-Za-z0-9._%+-]+@([A-Za-z0-9-]+.)+[ A-Z-Z]{2,}\b
  • 手机号码:使用模式实体,名称@contactPhone 和值“mobileNumber”模式^[1-9][0-9]{7}[0-9]+$

插槽

我创建了一个带插槽的节点:

插槽

设置如下:

检查:

  • 检查:@sys-person.literal 将其另存为 $person 如果不存在:输入您的姓名
  • 检查:@contactEmail.literal 将其另存为 $email 如果不存在:输入您的电子邮件
  • 检查:@contactPhone.literal 将其另存为 $contactPhone 如果不存在:输入您的手机。

这一切都很完美,我得到了姓名、电子邮件地址和电话号码。

挑战 但我希望用户能够确认详细信息是正确的。所以我有一个名为#response_yes 的意图,它由“yes”、“yep”等内容激活。

我有第四个插槽来检查#response_yes。

  • 检查#response_yes,将值存储在 $confirmed 中,如果不存在,请询问“Got $person, $contactEmail, $contactPhone 是否正确?”

确认

如果未找到#response_yes,则显示已输入的值并询问它们是否正确并等待用户输入。

用户响应后,如果仍然没有找到 #reponse_yes 意图,则:

重新开始

回复“让我们重新开始吧”。此外,我们需要清除已经输入的值:

清除值

这是出错的地方 当我尝试聊天机器人时,节点正确收集输入并正确显示值并询问它们是否正确。我输入“no”,#response_no 意图被正确预测,我希望第一个插槽的提示再次显示,但事实并非如此。

问题

无论我此时输入什么,助手都会绕过前三个位置并再次下降到第四个位置。就好像我需要清除实体,而不是变量。

我究竟做错了什么?如何使顶部插槽再次工作?!

4

1 回答 1

0

啊啊啊。

对于任何感兴趣的人,我只是没有将值重置为空。

我想我假设将值留空与空值相同。不是这样。一旦我这样做了,系统就会完美运行:

将值设置为空!

于 2020-04-08T13:27:09.353 回答