Esempio n. 1
0
 private async Task WritePodcastPlaybackAsync(PodcastPlaybackInfo playback)
 {
     var response = await _dynamoClient.PutItemAsync(_dynamoTable, new Dictionary <string, AttributeValue> {
         ["Key"] = new AttributeValue {
             S = UserIdToResumeRecordKey(playback.UserId)
         },
         ["Value"] = new AttributeValue {
             S = JsonConvert.SerializeObject(playback)
         },
         ["When"] = new AttributeValue {
             S = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss")
         }
     });
 }
Esempio n. 2
0
        private async Task <SkillResponse> BuildResumePodcastResponseAsync(PodcastPlaybackInfo playback)
        {
            if (playback == null)
            {
                return(BuildSpeechResponse(PROMPT_CANNOT_RESUME + PROMPT_HELP_QUESTION, shouldEndSession: false));
            }
            var list = await GetPodcastsAsync();

            var item = list.FirstOrDefault(p => p.Token == playback.Token);

            if (item == null)
            {
                return(BuildSpeechResponse(PROMPT_PODCAST_NOT_AVAILBLE + PROMPT_HELP_QUESTION, shouldEndSession: false));
            }
            try {
                var prompt = $"Continue playing podcast entitled: \"{item.Title}\"";
                var result = new SkillResponse {
                    Version  = "1.0",
                    Response = new ResponseBody {
                        OutputSpeech = new PlainTextOutputSpeech {
                            Text = prompt
                        },
                        ShouldEndSession = true
                    }
                };
                result.Response.Directives.Add(new AudioPlayerPlayDirective()
                {
                    PlayBehavior = PlayBehavior.ReplaceAll,
                    AudioItem    = new AudioItem {
                        Stream = new AudioItemStream {
                            Url   = item.Url,
                            Token = item.Token,
                            OffsetInMilliseconds = playback.OffsetInMilliseconds
                        }
                    }
                });
                return(result);
            } catch (Exception e) {
                LambdaLogger.Log($"*** ERROR: unable to parse podcast (token='{playback.Token}', offset={playback.OffsetInMillisecondsText}) ({e})");
                return(BuildSpeechResponse(PROMPT_ERROR_PODCAST));
            }
        }