Exemplo n.º 1
0
        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()
            }));
        }
Exemplo n.º 2
0
      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()));
      }
Exemplo n.º 3
0
        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);
        }