gpt4 book ai didi

c# - BotFramework 在表单流中访问用户数据

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:11 25 4
gpt4 key购买 nike

我想从 formFlow 表单中访问 userData。我能够做到的唯一方法是在我的 FormFlow 类上创建一个静态上下文对象 public static IDialogContext context { get;放; } 如下所示。

    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;

有更好的方法吗?

最佳答案

我认为更好的方法是使用 new 而不是 FromForm 方法来实例化 FormDialog。这样,将允许您发送表单状态的实例(在您的情况下为 Reservation),并预先填充状态中已有的任何值(例如 userName)

var form = new FormDialog<Reservation>(
new Reservation(userName),
ReservationForm.BuildForm,
FormOptions.PromptInStart,
null);

context.Call(form, this.ReservationFormComplete)

Here是一个这样做的例子。

关于c# - BotFramework 在表单流中访问用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com