通过多调用Dialogflow插槽

问题描述

在Dialogflow代理中,我具有多个插槽的意图之一,并且所有这些意图都是必需的。无法一次提供所有插槽的信息。

例如

我有3个广告位: i)电子邮件 ii)电话 iii)出生日期(dob

我希望它的工作方式是询问电子邮件用户提供电子邮件,然后询问电话,然后询问dob。我正在使用Dialogflow NodeJS客户端API向代理发出请求。

到目前为止,当我发出第一个请求(通过查询/发话)以检测意图时,它会检测到意图,现在当我将值传递给广告位时,它将进入认回退状态。

此外,由于代理将由客户端api调用,因此对我来说,使用webhook进行插槽填充不是一种选择。

我尝试使用事件而不是queryText,但也无法使其正常工作。

解决方法

找到答案,最初我是Dialogflow库(Dialogflow NodeJS )提供的示例代码。问题在于,对于每个请求,都会生成一个新的sessionId,当sessionId相同时,将填充插槽。

因此,我没有使用UUID为每个请求生成一个sessionId,而是将sessionId和查询一起传递以形成请求主体。