Я пытаюсь заставить работать следующий пример бота.
https://github.com/microsoft/BotBuilder-Samples/tree/master/experimental/adaptive-dialog/csharp_dotnetcore/04.core-bot
Я могу запустить его и подключиться к нему с помощью эмулятора Bot Framework.
Работает следующий разговор:
Забронировать рейс
- Какой у вас город отправления?
Майами - Куда бы вы хотели поехать в ?
Даллас - Какова дата вашего отъезда?
завтра - Это звучит правильно для вас? Я отправляюсь в Даллас из Майами: 2020-03-13
да - Я забронировал вас в Даллас из Майами 2020-03-13.
Проблема в том, что когда я пытаюсь забронировать рейс И одновременно указать город
"забронировать рейс из Майами" - Какой у вас город вылета?
Насколько я понимаю, бот должен распознайте сущность Майами как город отправления, а затем спросите город назначения.
Я считаю, что файл RootDialog.cs (я использую прямо из образца) использует SetProperty () в намерении Book_flight для достижения sh this.
https://github.com/microsoft/BotBuilder-Samples/blob/master/experimental/adaptive-dialog/csharp_dotnetcore/04.core-bot/Dialogs/RootDialog.cs
Я думал, что действие SetProperty () сохранит сущность
Value = "@fromCity.location"
в свойстве
Property = "conversation.flightBooking.destinationCity"
Впоследствии TextInput будет использовать приглашение
Prompt = new ActivityTemplate("@{PromptForMissingInformation()}")
, которое читает в файле RootDialog.lg
https://github.com/microsoft/BotBuilder-Samples/blob/master/experimental/adaptive-dialog/csharp_dotnetcore/04.core-bot/Dialogs/RootDialog.lg
# PromptForMissingInformation
- IF: @{conversation.flightBooking.departureCity == null}
- @{PromptForDepartureCity()}
- ELSEIF: @{conversation.flightBooking.destinationCity == null}
- @{PromptForDestinationCity()}
- ELSEIF: @{conversation.flightBooking.departureDate == null}
- @{PromptForTravelDate()}
- ELSE:
- @{ConfirmBooking()}
Это НЕ должно запрашивать город отправления, если он уже был предоставлен / сохранен.
Я также посмотрел на результаты, возвращенные из LUIS с использованием трассировки LUIS в эмуляторе Bot Framework. LUIS, кажется, правильно идентифицирует намерение Book_flight И сущность fromCity как miami
{
"recognizerResult": {
"alteredText": null,
"entities": {
"$instance": {
"fromCity": [
{
"endIndex": 22,
"startIndex": 17,
"text": "miami",
"type": "builtin.geographyV2.city"
}
]
},
"fromCity": [
{
"location": "miami",
"type": "city"
}
]
},
"intents": {
"Book_flight": {
"score": 0.941154063
}
},
"text": "book flight from miami"
}
}
Почему SetProperty () не сохраняет информацию сущности fromCity? 3 действия SetProperty () можно удалить, и бот по-прежнему работает так же. Этот пример бот работает для других людей? Чего мне не хватает?
Буду признателен за любую помощь.