formFlowフォームからuserDataにアクセスしたいとします。私がそれを行うことができる唯一の方法は、以下に示すように、私のFormFlowクラスpublic static IDialogContext context { get; set; }
上に静的コンテキストオブジェクトを作成することです。BotFrameworkフォームフロー内でuserDataにアクセスする
public static IDialogContext context { get; set; }
public static IForm<Reservation> BuildForm()
{
string userName = String.Empty;
context.UserData.TryGetValue<string>("Name", out userName);
return new FormBuilder<Reservation>()
.Field(new FieldReflector<Reservation>(nameof(Reservation.Name))
.SetActive((state) =>
{
//StateClient stateClient = activity.GetStateClient();
//BotData userData = stateClient.BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id);
state.Name = userName;
return String.IsNullOrEmpty(state.Name);
次に、フォームを呼び出す前に私のRootDialogで設定しました。
case ReservationOption:
ReservationForm.context = context;
context.Call(FormDialog.FromForm<Reservation>(ReservationForm.BuildForm,
FormOptions.PromptInStart), this.ReservationFormComplete);
break;
これを行うより良い方法はありますか?
パーフェクト、私はこの同じ問題を考えていました! –