Dialogflow可正确处理一个Webhook,但拒绝另一个

时间:2018-11-28 02:15:17

标签: node.js dialogflow

我目前正在使用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;

1 个答案:

答案 0 :(得分:0)

您的打开处理程序函数映射到“ openingTimes”。确保与意图名称完全匹配,并确保意图已正确保存。