Dialogflow es 使用NodeJS客户端从Webhook响应
我构建了一个自定义webhook作为Dialogflow意图的实现端点。当我使用原始JSON进行响应时,它工作正常,即:Dialogflow es 使用NodeJS客户端从Webhook响应,dialogflow-es,actions-on-google,Dialogflow Es,Actions On Google,我构建了一个自定义webhook作为Dialogflow意图的实现端点。当我使用原始JSON进行响应时,它工作正常,即:{'fullfillmentText':'hi'}, 但使用“谷歌行动”库似乎不起作用 他们网站上的代码暗示这应该有效: app.intent('myintent', (conv) => { conv.close('See you later!'); }); 但事实并非如此。Google Home只是说我的应用程序没有响应。这可能是因为我的函数(使用Fn项目)必
{'fullfillmentText':'hi'}
,
但使用“谷歌行动”库似乎不起作用
他们网站上的代码暗示这应该有效:
app.intent('myintent', (conv) => {
conv.close('See you later!');
});
但事实并非如此。Google Home只是说我的应用程序没有响应。这可能是因为我的函数(使用Fn项目)必须返回JSON,如果我返回JSON作为响应,它不希望它失败。也许有人能给我们点启示
编辑1:
我正在使用一个自定义webhook,将开源函数作为服务使用。演示如何使用该项目是我在这里的目的,因此我不想使用内联编辑器、谷歌云函数、firebase或任何其他默认选项
下面是代码的其余部分
const fdk = require('@fnproject/fdk');
const request = require('request');
const dialogflow = require('actions-on-google');
const app = dialogflow({
debug: true,
});
fdk.handle(function (input) {
app.intent('myintent', (conv) => {
conv.ask('I could not understand. Can you say that again?');
});
return {'fulfillmentText': 'response from webhook'}
});
尽管您正在创建
app
对象,该对象执行意图处理程序处理等操作,并通过app.Intent()
向其注册处理程序,但您没有对其执行任何操作,因此触发webhook时会调用app
的方法。调用时,它将获取请求的主体,并为响应格式化JSON
例如,如果您使用的是Firebase函数,您将连接app
,以便通过以下函数进行处理
exports.fulfillment = functions.https.onRequest(app);
但你不是。您使用的是不同的框架
该库提供了许多现成的支持,但Fn项目不是其中之一。从理论上讲,您可以创建自己的框架,它将为您实现这一点(本文的“框架”部分将对此进行简要讨论,但不会详细介绍如何做到这一点)
正如您所猜测的那样,不使用google library上的操作,您可能最容易只做自己。或者,您可以查看库,例如,看看是否更容易利用其多框架支持。是否可以更新您的问题以显示其余的代码?webhook可能由于许多原因而没有响应。您是否在内联代码编辑器中运行此命令?您可以包括执行中的错误日志吗?更新了代码的其余部分。