可以将发送/接收中间件软件与Dialogflow实现和Botkit的听到中间件相混合吗?

时间:2019-01-16 12:50:16

标签: integration middleware botkit dialogflow-fulfillment

我正在控制台聊天机器人应用程序中测试Dialogflow实现库集成。 (“ botkit-middleware-dialogflow”:“ ^ 2.0.4”,),Botkit版本为v.0.6.21。 我注册了发送和接收中间件,如下所示:

controller.middleware.receive.use(dialogflowMiddleware.receive);
controller.middleware.send.use(dialogflowMiddleware.use);

我还这样设置DF中间件:

const dialogflowMiddleware = require('botkit-middleware-dialogflow')({
    keyFilename: './myagentFile.json',
    ignoreType: ['yes','no','hello'] 
  });

因此,如果我键入“ hello”,则convo由回调管理,这很好,但是在对话中回答“是”会触发“默认回退意图”代理...这不是我期望的。 是否可以将两种方式混合使用来收听用户输入? 这是代码:

controller.hears( 'hello', 'message_received', function (bot, message) {
//start convo here
    bot.createConversation(message, (err, convo) => {

      //THREADS
      convo.addMessage({ text: myConvo.respLogin }, 'login_thread');
      convo.addMessage({ text: myConvo.botOnBoarding.respOnBoarding }, 'default');
      convo.addMessage({ text: myConvo.respMenu }, 'menu_thread');



      // Create a yes/no question in the default thread...

      convo.addQuestion(myConvo.botQuestions.questLogin, [

          {
              pattern: 'yes', //-->  IT GOES OUT TO DIALOGFLOW... WHY??
              callback: function (response, convo) {
                  convo.gotoThread('login_thread');
                  convo.next();
              },
          },
          {
              pattern: 'no',
              callback: function (response, convo) {
                  convo.gotoThread('stop_thread');
                  convo.next();
              },
          },

          {
              default: true,
              callback: function (response, convo) {
                 // convo.gotoThread('default_thread');
                  convo.repeat();
                  convo.next();
              },
          }
      ], { 'key': 'choice' }, 'default');
     convo.activate();
.
.
.

预先感谢

0 个答案:

没有答案