List <AudioCard> GetAudioCardsForPreviews(string genre)
        {
            var         grooveSvc = new GrooveService();
            List <Item> tracks    = grooveSvc.GetTracks(genre);

            var cards =
                (from track in tracks
                 let artists =
                     string.Join(", ",
                                 from artist in track.Artists
                                 select artist.Artist.Name)
                     let preview = grooveSvc.GetPreview(track.Id)
                                   select new AudioCard
            {
                Title = track.Name,
                Subtitle = artists,
                Media = new List <MediaUrl>
                {
                    new MediaUrl(preview.Url)
                }
            })
                .ToList();

            return(cards);
        }
Esempio n. 2
0
        List <HeroCard> GetHeroCardsForTracks(string genre)
        {
            List <Item> tracks = new GrooveService().GetTracks(genre);

            var cards =
                (from track in tracks
                 let artists =
                     string.Join(", ",
                                 from artist in track.Artists
                                 select artist.Artist.Name)
                     select new HeroCard
            {
                Title = track.Name,
                Subtitle = artists,
                Images = new List <CardImage>
                {
                    new CardImage
                    {
                        Alt = track.Name,
                        Tap = BuildBuyCardAction(track),
                        Url = track.ImageUrl
                    }
                },
                Buttons = new List <CardAction>
                {
                    BuildBuyCardAction(track)
                }
            })
                .ToList();

            return(cards);
        }
        Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result)
        {
            List <string> genres = new GrooveService().GetGenres();

            genres.Add("Done");
            PromptDialog.Choice(context, ResumeAfterGenreAsync, genres, "Which music category?");
            return(Task.CompletedTask);
        }
Esempio n. 4
0
        async Task PerformSearchAsync(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            IMessageActivity activity = await result;

            string values     = activity.Value?.ToString();
            var    searchArgs = JsonConvert.DeserializeObject <SearchArguments>(values);

            var results = new GrooveService().Search(searchArgs);

            context.Done(this);
        }
Esempio n. 5
0
        async Task <List <HeroCard> > GetHeroCardsForTracksAsync(string genre)
        {
            List <Item> tracks = new GrooveService().GetTracks(genre);

            var cogSvc = new CognitiveService();

            foreach (var track in tracks)
            {
                track.ImageAnalysis = await cogSvc.AnalyzeImageAsync(track.ImageUrl);
            }

            var cards =
                (from track in tracks
                 let artists =
                     string.Join(", ",
                                 from artist in track.Artists
                                 select artist.Artist.Name)
                     select new HeroCard
            {
                Title = track.Name,
                Subtitle = artists,
                Text = track.ImageAnalysis.Description?.Captions?.First()?.Text ?? "No Description",
                Images = new List <CardImage>
                {
                    new CardImage
                    {
                        Alt = track.Name,
                        Tap = BuildBuyCardAction(track),
                        Url = track.ImageUrl
                    }
                },
                Buttons = new List <CardAction>
                {
                    BuildBuyCardAction(track),
                    BuildNewsCardAction(track)
                }
            })
                .ToList();

            return(cards);
        }
Esempio n. 6
0
        async Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result)
        {
            var    activity      = await result as IMessageActivity;
            string heroCardValue = activity?.Text;

            if (!string.IsNullOrWhiteSpace(heroCardValue) && heroCardValue.StartsWith("{"))
            {
                var    news       = JsonConvert.DeserializeObject <Item>(heroCardValue);
                string artistName = news.Artists.First().Artist.Name;
                await context.Forward(
                    new NewsDialog(artistName),
                    MessageReceivedAsync,
                    activity);
            }
            else
            {
                List <string> genres = new GrooveService().GetGenres();
                genres.Add("Done");
                PromptDialog.Choice(context, ResumeAfterGenreAsync, genres, "Which music category?");
            }
        }
        Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result)
        {
            List <string> genres = new GrooveService().GetGenres();

            genres.Add("Done");

            string promptMessage = "Which music category?";
            string retryMessage  = "I don't know about that category, please select an item in the list.";

            var promptOptions =
                new PromptOptions <string>(
                    prompt: promptMessage,
                    retry: retryMessage,
                    options: genres,
                    speak: promptMessage,
                    retrySpeak: retryMessage);

            PromptDialog.Choice(
                context: context,
                resume: ResumeAfterGenreAsync,
                promptOptions: promptOptions);

            return(Task.CompletedTask);
        }