首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dialogflow正确处理一个web钩子,但拒绝另一个

Dialogflow正确处理一个web钩子,但拒绝另一个
EN

Stack Overflow用户
提问于 2018-11-28 02:15:16
回答 1查看 74关注 0票数 0

我目前正在使用Glitch的(Glitch.com) node.js来连接对话框流和代码,我遇到了一个问题。正如您在下面看到的,我有两个意图,我试图将值传递给characterHandler和openHandler。

现在奇怪的是,如果我触发对应于“”的对话框流的意图,它会执行正确执行web钩子,但是它返回控制台中的"UnhandledPromiseRejectionWarning: Error: no匹配的意图处理程序: null“,并且在触发"openHandler”时失败,我不知道为什么。

有人知道我做错了什么吗?

代码语言:javascript
复制
'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;
EN

回答 1

Stack Overflow用户

发布于 2018-11-28 15:55:18

您的开放处理程序函数被映射到'openingTimes‘。确保与意图名称完全匹配,并确保实际保存的意图是正确的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53511111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档