Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }