web-dev-qa-db-ja.com

Microsoftボットフレームワークでの複数のダイアログの処理

私はMicrosoftボットフレームワークを使用してボットを作成しています。ボットはレストランの注文を受け取ります。たとえば、顧客が最初の注文をするなど、複数のダイアログをどのように処理できるか知りたいので、ボットにあなたに尋ねてもらいます他に何か欲しい?次に、顧客はyes/noと言います。yesの場合、最初の1つの状態を保持したまま同じdailogを繰り返しますが、ドキュメントに表示されているのは1つの会話と1つのダイアログだけです。

どうもありがとう

14

複数のダイアログを管理するには、 ダイアログチェーン を使用する必要があります。ダイアログのスタックを明示的に管理する( Call/Doneを使用 )か、暗黙的にChain Fluentメソッドを使用して管理できます。 こちら の使い方のサンプルです。

ユーザーが選択できるもののセットが既に事前定義されている場合、 FormFlow を使用することをお勧めします。 PizzaSandwich サンプルは、事前定義されたオプションのセットで注文を処理する方法の良い例です。

15
Ezequiel Jadib

Microsoft Bot FrameworkのバージョンV4では、FormFlowを Waterfall Dialog に置き換える必要があります。ここでは、stepContext.Values(辞書)を使用してウォーターフォールステップ全体の状態を維持し、[はい]または[いいえ]の応答を選択してユーザーに提示し、[はい]応答の場合はウォーターフォールダイアログを繰り返し、そうでない場合は最後のウォーターフォールステップでダイアログを終了します。

以下のウォーターフォールをベースのコンストラクターに追加 コンポーネントダイアログ し、ユーザーの選択に従ってウォーターフォールを繰り返します。

WaterfallStep[] myWaterfallDialog = new WaterfallStep[]
{ 
    this.waterfallStepToGetUserOrder,
    .......
    this.promptUserForChoiceStep,
    this.EndDialogStep
}
AddDialog(new WaterfallDialog("mydialog", myWaterfallDialog);