Интеграция в чат-консоль Botkit с DialogFlow не работает - PullRequest
0 голосов
/ 17 декабря 2018

Я работаю над консольным ботом (это пример console_bot.js от Botkit).Агент установки на консоли DialogFlow, скачал файл сына с закрытым ключом, скачал botkit-middleware-dialogflow.

Это действительный код:

var Botkit = require('./lib/Botkit.js');
var os = require('os');


var controller = Botkit.consolebot({
    debug: true,
});


const dialogflowMiddleware = require('botkit-middleware-dialogflow')({
    keyFilename: './botkit-test-file.json',  // service account private key file from Google Cloud Console
  });

//******************* */

var bot = controller.spawn();
controller.middleware.receive.use(dialogflowMiddleware.receive);


controller.middleware.send.use(function(bot, message, next) {


  if (message.intent == 'hey') {
      message.text = 'Hello from DialogFlow!!!';
  }
  console.log('SENDING ', message.text,'TO USER', message.text);
  next();

});
//lifecycle convo events
controller.on('conversationStarted', function(bot, convo) {
    console.log('----------------> A conversation started with ', convo.context.user);
  });
  controller.on('conversationEnded', function(bot, convo) {
    console.log('<----------------- A conversation ended with ', convo.context.user);
  });
  controller.hears(['Default Welcome Intent'], 'direct_message', dialogflowMiddleware.hears, function(bot, message) {
    var replyText = message.fulfillment.text;  // message object has new fields added by Dialogflow
    bot.reply(message, replyText);
  });

После установки режима отладки я получил этистроки в консоли:

debug: Setting up a handler for conversationStarted
debug: Setting up a handler for conversationEnded
debug: Setting up a handler for direct_message
hey
debug: RECEIVED MESSAGE
debug: CUSTOM FIND CONVO user text

Это проблема: когда я набираю высказывания, которые должны вызывать намерение DF (например, «эй»), бот ничего не отвечает

1 Ответ

0 голосов
/ 21 декабря 2018

Исправлено, это был тип сообщения, message_received вместо прямого сообщения.Итак, это исправление:

// USE MESSAGE_RECEIVED, NOT DIRECT MESSAGE
     controller.hears(['Default Welcome Intent'], 'message_received', dialogflowMiddleware.hears, function(bot, message) {
        var replyText = message.fulfillment.text;  
        bot.reply(message, replyText);
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...