Ответ от Webhook с использованием NodeJS Client - PullRequest
0 голосов
/ 02 февраля 2019

Я создал собственный веб-крючок в качестве конечной точки выполнения для намерения Dialogflow.Он отлично работает, когда я отвечаю с использованием необработанного JSON, например: {'fullfillmentText':'hi'}, но, похоже, не работает с использованием библиотеки "actions-on-google".

Код с их сайта подразумевает, что это должно работать:

app.intent('myintent', (conv) => {
    conv.close('See you later!');
});

Но это не так.Google Home просто говорит, что мое приложение не отвечает.Может случиться так, что моя функция (используя Fn Project) должна возвращать JSON, и если я возвращаю JSON в качестве ответа, он не ожидает, что произойдет сбой.Может быть, кто-то может пролить некоторый свет?

Редактировать 1: Я использую пользовательский веб-крючок, использующий функции Fn Project с открытым исходным кодом в качестве службы.Демонстрация того, как использовать проект, является моей целью, поэтому я не хочу использовать встроенный редактор, Google Cloud Functions, 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'}
});

1 Ответ

0 голосов
/ 03 февраля 2019

Хотя вы создаете объект app, который выполняет обработку обработчика Intent и т. Д., И регистрируете обработчик с помощью app.intent(), вы ничего не делаете для "export" itпоэтому app методы вызываются при срабатывании webhook.При вызове он получает тело запроса и форматирует JSON для ответа.

Если, например, вы используете функции Firebase, вы бы соединили app для обработки через функции с чем-токак

exports.fulfillment = functions.https.onRequest(app);

Но это не так.Вы используете другой фреймворк.

Библиотека поставляется с набором фреймворков , которые поддерживаются "из коробки", но проект Fn не является одним из них.Теоретически, вы можете создать свой собственный объект Framework , который сделает это за вас (в разделе "Frameworks" в этой статье он кратко обсуждается, но не рассматривается, какдля этого).

Как вы думаете, вам будет проще всего прочитать запрос JSON и сгенерировать ответ JSON самостоятельно, не используя библиотеку actions-on-google.Или вы можете заглянуть в такую ​​библиотеку, как multivocal , чтобы узнать, не будет ли проще использовать ее поддержку нескольких фреймворков.

...