我正在控制台聊天机器人应用程序中测试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();
.
.
.
预先感谢