シンプルなカスタマー サービス BOT を構築し、LUIS モデルを設計しました。最初のステップ自体で提供されます。たとえば。私の注文 ABC0898787 のステータスはどうですか? 意図が正しく検出され、ABC0898787 がエンティティとして識別されます。
ただし、次のようにボットを会話に適応させる必要があります。
ユーザー: 私の注文のステータスはどうですか
ボット: 注文番号を入力してください
ユーザー: (ABC0986767 です) または (ABC0986767)
ボットは、番号をエンティティにマップし、リクエストを処理できる必要があります。
インテント メソッドのコード、単一の単語をエンティティとして取得するように LUIS モデルを設定せずに 2 番目のステップを統合する最良の方法は何ですか?
[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);
}