要点は次のとおりです。Microsoft.Bot.Builder.FormFlow を使用して作成されたフォームを実行するときにユーザーが選択した回答に応じて、現在の小計を時々出力したいと考えています。
FormBuilder で Message() メソッドを使用することを考えましたが、BuildForm() メソッド自体が静的であるため、既に設定されているプロパティの値を確認する方法がわかりません。
何か案は?
要点は次のとおりです。Microsoft.Bot.Builder.FormFlow を使用して作成されたフォームを実行するときにユーザーが選択した回答に応じて、現在の小計を時々出力したいと考えています。
FormBuilder で Message() メソッドを使用することを考えましたが、BuildForm() メソッド自体が静的であるため、既に設定されているプロパティの値を確認する方法がわかりません。
何か案は?
ご意見をいただきありがとうございます。現在、これを行う優れた方法はありません。以下を Builder ライブラリに追加しました。これは、来週初めに次のリリースに含まれるはずです。それはあなたのニーズを満たすでしょうか?
#region Documentation
/// <summary> Given <paramref name="state"/> return a <see cref="PromptAttribute"/> with a template for the message to display. </summary>
/// <typeparam name="T"> Form state type. </typeparam>
/// <param name="state"> Form state. </param>
/// <returns> A PromptAttribute describing the message to display. </returns>
#endregion
public delegate PromptAttribute MessageDelegate<T>(T state);
IFormBuilder<T>
...
#region Documentation
/// <summary> Generate a message using a delegate. </summary>
/// <param name="generateMessage"> Delegate for building message. </param>
/// <param name="condition"> Whether or not this step is active. </param>
/// <returns>This form.</returns>
#endregion
IFormBuilder<T> Message(MessageDelegate<T> generateMessage, ConditionalDelegate<T> condition = null);
待ちきれない場合は、validate を使用してフォーム状態の合計フィールドを更新し、フィールド値をメッセージに表示できます。ただし、フィールドがユーザーのフローの一部であるという欠点があります。
IField を自分で実装し、Active から最後のフォーム状態を取得して、独自のプロンプトと認識機能を生成することもできます。これには、手間がかかり、ユーザーの応答が必要になるという欠点があります。