我使用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
答案 0 :(得分:6)
这就是triggerAction
对你做的事。它们可以非常方便地保持对话框打开(http://www.pveller.com/smarter-conversations-part-2-open-dialogs)但在你的情况下它们会妨碍你。
如果将对话框放在IntentDialog
下,则可以将对话框免疫保留在全局路由系统中。如果您所做的只是A
和B
,那么这将是您的代码的不可中断的等价物:
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);
});