gpt4 book ai didi

c# - 如何在 Microsoft BotFramework 中使用 FormFlow 结果?

转载 作者:行者123 更新时间:2023-11-30 21:48:42 24 4
gpt4 key购买 nike

我使用 Microsoft BotFramework 创建简单的机器人,并使用 FormFlow。所以:

[Serializable]
public class Test
{
public String Name {get;set;}
public uint Age {get;set; }
}

internal static IDialog<Test> MakeRootDialog()
{
return Chain.From(() => FormDialog.FromForm(Test.BuildForm));
}

和:

 public async Task<Message> Post([FromBody]Message message)
{
if (message.Type == "Message")
{
return await Conversation.SendAsync(message, MakeRootDialog);
}
else
{
return HandleSystemMessage(message);
}
}

因此,Micrisoft BotEmulator 运行良好(和机器人)并询问我的姓名和年龄。但是,如何得到这个选择的结果来使用它呢?

又如何知道用户类型呢?我应该使用 ConversationId 吗?

附言我的意思是我怎样才能从用户名和用户年龄得到结果?我尝试使用:

 var name= result.GetBotPerUserInConversationData<Test>("Name");

但是返回null;

P.P.S:我使用 Bot Emulator:并得到这样的 json 响应:

GetBotPerUserInConversationData:DialogState { some binary data }

所以,我用

   var name= result.GetBotPerUserInConversationData<Test>("DialogState");

但是报错:

 "exceptionMessage": "Error converting value System.Byte[] to type 'Test'. Path ''.",
"exceptionType": "Newtonsoft.Json.JsonSerializationException"

最佳答案

您好,因为您正在构建表单,您可以在 FormFlowComplete 回调方法中获得结果,如下所示

private async Task yourFormFlowComplete(IDialogContext context, IAwaitable<yourclass> result)
{
var res = await result;//res will contain the result set, if you build the form with a class
}

关于c# - 如何在 Microsoft BotFramework 中使用 FormFlow 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37497476/

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