Dialogflow правильно обрабатывает один веб-крючок, но другой отказывается - PullRequest
0 голосов
/ 28 ноября 2018

В настоящее время я использую Glitch (Glitch.com) node.js для подключения Dialogflow к коду, и я столкнулся с проблемой.Как вы можете видеть ниже;У меня есть два намерения, которым я пытаюсь передать значения: characterHandler и openHandler.

Теперь странная вещь состоит в том, что действительно выполняет веб-хук правильно, если я инициирую намерение в Dialogflow, соответствующее "characterHandler", но оно возвращает "UnhandledPromiseRejectionWarning: Ошибка: нет соответствующего обработчика намеренийfor: null "в консоли и завершается неудачно при запуске openHandler, и я понятия не имею, почему.

Кто-нибудь знает, что я делаю не так?

'use strict';

process.env.DEBUG = 'actions-on-google:*';

const express = require('express');
const bodyParser = require('body-parser');
const request = require("request");
const { DialogflowApp } = require('actions-on-google');
const Map = require('es6-map');
const app = express();

app.use(bodyParser.json());


let characters = ['The Pied Piper', 'Red Riding Hood', 'The Big Bad Wolf'];

// [START Action]
app.post('/', function (request, response) {
  const assistant = new DialogflowApp({request, response});
  console.log('Request headers: ' + JSON.stringify(request.headers));
  console.log('Request body: ' + JSON.stringify(request.body));

const CHARACTERS = 'story.characters';
const OPENINGTIMES = 'openingTimes';

  function characterHandler (assistant) {
    let responseText = "How about";

    responseText = characters[Math.floor(Math.random() * characters.length)];
    assistant.tell(responseText);
  }

  function openHandler (assistant) {
    assistant.tell('This attraction is currently full');
  }

  const actionMap = new Map();
  actionMap.set(CHARACTERS, characterHandler);
  actionMap.set(OPENINGTIMES, openHandler);

  assistant.handleRequest(actionMap);

});
// [END Action]

// Renders the homepage
app.get('/', function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('');
  res.end();
});

if (module === require.main) {
  // [START server]
  // Start the server
  let server = app.listen(process.env.PORT || 3000, function () {
    let port = server.address().port;
    console.log('App listening on port %s', port);
  });
  // [END server]
}

module.exports = app;

1 Ответ

0 голосов
/ 28 ноября 2018

Ваша функция открытого обработчика сопоставлена ​​с «Открытие времени».Убедитесь, что оно точно соответствует имени намерения, и убедитесь, что оно действительно было сохранено правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...