public static async Task <EvaluateResult> Evaluate(string query) { var client = new HttpClient(); var queryString = HttpUtility.ParseQueryString(string.Empty); // Request headers client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "SECRET"); // Request parameters queryString["expr"] = query; queryString["model"] = "latest"; queryString["count"] = "10"; queryString["attributes"] = "Id,E"; var uri = "https://api.projectoxford.ai/academic/v1.0/evaluate?" + queryString; var response = await client.GetAsync(uri); string resp = await response.Content.ReadAsStringAsync(); EvaluateResult result = JsonConvert.DeserializeObject <EvaluateResult>(resp); return(result); }
public async Task AfterChosenAsync(IDialogContext context, IAwaitable <long> argument) { var choice = await argument; AcademicResult result = new AcademicResult(); context.PerUserInConversationData.TryGetValue <AcademicResult>("result", out result); string responseMessage = string.Empty; string linkMsg = string.Empty; if (result != null) { if (choice > result.interpretations.Count()) { await context.PostAsync("Okay! ask me."); } else { EvaluateResult resp = await Utilities.Evaluate(result.interpretations[Convert.ToInt16(choice) - 1].rules[0].output.value); int counter = 1; foreach (var en in resp.entities) { EX ex = JsonConvert.DeserializeObject <EX>(en.E); linkMsg = string.Empty; foreach (var link in ex.S) { switch (link.Ty) { case 1: linkMsg += $" [HTML]({link.U})"; break; case 2: linkMsg += $" [TEXT]({link.U})"; break; case 3: linkMsg += $" [PDF]({link.U})"; break; case 4: linkMsg += $" [DOC]({link.U})"; break; case 5: linkMsg += $" [PPT]({link.U})"; break; case 6: linkMsg += $" [XLS]({link.U})"; break; case 7: linkMsg += $" [PS]({link.U})"; break; default: linkMsg += $" [LINK]({link.U})"; break; } } responseMessage += $"- {counter} . {ex.DN} {linkMsg} \r\n"; counter++; } await context.PostAsync(responseMessage); } } context.Wait(MessageReceivedAsync); }