botframework 中的对话框使用 LUIS.ai
dialogs in botframework using LUIS.ai
我有一段代码可以在我的本地机器人上完美运行,但与 LUIS 集成时却很奇怪。这是一个重定向到另一个对话框的简单对话:
// Modelo de datos cargado en luis.ai
var recognizer = new builder.LuisRecognizer(process.env.LUIS_MODEL_URL);
bot.recognizer(recognizer);
//first intent, greeting intent to say hi to the user
bot.dialog('greetings', [
function (session) {
var greetings = ["¡Hola!", "Bonjour amigo!", "zdravstvuyte! (Así se dice hola en ruso)"];
var pickAGreeting = function () {
var rnd_greeting = greetings[Math.floor(Math.random() * 4)];
return rnd_greeting;
};
session.send(pickAGreeting(), session.message.text);
builder.Prompts.text(session, 'What can I do for you about Office?');
},
function (session, results) {
var user_response = results.response;
session.beginDialog('getProductoOffice', user_response);
}
]).triggerAction({
matches: 'greetings',
onInterrupted: function (session) {
session.send('Can I help you with something?');
}
});
bot.dialog('getProductoOffice', [
function (session, args) {
session.send('Welcome to O365 help!', session.message.text);
...
And the bot does this:
[me]: Hola
[bot]: ¡Hola!
[bot]: What can I do for you about Office?
[me]: Tell me about Skype
[bot]: Can I help you with something?
奇怪的是提示我office之后,一直没有进入"function (session, results)",直接进入了被打断的对话代码
这段代码在没有 LUIS 集成的情况下可以完美运行,并且可以在对话之间正确移动。
由于 triggerAction
行为,每次我输入 LUIS 识别的话语时对话都会中断。
要在任务为 运行 时禁用识别器,我必须在识别器中使用方法 onEnabled
,如下所示:
var recognizer = new builder.LuisRecognizer('<model>').onEnabled(function (context, callback) {
var enabled = context.dialogStack().length == 0;
callback(null, enabled);
});
这不会中断对话堆栈,并且只有在没有对话时识别器才会工作 运行。
我有一段代码可以在我的本地机器人上完美运行,但与 LUIS 集成时却很奇怪。这是一个重定向到另一个对话框的简单对话:
// Modelo de datos cargado en luis.ai
var recognizer = new builder.LuisRecognizer(process.env.LUIS_MODEL_URL);
bot.recognizer(recognizer);
//first intent, greeting intent to say hi to the user
bot.dialog('greetings', [
function (session) {
var greetings = ["¡Hola!", "Bonjour amigo!", "zdravstvuyte! (Así se dice hola en ruso)"];
var pickAGreeting = function () {
var rnd_greeting = greetings[Math.floor(Math.random() * 4)];
return rnd_greeting;
};
session.send(pickAGreeting(), session.message.text);
builder.Prompts.text(session, 'What can I do for you about Office?');
},
function (session, results) {
var user_response = results.response;
session.beginDialog('getProductoOffice', user_response);
}
]).triggerAction({
matches: 'greetings',
onInterrupted: function (session) {
session.send('Can I help you with something?');
}
});
bot.dialog('getProductoOffice', [
function (session, args) {
session.send('Welcome to O365 help!', session.message.text);
...
And the bot does this:
[me]: Hola
[bot]: ¡Hola!
[bot]: What can I do for you about Office?
[me]: Tell me about Skype
[bot]: Can I help you with something?
奇怪的是提示我office之后,一直没有进入"function (session, results)",直接进入了被打断的对话代码
这段代码在没有 LUIS 集成的情况下可以完美运行,并且可以在对话之间正确移动。
由于 triggerAction
行为,每次我输入 LUIS 识别的话语时对话都会中断。
要在任务为 运行 时禁用识别器,我必须在识别器中使用方法 onEnabled
,如下所示:
var recognizer = new builder.LuisRecognizer('<model>').onEnabled(function (context, callback) {
var enabled = context.dialogStack().length == 0;
callback(null, enabled);
});
这不会中断对话堆栈,并且只有在没有对话时识别器才会工作 运行。