我目前正在使用Glitch的(Glitch.com) node.js来连接对话框流和代码,我遇到了一个问题。正如您在下面看到的,我有两个意图,我试图将值传递给characterHandler和openHandler。
现在奇怪的是,如果我触发对应于“”的对话框流的意图,它会执行正确执行web钩子,但是它返回控制台中的"UnhandledPromiseRejectionWarning: Error: no匹配的意图处理程序: 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;发布于 2018-11-28 15:55:18
您的开放处理程序函数被映射到'openingTimes‘。确保与意图名称完全匹配,并确保实际保存的意图是正确的。
https://stackoverflow.com/questions/53511111
复制相似问题