【发布时间】:2018-08-24 13:01:25
【问题描述】:
我正在使用 MS 的 Bot Framework 玩一些聊天机器人。 我创建了一个用来预订航班的软件,它集成了 LUIS。
我的问题是:一旦进入由 LUIS 触发的航班预订对话框,我想检查有关航班的所有信息是否由用户提供(出发城市、到达城市、日期、航空公司...) .所以如果我错过了一个信息,例如出发城市,机器人会问“你能给我出发城市吗?” qnd 如果我写“来自伦敦”,LUIS 会将其检测为新的航班预订并触发另一个对话。但我显然希望它留在对话框中!
这是到目前为止的对话代码,以防万一缺少出发城市:
// Main dialog with LUIS
bot.dialog('FlightBookingDialog', [
function (session, args, next) {
// Resolve and store any entity passed from LUIS.
var intent = args.intent;
session.dialogData.airline = builder.EntityRecognizer.findEntity(intent.entities, 'Airline');
session.dialogData.class = builder.EntityRecognizer.findEntity(intent.entities, 'Class');
session.dialogData.date_time = builder.EntityRecognizer.findEntity(intent.entities, 'builtin.datetimeV2');
session.dialogData.departure = builder.EntityRecognizer.findEntity(intent.entities, 'Departure');
session.dialogData.destination = builder.EntityRecognizer.findEntity(intent.entities, 'Destination');
session.dialogData.number_tickets = builder.EntityRecognizer.findEntity(intent.entities, 'number');
session.send("I see you want to travel, great !");
if(!session.dialogData.departure) {
builder.Prompts.text(session, "Can you specify me a departure city please ?");
} else {
next();
}
},
function (session, args, results, next) {
if (results.response) {
builder.LuisRecognizer.recognize(session.message.text, luisModelUrl,
function(err, intents, entities) {
if(entities) {
var departure = builder.EntityRecognizer.findEntity(intents.entities, 'Departure');
if (departure) {
session.dialogData.departure = departure;
}
}
}
);
};
session.send("Good !");
},
]).triggerAction({ 匹配:'FlightBooking' });
【问题讨论】:
标签: node.js dialog botframework bots azure-language-understanding