Я не уверен, что вы имеете в виду, говоря, что можете написать только 2 функции; но если вы пытаетесь вызвать LUIS внутри своего диалога, вы можете следовать этому примеру . Вы вызовете LuisRecognizer внутри ступени водопада на session.message.text
. Фрагмент из примера ниже:
builder.LuisRecognizer.recognize(session.message.text, '<model url>', function (err, intents, entities) {
if (entities) {
var entity = builder.EntityRecognizer.findEntity(entities, 'TYPE');
// do something with entity...
}
});
Это позволит вам вызывать LUIS внутри водопада для распознавания сообщений вашего пользователя.
Что касается вашего кода, есть ряд проблем:
// Original Code
dialog.matches('OrderPizza', [
function (session, args, next) {
var order = builder.EntityRecognizer.findEntity(args.entities, 'order');
var kind = builder.EntityRecognizer.findEntity(args.entities, 'Kind');
session.dialogData.intentScore = args.score;
if (!order) { // What about kind?
builder.Prompts.text(session, 'welcome please order pizza');
} else {
session.dialogData.order = order; // What about kind?
next();
}
},
function (session, results) {
var order = session.dialogData.order;
if (results.response) {
session.send('what kind?');
}else{
session.send(`we don't have that kind of pizza`);
}
}
]);
На первом этапе водопада вы не сохраняете объект "Kind"
в свой dialogData.
function (session, args, next) {
var order = builder.EntityRecognizer.findEntity(args.entities, 'order');
var kind = builder.EntityRecognizer.findEntity(args.entities, 'Kind');
session.dialogData.intentScore = args.score;
if (kind) {
session.dialogData.kind = kind;
}
if (!order) {
builder.Prompts.text(session, 'welcome please order pizza');
} else {
session.dialogData.order = order;
next();
}
}
На втором этапе водопада вы не вызываете next
и не отправляете Prompt
пользователю, что приводит к зависанию после двух функций.
function (session, results, next) {
var order = session.dialogData.order ? session.dialogData.order : results.response;
var kind = session.dialogData.kind;
if (results.response && !kind) {
builder.Prompts.text(session, 'what kind?');
} else {
session.send('we don\'t have that kind of pizza');
next();
}
}
person
Steven G.
schedule
14.06.2017