Создав простой бот для обслуживания клиентов, разработали модель LUIS, и она отлично работает, когда номер заказа. предоставляется на первом шаге. например, для каков статус моего заказа ABC0898787? где намерение обнаружено правильно и ABC0898787 идентифицируется как объект.
Однако нужно адаптировать бота для разговора следующим образом:
Пользователь: каков статус моего заказа
Бот: укажите номер заказа
Пользователь: (Это ABC0986767) или (ABC0986767)
Бот должен иметь возможность сопоставить номер с сущностью и обработать запрос.
код для метода намерения, как лучше всего интегрировать второй шаг без настройки модели LUIS для принятия отдельных слов как сущности?
[LuisIntent("OrderStatus")]
public async Task OrderStatus(IDialogContext context, LuisResult result)
{
var returnMsg = "You wanted to check the order status";
var orderStatus = "Dispatched";
var deliveryDate = DateTime.Now.AddDays(3);
var entities = new List<EntityRecommendation>(result.Entities);
if(entities.Any((entity)=> entity.Type == "Order"))
{
var orderEntity = entities.Where((entity) => entity.Type == "Order").FirstOrDefault();
var resolutionStr = orderEntity.Entity;
if(!string.IsNullOrEmpty(resolutionStr))
{
returnMsg = "Your order " + resolutionStr + " is " + orderStatus + " and expected to arrive " + deliveryDate.Humanize();
}
}
await context.PostAsync(returnMsg);
context.Wait(MessageReceived);
}