internal static AlexaResponse TopProductsIntentHandler(Request request) { var limit = 10; var criteria = string.Empty; if (request.SlotsList.Any()) { var maxLimit = 10; var limitValue = request.SlotsList.FirstOrDefault(s => s.Key == "Limit").Value; if (!string.IsNullOrWhiteSpace(limitValue) && int.TryParse(limitValue, out limit) && !(limit >= 1 && limit <= maxLimit)) { limit = maxLimit; } criteria = request.SlotsList.FirstOrDefault(s => s.Key == "Criteria").Value; } var output = new StringBuilder(); output.AppendFormat("Here are the top {0} {1}. ", limit, string.IsNullOrWhiteSpace(criteria) ? "products" : criteria); if (IsDemo) { using (var db = new alexaskilldemoEntities()) { if (criteria == "make") { db.Products.Take(limit).OrderByDescending(c => c.Votes).ToList() .ForEach(c => output.AppendFormat("{0}. ", c.Description)); } else { db.Products.Take(limit).OrderByDescending(c => c.Votes).ToList() .ForEach(c => output.AppendFormat("{0} and price {1}. ", c.ProductName, c.Price)); } } } else { var homeStorefrontApi = new HomeStorefrontApi(); var topProducts = homeStorefrontApi.TopProduct().Result; topProducts.ForEach(c => output.AppendFormat("{0} and price {1}. ", c.DisplayName, c.ListPriceWithCurrency)); } return(new AlexaResponse(output.ToString(), new SimpleCard() { Title = "Sitecore storefront", Content = output.ToString() })); }
internal static AlexaResponse NewProductsIntentHandler(Request request) { var output = new StringBuilder("Here are the latest products. "); using (var db = new alexaskilldemoEntities()) { db.Products.Take(10).OrderByDescending(c => c.CreatedDate).ToList() .ForEach(c => output.AppendFormat("{0} cost {1}. ", c.ProductName, c.Price)); } return(new AlexaResponse(output.ToString())); }
internal static AlexaResponse PickAWinnerIntentHandler(Request request) { TwitterAdapter.ConsumerKey = TwitterConfiguration.ConsumerKeyApiKey; TwitterAdapter.ConsumerSecret = TwitterConfiguration.ConsumerSecretApiSecret; var query = TwitterConfiguration.DefaultQuery; var results = TwitterAdapter.SearchAsync(query); var model = new TwitterSearch { Query = query, TwitterResult = results }; var result = model.TwitterResult[new Random().Next(model.TwitterResult.Count)]; using (var db = new alexaskilldemoEntities()) { var competitionWinner = db.CompetitionWinners.FirstOrDefault(); if (competitionWinner == null) { db.CompetitionWinners.Add(new CompetitionWinner { Name = result.ScreenNameResponse, Tweet = result.Text, CreatedDate = result.CreatedAt, ProfileImageUrl = result.ProfileImageUrl, UpdatedDate = DateTime.UtcNow }); } else { competitionWinner.Name = result.ScreenNameResponse; competitionWinner.Tweet = result.Text; competitionWinner.CreatedDate = result.CreatedAt; competitionWinner.ProfileImageUrl = result.ProfileImageUrl; competitionWinner.UpdatedDate = DateTime.UtcNow; } db.SaveChanges(); } var text = "I have selected user <prosody volume=\"x-loud\">" + result.ScreenNameResponse + "</prosody><emphasis level=\"moderate\"> Tweet <break time=\"1s\"/>" + result.Text + "</emphasis>" + "<audio src='https://s3.amazonaws.com/ask-soundlibrary/human/amzn_sfx_crowd_cheer_med_01.mp3'/> " + "<audio src='https://s3.amazonaws.com/ask-soundlibrary/human/amzn_sfx_crowd_applause_05.mp3'/>"; var response = new AlexaResponse(text, new SimpleCard() { Title = "Sitecore storefront", Content = text }, true, text); return(response); }