Dialogflow es 使用NodeJS客户端从Webhook响应

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项目)必

我构建了一个自定义webhook作为Dialogflow意图的实现端点。当我使用原始JSON进行响应时,它工作正常,即:
{'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可能由于许多原因而没有响应。您是否在内联代码编辑器中运行此命令?您可以包括执行中的错误日志吗?更新了代码的其余部分。