Я работаю над ботом, который вы можете использовать для бронирования номеров.Я использую встроенную сущность datetime luis для определения времени начала и окончания встречи.Луис прекрасно распознает даты и время, но я не могу получить их в luisResult в коде бота.Я использую Microsoft.Bot.Builder V4.3.2
Это пример предложения:
"какая комната доступна с 14:00 до 16:00"
Необработанный luisResult содержит
"entities": [
{
"entity": "from 2pm to 4pm",
"type": "builtin.datetimeV2.timerange",
"startIndex": 24,
"endIndex": 38,
"resolution": {
"values": [
{
"timex": "(T14,T16,PT2H)",
"type": "timerange",
"start": "14:00:00",
"end": "16:00:00"
}
]
}
}
]
Это то, что я получаю от использования LuisService в коде:
{
"type": "timerange",
"timex": [
"(T14,T16,PT2H)"
]
}
В нем отсутствуют свойства "start" и "end"Я обнаружил, что эта ошибка также присутствовала в botframework V3, но она была решена в V3.8 https://github.com/Microsoft/BotBuilder/issues/2764
Это вызов к luisService:
var luisResults = await _services.LuisServices[LuisConfiguration].RecognizeAsync(dc.Context, cancellationToken);
Я ожидал "начало и конец должны быть сериализованы для объекта DateTime v2.
РЕДАКТИРОВАТЬ: Чтобы обойти эту проблему, можно включить полный ответ API в экземпляре службы бота:
var app = new LuisApplication(luis.AppId, luis.AuthoringKey, luis.GetEndpoint());
var recognizer = new LuisRecognizer(app, includeApiResults: true);
Полный результат теперь можно получить в
luisResults.Properties["luisResult"]