private async Task <object> CallSearchAPI(string location, string searchType) { var client = new HttpClient(); var queryString = HttpUtility.ParseQueryString(string.Empty); // Request headers client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", WebConfigurationManager.AppSettings["CogServices:NewsSearch:ID"]); // Request parameters queryString["count"] = "4"; queryString["offset"] = "0"; queryString["mkt"] = "en-US"; queryString["safeSearch"] = "Moderate"; string uri = null; if (searchType == "news") { queryString["q"] = "Travel related news about " + location; uri = "https://api.cognitive.microsoft.com/bing/v5.0/news/search?" + queryString; } else if (searchType == "destination") { queryString["q"] = "Travel desitnations in " + location; uri = "https://api.cognitive.microsoft.com/bing/v5.0/search?" + queryString; } var response = await client.GetAsync(uri); HttpContent resultContent = response.Content; var result = await resultContent.ReadAsStringAsync(); // Populate a JSON object with the results of the API call if (searchType == "news") { NewsResult news = new NewsResult(); JsonConvert.PopulateObject(result, news); return(news); } else if (searchType == "destination") { DestinationResult destination = new DestinationResult(); JsonConvert.PopulateObject(result, destination); return(destination); } return(null); }
private IMessageActivity MakeDestinationCards(IDialogContext context, DestinationResult dest) { var resultMessage = context.MakeMessage(); resultMessage.AttachmentLayout = AttachmentLayoutTypes.Carousel; resultMessage.Attachments = new List <Attachment>(); foreach (var item in dest.webPages.value) { var action = new CardAction(); action.Type = "openUrl"; action.Value = item.url; HeroCard heroCard = new HeroCard() { Title = item.name, Text = item.snippet, Tap = action, }; resultMessage.Attachments.Add(heroCard.ToAttachment()); } return(resultMessage); }