gpt4 book ai didi

c# - PromptDialog Choice with List 对象 Bot Framework

转载 作者:行者123 更新时间:2023-11-30 15:19:06 25 4
gpt4 key购买 nike

我正在创建一个 PromptDialog Choice,它填充我存储在数据库中的对象选项列表。但是,它只显示对象的类型而不是选项的名称。谁能建议我从数据库加载选项并将其与 PromptDialog 绑定(bind)的最佳方法?这是我尝试过的:

    private void ShowOptions(IDialogContext context)
{
List<Option> ListOptions = Option.CreateListOption();
PromptDialog.Choice(context, this.OnOptionSelected, ListOptions, "Are you looking for a flight or a hotel?", "Not a valid option", 3);
}

private async Task OnOptionSelected(IDialogContext context, IAwaitable<Option> result)
{
try
{
Option optionSelected = await result;

switch (optionSelected.Text)
{
case "A":
context.Call(new RootDialog(), this.ResumeAfterChoose);
break;
default: { context.Wait(MessageReceiveAsync); break; }
}
}
catch (TooManyAttemptsException ex)
{
await context.PostAsync($"Ooops! Too many attemps :(. But don't worry, I'm handling that exception and you can try again!");

context.Wait(this.MessageReceiveAsync);
}
}

这是我的选项对象:

[Serializable]
public class Option
{
public int ID { get; set; }
public string Text { get; set; }

public Option()
{
ID = 0;
Text = "";
}

public static List<Option> CreateListOption()
{
List<Option> list = new List<Option>();
Option A = new Option();
A.ID = 1;
A.Text = "A";
Option B = new Option();
B.ID = 2;
B.Text = "B";
list.Add(A);
list.Add(B);
return list;
}
}

这是我得到的结果: Bot Emulator test result

最佳答案

重写 Option 对象的 ToString() 方法可以解决这个问题。

如果您不提供 PromptStyle 作为参数,Microsoft botframework 默认使用 PromptStyle.Auto 打印选项。所以 botframework 根据 channel 选择样式。对于模拟器,它似乎是文本,因此它会尝试将选项打印为字符串。

关于c# - PromptDialog Choice with List 对象 Bot Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42621534/

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