public async Task <SkillResponse> HandleRequest() { LOGGER.log.INFO("LaunchRequest", "HandleRequest"); await this.userProfile.GetUserProfileData(); if (userProfile.RequiresPurchase()) { LOGGER.log.DEBUG("LaunchRequest", "HandleRequest", "Schedule is premium content"); await productInventory.GetAvailableProducts(); string productName = this.userProfile.lesson.InSkillPurchaseName; if (productInventory.IsUnpaid(productName)) { LOGGER.log.DEBUG("LaunchRequest", "HandleRequest", "Premium content requires purchase"); this.sessionAttributes.ProductName = productName; return(AlexaResponse.PurchaseContentUpsell(productInventory.GetProductId(productName), CommonPhrases.Upsell(), productName)); } } this.sessionAttributes.UpdateSessionAttributes(userProfile); this.sessionAttributes.SessionState = STATE.Introduction; WordAttributes wordAttributes = await WordAttributes.GetWordAttributes(this.sessionAttributes.CurrentWord, LOGGER.log); LOGGER.log.DEBUG("Launch", "HandleRequest", "Next word: " + sessionAttributes.CurrentWord); return(LessonFactory.GetLesson(this.sessionAttributes.LessonType).Introduction(wordAttributes)); }
public async Task <SkillResponse> HandleIntent() { var intentRequest = (Alexa.NET.Request.Type.IntentRequest)skillRequest.Request; string lessonName = GetSlotValue(intentRequest); LOGGER.log.INFO("MakePurchase", "HandleIntent", "Lesson to purcase to: " + lessonName); ILesson lessonToPurchase = LessonFactory.GetLesson(lessonName); await base.products.GetAvailableProducts(); if (base.products.IsUnpaid(lessonToPurchase.InSkillPurchaseName)) { LOGGER.log.DEBUG("LaunchRequest", "HandleRequest", "Premium content requires purchase"); this.sessionAttributes.ProductName = lessonToPurchase.InSkillPurchaseName; return(AlexaResponse.PurchaseContentUpsell(base.products.GetProductId(lessonToPurchase.InSkillPurchaseName), CommonPhrases.Upsell(), lessonToPurchase.InSkillPurchaseName)); } await base.userProfile.ChangeLesson(lessonToPurchase); this.sessionAttributes.SessionState = STATE.Introduction; // relaunch for new lesson return(await new LaunchRequest(base.skillRequest).HandleRequest()); }