Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用';agent.setFollowupEvent(targetEventName)和#x27;对话框中的方法_Javascript_Node.js_Dialogflow Es_Dialogflow Es Fulfillment - Fatal编程技术网

Javascript 使用';agent.setFollowupEvent(targetEventName)和#x27;对话框中的方法

Javascript 使用';agent.setFollowupEvent(targetEventName)和#x27;对话框中的方法,javascript,node.js,dialogflow-es,dialogflow-es-fulfillment,Javascript,Node.js,Dialogflow Es,Dialogflow Es Fulfillment,我试图找到一个解决方案,在收集用户电子邮件地址并通过对远程组织服务器进行POST API调用检查其注册状态后,从webhook(node.js)服务器启动另一个DialogFlow Intent(通过其事件) 以下是一个基本模式: 用户:你好 聊天机器人:你好,我是一个协助机器人。请告诉我您的电子邮件地址以验证您的注册状态好吗? 用户:funnyname@email.com 聊天机器人:谢谢,让我检查一下您的状态… --->实现代码进行POST API调用,如果存在匹配项,则从服务器获取用户状态

我试图找到一个解决方案,在收集用户电子邮件地址并通过对远程组织服务器进行POST API调用检查其注册状态后,从webhook(node.js)服务器启动另一个DialogFlow Intent(通过其事件)

以下是一个基本模式:

用户:你好
聊天机器人:你好,我是一个协助机器人。请告诉我您的电子邮件地址以验证您的注册状态好吗?
用户:funnyname@email.com
聊天机器人:谢谢,让我检查一下您的状态…
--->实现代码进行POST API调用,如果存在匹配项,则从服务器获取用户状态

在这里,根据用户状态,我想启动一个新的意向:注册用户意向或新用户意向。我尝试使用
agent.setFollowupEvent(({“name”:“targetEventName”})
方法,但它不会一直触发所需的事件[intent]。我不确定如何在实现代码中正确设置它以使其始终工作


任何人都有任何建议或参考资料来进行此设置吗?

当您提出webhook实现请求时,您的API应该使用Dialogflow理解的JSON响应进行响应。与调用Dialogflow API从您的webhook API中触发事件不同,API的JSON响应可以包含以下内容:接下来要触发的事件的名称,Dialogflow将执行其余操作

以下是触发后续事件的履行响应的参考:


另外,您当前的方法有时有效,而其他方法无效的最可能原因是,使用dialogflowv2 API触发事件并发送回JSON响应(可能没有提到后续事件的名称)创建竞争条件。

由于您使用的是Dialogflow实现库,请确保在package.json文件中使用最新版本。此外,在使用
代理.setFollowEvent()
方法时,请确保包含
代理.add()
响应的方法。此响应不会返回,但需要能够使用
代理.setFollowupEvent()
方法

下面是一个例子:

function nameOfFunction(agent) {
    agent.add(`sample response`);
    agent.setFollowupEvent('event_name');
}
有关Dialogflow实现库的详细信息,请参阅。请注意,此库未维护

否则,您可以创建自己的代码并将其托管在所选的web服务器上。从那里,您可以通过设置WebhookResponse的
followupEventInput
字段来调用事件。有关详细信息,请查看