Botframework在使用当前的Intent对话框之前不会中断其他意图对话

时间:2017-04-11 16:30:03

标签: node.js botframework luis

我使用LUIS.ai来表达A和B.意图A我使用import tensorflow as tf import cv2 # Create a 3x3 Gabor filter params = {'ksize':(3, 3), 'sigma':1.0, 'theta': 0, 'lambd':15.0, 'gamma':0.02} filter = cv2.getGaborKernel(**params) # make the filter to have 4 dimensions. filter = tf.expand_dims(filter, 2) filter = tf.expand_dims(filter, 3) # Apply the filter on `image` answer = tf.conv2d(image, filter, strides=[1, 1, 1, 1], padding='SAME') 向用户提问几个问题。然而,有时取决于答案,它会转换为意图B.我猜它恰好与我的意图B相匹配,即使我认为它不应该。有没有办法防止这种情况发生?如果我正在通过意图A的对话,我不希望其他意图中断,直到我完成。这是我的代码示例。

builder.Prompts.text

2 个答案:

答案 0 :(得分:6)

这就是triggerAction对你做的事。它们可以非常方便地保持对话框打开(http://www.pveller.com/smarter-conversations-part-2-open-dialogs)但在你的情况下它们会妨碍你。

如果将对话框放在IntentDialog下,则可以将对话框免疫保留在全局路由系统中。如果您所做的只是AB,那么这将是您的代码的不可中断的等价物:

const intents = new builder.IntentDialog({
    recognizers: [
        new builder.LuisRecognizer(process.env.LUIS_ENDPOINT)
    ]
});

intents.matches('A', 'A');
intents.matches('B', 'B');

bot.dialog('/', intents);
bot.dialog('A', []);
bot.dialog('B', []);

答案 1 :(得分:1)

你所要做的就是:

var recognizer = new builder.LuisRecognizer(url) 
    .onEnabled(function (context, callback) {
        // LUIS is only ON when there are no tasks pending(e.g. Prompt text) 
        var enabled = context.dialogStack().length === 0; 
        callback(null, enabled); 
    });