构建一个简单的客户服务 BOT,设计了 LUIS 模型,并且在订单号时效果很好。是在第一步本身中提供的。例如。我的订单 ABC0898787 的状态如何?其中意图被正确检测并且 ABC0898787 被识别为实体。
但是,需要调整机器人以进行如下对话:
用户:我的订单状态如何
Bot:请提供订单号
用户:(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);
}