В настоящее время я использую 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;