我正在使用函数来构建JsonForm,以使用JSON模式定义表单。我使用机器人在运行时向用户询问的一些参数生成 JObject。
我发送到函数 BuildJsonForm 的 JObject/JSON 的一个例子是这样的:
'
{
"References": [
"Microsoft.Bot.Connector.dll",
"System.dll",
"mscorlib.dll",
"System.Net.Http.dll"
],
"Imports": [
"Microsoft.Bot.Connector.ThumbnailCard",
"Microsoft.Bot.Connector.StateClient",
"System.Net.Mail",
"System",
"System.Text.RegularExpressions",
"System.Net.Http",
"System.Net",
"System.Text"
],
"type": "object",
"required": [
"username",
"password"
],
"Templates": {
"NotUnderstood": {
"Patterns": [
"I do not understand, Please rephrase that"
]
},
"EnumSelectOne": {
"Patterns": [
"Choose one please"
],
"ChoiceStyle": "Auto"
}
},
"properties": {
"username": {
"Prompt": {
"Patterns": [
"Tell me the {&}, please",
"I need you to especify a {&}, please"
]
},
"type": [
"string",
"null"
],
"Templates": {
"NotUnderstood": {
"Patterns": [
"That is not a valid input"
]
}
}
},
"password": {
"Prompt": {
"Patterns": [
"Tell me the {&}, please",
"I need you to especify a {&}, please"
]
},
"type": [
"string",
"null"
],
"Templates": {
"NotUnderstood": {
"Patterns": [
"That is not a valid input"
]
}
}
}
},
"OnCompletion": "await context.PostAsync("Thank you!"); string files = ""; context.PrivateConversationData.TryGetValue<string>("Files", out files); [more code...]"
}
'
我需要将用户对生成的 JObject/JSON 表单问题的回答发送到数据库,但到目前为止,我还没有找到一种方法来做到这一点。
我还尝试使用此行context.PrivateConversationData.TryGetValue<string>("Files", out files);
访问 BotData,因此我可以直接从 JSON 的"OnCompletion">部分将用户的答案发送到数据库,但我似乎仍然无法访问 OnCompletion 部分的 botdata 或上下文。
在用户回答表单中的最后一个问题后,是否有其他方法可以成功检索用户对 JObject/JSON 生成的表单的响应?
似乎导致我的项目出现问题的是将此参数发送到函数:
GeneratedForm.BuildJsonForm(channel, user, convers);
因为我在没有这些参数的情况下编辑了函数,并且我停止获得问题中指定的异常。我将寻找这些参数导致问题的原因,但在这种情况下我找到的解决方案是这样定义功能:
GeneratedForm.BuildJsonForm();