我想从用户那里捕获以下输入并使用这些实体:
- 名字和姓氏:使用 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 意图被正确预测,我希望第一个插槽的提示再次显示,但事实并非如此。
无论我此时输入什么,助手都会绕过前三个位置并再次下降到第四个位置。就好像我需要清除实体,而不是变量。
我究竟做错了什么?如何使顶部插槽再次工作?!