我目前正在使用Glitch的(Glitch.com)node.js将Dialogflow连接到代码,但遇到了问题。如下所示;我试图将两个值传递给characterHandler和openHandler。
现在奇怪的是,如果我触发了与“ characterHandler”相对应的Dialogflow上的意图,它会正确地执行 Web钩子,但是它返回“ UnhandledPromiseRejectionWarning:错误:没有匹配的意图处理程序用于: 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;
答案 0 :(得分:0)
您的打开处理程序函数映射到“ openingTimes”。确保与意图名称完全匹配,并确保意图已正确保存。