问题描述
在Dialogflow代理中,我具有多个插槽的意图之一,并且所有这些意图都是必需的。无法一次提供所有插槽的信息。
例如
我有3个广告位: i)电子邮件 ii)电话 iii)出生日期(dob)
我希望它的工作方式是询问电子邮件,用户提供电子邮件,然后询问电话,然后询问dob。我正在使用Dialogflow NodeJS客户端API向代理发出请求。
到目前为止,当我发出第一个请求(通过查询/发话)以检测意图时,它会检测到意图,现在当我将值传递给广告位时,它将进入默认回退状态。
此外,由于代理将由客户端api调用,因此对我来说,使用webhook进行插槽填充不是一种选择。
我尝试使用事件而不是queryText,但也无法使其正常工作。
解决方法
找到答案,最初我是Dialogflow库(Dialogflow NodeJS )提供的示例代码。问题在于,对于每个请求,都会生成一个新的sessionId,当sessionId相同时,将填充插槽。
因此,我没有使用UUID为每个请求生成一个sessionId,而是将sessionId和查询一起传递以形成请求主体。