Подключение диалогового окна LUIS к диалоговому окну формы и отображение правильных полей



Я работаю над ботом, где вы можете забронировать рейс. Я работаю с последней версией фреймворка бота (1.1), как предложил здесь.



Вы можете сказать такие вещи, как"закажите мне рейс из Амстердама в Бостон в следующий понедельник".

Теперь я настроил LUIS для ответа с намерением "BookFlight", и в моем боте я сделал LuisDialog и FormDialog так:



[LuisIntent("BookFlight")]
public async Task Process(IDialogContext context, LuisResult result)
{
var form = new BookFlightForm();

var entities = new List<EntityRecommendation>(result.Entities);

var formDialog = new FormDialog<BookFlightForm>(form, BuildForm, FormOptions.PromptInStart, entities);

context.Call(formDialog, OnComplete);
}

[Serializable]
public class BookFlightForm
{
[Prompt("From which city do you want to leave from? {||}", AllowDefault = BoolDefault.True)]
[Describe("Location, example: Amsterdam")]
public string LocationFrom { get; set; }

[Prompt("To which city you want to fly to? {||}", AllowDefault = BoolDefault.True)]
[Describe("Location, example: Las Vegas")]

public string LocationTo { get; set; }

[Prompt("When do you want to leave? {||}", AllowDefault = BoolDefault.True)]
[Describe("Departure date, example: tomorrow, next week or any date like 12-06-2016")]
public DateTime DepartureDate { get; set; }
}


Я получаю следующий ответ от Луиса:



{
"intent": "BookFlight",
"score": 0.987034,
"actions": [
{
"triggered": true,
"name": "BookFlight",
"parameters": [
{
"name": "locationFrom",
"required": true,
"value": [
{
"entity": "amsterdam",
"type": "Flight::LocationFrom",
"score": 0.8548711
}
]
},
{
"name": "locationTo",
"required": true,
"value": [
{
"entity": "boston",
"type": "Flight::LocationTo",
"score": 0.962294638
}
]
},
{
"name": "departureDate",
"required": true,
"value": [
{
"entity": "next monday",
"type": "builtin.datetime.date",
"resolution":
{
"date": "2016-05-09"
}
}
]
}
]
}
]
}


Тот самый задача



Форма не заполнена правильными значениями из LUIS. Поэтому бот попросит вас указать место вашего вылета, дату и место, куда вы хотите лететь. Но это уже описано Луису.



То, что я пробовал до сих пор




  1. сделал новое приложение без дочерних сущностей, но с правильными именами сущностей, никакие значения не были заполнены в форме.

  2. переименована во "типов" из сущности, из 'рейса::местоположение, чтобы в местоположение, чтобы', и т.д. Это сработало, но не сработало для свидания.

  3. предварительно заполнил новый экземпляр 'BookFlightForm' правильными значениями, но бот все равно запросит значения даты.


Так что я немного озадачен, как это исправить. Правильно ли я настроил Луиса? Нужно ли настраивать EntityRecognizer? Было бы неплохо иметь атрибут сущностиLUIS .

Надеюсь, что вы можете помочь мне!

463   1  

1 ответ:

Ваш тип сущности Luis должен соответствовать имени Поля в вашей форме. Если вы измените "type": "Flight::LocationFrom" на "type": "LocationFrom" для вашей сущности Luis, поток формы должен соответствовать сущности с полем LocationFrom в вашей форме и заполнить его правильно.

Comments

    Ничего не найдено.