Итак, по-видимому, все работает нормально в моем боте, за исключением того, что он не ждет ответа покоя от restsharp, а вместо этого напрямую отображает пустое поле, а затем "Готово" без какой-либо задержки перед отображением пустого поля.генерация ответа занимает около 15 секунд, но бот даже не ждет 2 секунды.Нет ошибок, и API работает нормально.
Вот код:
private async Task OnQuerySelected(IDialogContext context, IAwaitable<string> result){
try
{
string optionSelected = await result;
string[] tokens = optionSelected.Split(',');
var rclient = new RestClient("https://demoappservice.azurewebsites.net/");
var request = new RestRequest("demoAPI", Method.POST);
request.AddParameter(
"application/json",
"{ \"name\": \""+tokens[0]+"\", \"address\": \""+tokens[1]+"\"}", // <- your JSON string
ParameterType.RequestBody);
//request.AddParameter("identifier",this.id);
//request.AddParameter(this.question.keyword, optionSelected);
//IRestResponse rresponse = await rclient.Execute(request);
Task<IRestResponse> t= rclient.ExecuteTaskAsync(request);
t.Wait();
var restResponse = await t;
//await context.PostAsync("request: "+tokens[0]+tokens[1]);
string content = restResponse.Content;
await context.PostAsync(content);
await context.PostAsync("Done!");
}
catch (TooManyAttemptsException ex)
{
await context.PostAsync($"Ooops! Too many attempts :(. But don't worry, I'm handling that exception and you can try again!");
context.Wait(this.MessageReceivedAsync);
}
catch (Exception exg)
{
await context.PostAsync(exg.ToString());
context.Wait(this.MessageReceivedAsync);
}
}
PS :.Я также пробовал блокировать не отвечающую ASync версию ответа RESTSharp (как видно из комментариев), ничего не получалось.