Bot Framework - Получение ответов пользователя из формы, созданной схемой json
Я использую функцию BuildJsonForm для определения формы с использованием схемы JSON. Я генерирую JObject с некоторыми параметрами, которые бот запрашивает у пользователя во время выполнения.
Вот пример JObject/JSON, который я посылаю функции BuildJsonForm:
`
{
"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, но до сих пор я не нашел способа сделать это.
Я также попытался получить доступ к BotData с помощью этой строки context.PrivateConversationData.TryGetValue<string>("Files", out files);
Таким образом, я мог бы отправить ответы пользователя в базу данных непосредственно из раздела "OnCompletion" в JSON, но я все еще не могу получить доступ к бот-данным или контексту в разделе OnCompletion.
Есть ли другой способ успешно получить ответы пользователя на форму, сгенерированную JObject/JSON, после того, как пользователь ответит на последний вопрос в форме?
1 ответ
Казалось, что причиной моего проекта была отправка этих параметров в функцию:
GeneratedForm.BuildJsonForm(channel, user, convers);
поскольку я редактировал функцию без этих параметров и перестал получать исключение, указанное в вопросе. Я буду искать причину, по которой эти параметры вызывали проблемы, но решение, которое я нашел в этом случае, состояло в том, чтобы определить функцию следующим образом:
GeneratedForm.BuildJsonForm();