我有一个意图,需要一个用户的电话号码来搜索API,这基本上是一个具有必需的“ phoneNumber”参数和Webhook的意图。在最佳情况下,一切都可以正常工作,但有时用户会说错他们的电话号码,而我们找不到任何结果。
我如何做到这一点,以便使意图说出类似的信息,“我找不到具有该数字的任何东西,请您再说一遍吗?”或“我无法使用您的电话号码进行搜索,您能告诉我您的名字吗?”。基本上,我需要使用户保持循环状态,直到获得所需的所有信息为止。
我一直在研究上下文和后续意图,但是它们似乎没有用。
答案 0 :(得分:2)
跟进意图不是您想要的。在大多数情况下,它们可能不是您想要的。
上下文可以提供帮助,但甚至没有必要。
最重要的是,请记住,一个Intent捕获的是用户所说的内容,而不是您将如何处理他们所说的内容或您的答复方式。
因此,如何告诉他们您没有任何结果的最简单答案是...您的Webhook执行代码说没有结果,而不是说结果是什么。
如果用户使用电话号码进行响应,则应再次调用您已经创建的用于捕获电话号码的Intent。
在this StackOverflow answer中有一些有关此操作的示例,还有基于答案的this medium article和显示了有关Intent的详细信息的followup article。
现在,在某些情况下使用上下文可能有意义。例如,您可能希望使用上下文来记录连续连续调用Intent的次数,因为一段时间后,最安全的方法是停止对话或以其他方式提示。您可以通过在Context的参数中设置一个值并检查或增加此参数来实现此目的。
或者使用上下文帮助确保在对话的此特定点将输入视为电话号码,而不是更随意的内容,可能会很有意义。您可以通过设置Intent的输入上下文来实现。