1

私は LuisDialog を構築しており、LUIS 統合がうまく機能しています。

必要なすべてのギャップが LUIS で埋められない場合、曖昧さをなくすための最善の方法は何ですか?

現在、私は PromptDialog コールバックを使用しています - そのため、Dialog メソッド (LuisIntent 属性で装飾されています) 内で、詳細を取得したり曖昧さをなくしたりする必要がある場合は、次のようにします。

PromptDialog.Choice<string>(context, EnsureTimeOfDayChosen, new[] { "Morning (AM)", "Afternoon (PM)", "Any" }, "What time of day would you like us to book the appointment? (AM/PM/Any)", "Please choose AM or PM.  Alternatively, if you don't mind which, just say Any.");

デリゲートの本体 (EnsureTimeOfDayChosen):

string AmPmOrAny = await result;
context.PerUserInConversationData.SetValue<string>("TimeOfDay", AmPmOrAny);
BookAppointment(context);

このアプローチの問題点は、デリゲートの最後の行です。正しくないと感じます。最初に呼び出された、LuisIntent で装飾されたメソッドとレジュームにいた場所に簡単にコールバックすることはできません。

代わりに、前もって LUIS 情報を処理し、さらに情報を収集して PerUserInConversationData に格納した後で BookAppointment メソッドを呼び出す必要があります。

私はそれを間違っていますか?

どんな助けでも大歓迎です-よろしく、マット。

4

1 に答える 1

1

ダイアログモデルの現在の実装を考えると、ロジックを実装するより良い方法は考えられません。現在、ユーザーからの非同期応答を待っているときはいつでも、応答時に提供したコールバックでコードが再開されます。非同期プログラミングの Begin/End モデルと考えることができます

于 2016-04-16T00:10:54.453 に答える