2

シンプルなカスタマー サービス 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);
        }
4

1 に答える 1

1

MessageReceived を、ユーザーの入力を受け取るメソッドの名前に置き換えます。その前に、エンティティが存在するかどうかを確認します。存在する場合は MessageReceived を使用し、存在しない場合はこのメソッドを使用します。

擬似コード:

if (entity.exists) 
    OutputResult()
    Context.Wait(MessageReceived)
else //entitiy doesn't exist
    SendMessage("Please enter order number")
    Context.Wait(MyMethod)

MyMethod というメソッドは次のように始まります。

public async Task MyMethod(IDialogContext context, IAwaitable<IMessageActivity> argument) 
{
    var response = await argument;
    string text = response.Text;

Microsoft は、MessageReceived が単なるメソッドの名前 (表示されていない) であり、他のメソッドの名前に置き換えることができることを十分に明確にしていないと思います。context.Waitユーザーが新しいメッセージを送信する前に、コードが context.Wait() に 2 回到達しない限り、条件に応じてメソッドに複数の が存在することもあります。

于 2016-09-22T09:04:33.457 に答える