def handle(self, handler_input): # type: (HandlerInput) -> Response logger.info("CalcularImc Intent") speech = "No entendí muy bien" + ". ¿Qué más deseas realizar?" card_title = SKILL_NAME card_content = "No entendí muy bien" session_attr = handler_input.attributes_manager.session_attributes session_attr['estatura'] = -1 session_attr['peso'] = -1 speech = "Muy bien, ¿Dime cuántos kilos pesas?" session_attr['pregunta_anterior'] = 'peso' card_content = speech apl = apl_img_title_text(card_title, card_content) if viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_ROUND_SMALL: apl = apl_img_title_text(card_title, card_content) handler_input.response_builder.speak(speech).ask( HELP_REPROMPT).add_directive( RenderDocumentDirective(document=_load_apl_document( apl["json"]), datasources=apl["datasources"]) ).set_should_end_session(False) elif viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_LANDSCAPE_LARGE or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_LANDSCAPE_MEDIUM or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_ROUND_SMALL or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.TV_LANDSCAPE_XLARGE or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.MOBILE_LANDSCAPE_SMALL: handler_input.response_builder.speak(speech).ask( HELP_REPROMPT).add_directive( RenderDocumentDirective(document=_load_apl_document( apl["json"]), datasources=apl["datasources"]) ).set_should_end_session(False) else: handler_input.response_builder.speak(speech).ask( HELP_REPROMPT).set_card( SimpleCard(SKILL_NAME, re.sub('<[^<]+>', "", speech))).set_should_end_session(False) return handler_input.response_builder.response
def handle(self, handler_input): logger.info("In AnswerIntentHandler") session_attributes = handler_input.attributes_manager.session_attributes question_number = session_attributes['question_number'] number_of_attempts = session_attributes['number_of_attempts'] + 1 users_choice = handler_input.request_envelope.request.intent.slots['option'].resolutions.resolutions_per_authority[0].values[0].value.name print(type(users_choice)) print(users_choice) if int(question_number) < 5: if users_choice == "A": question_number += 1 speech_output = "That's the correct answer. The next question is: <break time='1s'/>" + questionBank[question_number]["questionData"]["question"] + "The options are: A. " + questionBank[question_number]["questionData"]["option1"] + "<break time='0.7s'/> B. " + questionBank[question_number]["questionData"]["option2"] + "<break time='0.7s'/> or C. " + questionBank[question_number]["questionData"]["option3"] reprompt = "Whats your answer? A. B. or C.?" else: speech_output = "Sorry, that answer is incorrect. Try again." reprompt = "Whats your answer? A. B. or C.?" elif int(question_number) == 5: if users_choice == "A": speech_output = "That's the correct answer. " accuracy = int(500/number_of_attempts) if accuracy >= 60: speech_output = speech_output + "This brings us to the end of the assessment. With an accuracy of " + str(accuracy) + " percent, you have passed with flying colours. Goodbye." else: speech_output = speech_output + "This brings us to the end of the assessment. Unfortunately, you have failed the assessment due to poor accuracy of " + str(accuracy) + " percent. Goodbye." if supports_apl(handler_input): handler_input.response_builder.add_directive( RenderDocumentDirective( token = "simpleDisplayTemplate", document = _load_apl_document('simpleDisplayTemplate.json'), datasources = {"message": {"text": speech_output}} ) ) return handler_input.response_builder.speak(speech_output).set_should_end_session(True).response else: speech_output = "Sorry, that answer is incorrect. Try again." reprompt = "Whats your answer? A. B. or C.?" session_attributes['repeat_speech_output'] = speech_output session_attributes['repeat_reprompt'] = reprompt session_attributes['question_number'] = question_number session_attributes['number_of_attempts'] = number_of_attempts handler_input.attributes_manager.session_attributes = session_attributes if supports_apl(handler_input): handler_input.response_builder.add_directive( RenderDocumentDirective( token = "displayQuestionTemplate", document = _load_apl_document('questionTemplate.json'), datasources = questionBank[question_number] ) ) return handler_input.response_builder.speak(speech_output).ask(reprompt).response
def handle(self, handler_input): # type: (HandlerInput) -> Response logger.info("Imc Intent") speech = "No entendí muy bien" + ". ¿Qué más deseas realizar?" card_title = SKILL_NAME card_content = "No entendí muy bien" speech = "El Índice de Masa Corporal (<sub alias=\"I M C\">IMC</sub>) es el resultado de la relación entre tu peso y tu estatura, es uno de los métodos más utilizados y prácticos para identificar el grado de riesgo asociado con la obesidad. Tu salud es una razón de peso, ¡te invitamos a calcular el tuyo!. ¿Qué más deseas realizar?" card_content = "El Índice de Masa Corporal IMC es el resultado de la relación entre tu peso y tu estatura, es uno de los métodos más utilizados y prácticos para identificar el grado de riesgo asociado con la obesidad. Tu salud es una razón de peso, ¡te invitamos a calcular el tuyo!. ¿Qué más deseas realizar?" apl = apl_img_title_text(card_title, card_content) if viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_ROUND_SMALL: apl = apl_img_title_text(card_title, card_content) handler_input.response_builder.speak(speech).ask( HELP_REPROMPT).add_directive( RenderDocumentDirective(document=_load_apl_document( apl["json"]), datasources=apl["datasources"]) ).set_should_end_session(False) elif viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_LANDSCAPE_LARGE or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_LANDSCAPE_MEDIUM or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_ROUND_SMALL or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.TV_LANDSCAPE_XLARGE or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.MOBILE_LANDSCAPE_SMALL: handler_input.response_builder.speak(speech).ask( HELP_REPROMPT).add_directive( RenderDocumentDirective(document=_load_apl_document( apl["json"]), datasources=apl["datasources"]) ).set_should_end_session(False) else: handler_input.response_builder.speak(speech).ask( HELP_REPROMPT).set_card( SimpleCard(SKILL_NAME, re.sub('<[^<]+>', "", speech))).set_should_end_session(False) return handler_input.response_builder.response
def handle(self, handler_input): # type: (HandlerInput) -> Response logger.info("Tabla Intent") speech = "No entendí muy bien"+ ". ¿Qué más deseas realizar?" session_attributes = {} card_title = SKILL_NAME card_content = "No entendí muy bien" slots = handler_input.request_envelope.request.intent.slots try: numero = int(slots["numero"].value) except: numero = 1 card_content = "" speech = "" #MULTIPLICACION for i in range(0, 10+1): card_content = card_content + ( "{} x {} = {} <br>".format(numero, i, numero*i)) speech = speech + ("{} por {} es <break time=\"200ms\"/> {}. ".format(numero, i, numero*i)) speech = speech + ". ¿Qué más deseas realizar?" apl = apl_img_title_text(card_title, card_content) if viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_ROUND_SMALL: apl = apl_img_title_text(card_title, "La tabla del "+str(numero)) handler_input.response_builder.speak(speech).ask(HELP_REPROMPT).add_directive( RenderDocumentDirective(document=_load_apl_document(apl["json"]),datasources=apl["datasources"]) ).set_should_end_session(False) elif viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_LANDSCAPE_LARGE or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_LANDSCAPE_MEDIUM or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_ROUND_SMALL or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.TV_LANDSCAPE_XLARGE or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.MOBILE_LANDSCAPE_SMALL: handler_input.response_builder.speak(speech).ask(HELP_REPROMPT).add_directive( RenderDocumentDirective(document=_load_apl_document(apl["json"]),datasources=apl["datasources"]) ).set_should_end_session(False) else: handler_input.response_builder.speak(speech).ask(HELP_REPROMPT).set_card(SimpleCard(SKILL_NAME, re.sub('<[^<]+>', "",speech))).set_should_end_session(False) return handler_input.response_builder.response
def label_info_handler(handler_input: HandlerInput): print('entered into LabelInfoIntent') speech = "The How2Recycle label is a voluntary, standardized labeling system that clearly communicates recycling instructions " +\ "to the public. It involves a coalition of forward thinking brands who want their packaging to be recycled and are empowering " +\ "consumers through smart packaging labels. A recycling Label has four parts. Part 1 tells How to Prepare Material for Recycling. " +\ "Part 2 is an icon which tells you whether the item falls into one of four categories - Widely Recycled, Check Locally, Not Yet Recycled and Store Drop-Off. " +\ "Part 3 Tells you what type of material the packaging is made of. and Part 4 Tells you the specific packaging component that the label is referring to." if is_apl_supported(handler_input): speech = speech + " Information about parts of label are displayed. To go back, you can say go home. To quit you can say Stop" print(speech) handler_input.response_builder.speak(speech).set_should_end_session( False).ask(launch_reprompt_text).add_directive( RenderDocumentDirective( token="pagerToken", document=load_apl_document( "apl_pager_labels.json")['document'], datasources=load_apl_document("apl_pager_labels.json") ['dataSources'])).add_directive( ExecuteCommandsDirective( token="pagerToken", commands=[ AutoPageCommand( component_id="pagerComponentId", duration=5000) ])) else: handler_input.response_builder.speak(speech).set_should_end_session( True).ask(launch_reprompt_text) return handler_input.response_builder.response
def handle(self, handler_input): # type: (HandlerInput) -> Response logger.info("Aleatiorio") speech = "Muy Bien, ¿Qué modo de practica deseas?: Fácil, Normal o Avanzado " session_attributes = {} card_title = SKILL_NAME card_content = "¿Qué modo de practica deseas?: Fácil, Normal o Avanzado" #session_attr['contador'] = contador +1 apl = apl_img_title_text(card_title, card_content) if viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_LANDSCAPE_LARGE or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_LANDSCAPE_MEDIUM or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_ROUND_SMALL or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.TV_LANDSCAPE_XLARGE or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.MOBILE_LANDSCAPE_SMALL: handler_input.response_builder.speak(speech).ask(HELP_REPROMPT).add_directive( RenderDocumentDirective(document=_load_apl_document(apl["json"]),datasources=apl["datasources"]) ).set_should_end_session(False) else: handler_input.response_builder.speak(speech).ask(HELP_REPROMPT).set_card(SimpleCard(SKILL_NAME, re.sub('<[^<]+>', "",speech))).set_should_end_session(False) return handler_input.response_builder.response
def recipeScreen(handler_input, sauce_item, selected_recipe): """ Adds Recipe Screen (APL Template) to Response """ data = handler_input.attributes_manager.request_attributes["_"] # Get prompt and reprompt speech speak_output = selected_recipe['instructions'] reprompt_output = data[prompts.RECIPE_REPEAT_MESSAGE] # Only add APL directive if User's device supports APL if (supports_apl(handler_input)): # Add APL Template amd Command (Speak Item to sync. Voice/Text) handler_input.response_builder.add_directive( RenderDocumentDirective( token="sauce-boss", document=APL_DOCS['recipe'], datasources=generateRecipeScreenDatasource( handler_input, sauce_item, selected_recipe))).add_directive( ExecuteCommandsDirective( token="sauce-boss", commands=[ SpeakItemCommand( component_id="recipeText", highlight_mode=HighlightMode.line) ])) # As speech will be done by APL Command (SpeakItem) Voice/Text sync # Save prompt and reprompt for repeat session_attributes = handler_input.attributes_manager.session_attributes session_attributes['speak_output'] = speak_output session_attributes['reprompt_output'] = reprompt_output else: # As APL is not supported by device # Provide prompt & reprompt instead of APL Karaoke handler_input.response_builder.speak(speak_output).ask(reprompt_output)
def get_apl_response(handler_input, datasource): if isinstance(datasource, str): handler_input.response_builder.speak(planet_story.speech_text).ask( planet_story.reprompt).add_directive( RenderDocumentDirective( token="pagerToken", document=_load_apl_document("./templates/main.json"), datasources=_load_apl_document(datasource))) else: handler_input.response_builder.speak(planet_story.speech_text).ask( planet_story.reprompt).add_directive( RenderDocumentDirective( token="pagerToken", document=_load_apl_document("./templates/main.json"), datasources=datasource)) return handler_input.response_builder.response
def handle(self, handler_input): # type: (HandlerInput) -> Response speak_output = "Welcome, you can run a Covid Symptom check, check covid information for a state or what current restrictions are in place for a state. Which would you like to try?" #if supports_apl(handler_input) is not None: if get_supported_interfaces(handler_input).alexa_presentation_apl is not None: return( handler_input.response_builder.speak(speak_output).add_directive( RenderDocumentDirective( token="pagerToken", document=_load_apl_document("./templates/launch.json"), datasources=_load_apl_document("./data/launchData.json") ) ) .ask(speak_output) .response ) else: return( handler_input.response_builder .speak(speak_output) .ask(speak_output) .response )
def handle(self, handler_input): # type: (HandlerInput) -> Response logger.info("In PagerIntent") speech = 'This is the pager template!' handler_input.response_builder.speak(speech).add_directive( RenderDocumentDirective( token="pagerToken", document=_load_apl_document("pager.json"), datasources={ 'pagerTemplateData': { 'type': 'object', 'properties': { 'hintString': 'try the blue cheese!' }, 'transformers': [{ 'inputPath': 'hintString', 'transformer': 'textToHint' }] } })).add_directive( ExecuteCommandsDirective( token="pagerToken", commands=[ AutoPageCommand(component_id="pagerComponentId", duration=5000) ])) return handler_input.response_builder.response
def play(url, offset, text, data, response_builder, document, datasources, apl_enabled): """Function to play audio. Using the function to begin playing audio when: - Play Audio Intent is invoked. - Resuming audio when stopped / paused. - Next / Previous commands issues. https://developer.amazon.com/docs/custom-skills/audioplayer-interface-reference.html#play REPLACE_ALL: Immediately begin playback of the specified stream, and replace current and enqueued streams. This also adds an APL document """ # Using URL as token as they are all unique response_builder.add_directive( PlayDirective( play_behavior=PlayBehavior.REPLACE_ALL, audio_item=AudioItem( stream=Stream(token=url, url=url, offset_in_milliseconds=offset, expected_previous_token=None), metadata=add_screen_background(data) if data else None))) if apl_enabled: response_builder.add_directive( RenderDocumentDirective( token="APLTemplate", document=_load_apl_document(document), datasources=datasources)).set_should_end_session(True) else: response_builder.set_should_end_session(True) if text: response_builder.speak(text) return response_builder.response
def handle(self, handler_input): # type: (HandlerInput) -> Response logger.info("In LaunchRequest") speech = "<speak>Bienvenido a la Skill de Tópicos de Cálculo, si deseas la definición de un tópico de cálculo, solo pídemelo <break time=\"500ms\"/>o puedes pedirme uno al azar, también puedo hacer derivadas básicas. Si necesitas ayuda, solo dí: 'Ayuda'. ¿Qué deseas realizar? </speak>" apl = apl_img_title_text( "Bienvenido", "Bienvenido a la Skill de Tópicos de Cálculo, si deseas la definición de un tópico de cálculo, solo pídemelo, o puedes pedirme uno al azar, también puedo hacer derivadas básicas.\n\nSi necesitas ayuda, solo dí: 'Ayuda'\n\n. ¿Qué deseas realizar?" ) if viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_LANDSCAPE_LARGE or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_LANDSCAPE_MEDIUM or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_ROUND_SMALL or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.TV_LANDSCAPE_XLARGE or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.MOBILE_LANDSCAPE_SMALL: handler_input.response_builder.speak(speech).add_directive( RenderDocumentDirective( document=_load_apl_document(apl["json"]), datasources=apl["datasources"])).set_should_end_session( False) else: handler_input.response_builder.speak(speech).set_card( SimpleCard(SKILL_NAME, re.sub('<[^<]+>', "", speech))).set_should_end_session(False) #handler_input.response_builder.speak(speech).ask(speech).set_card( # SimpleCard(SKILL_NAME, speech)) return handler_input.response_builder.response
def include_display(handler_input): #APL Directive Code if supports_apl(handler_input): handler_input.response_builder.add_directive( RenderDocumentDirective( document=load_apl_document("main.json"), datasources=load_apl_document("datasources.json")))
def handle(self, handler_input): # type: (HandlerInput) -> Response session_attr = handler_input.attributes_manager.session_attributes if "intent_history" in session_attr.keys(): session_attr["intent_history"].append("RecipeIntent") else: session_attr["intent_history"] = [ "Launch", "CreateMealPlanIntent", "CountrySelectorIntent", "RecipeIntent" ] # country attribute selected_recipe = ask_utils.get_slot_value(handler_input, "food") logger.info("SELECTED RECIPE = {}".format(selected_recipe)) selected_recipe_lower = selected_recipe.lower() session_attr["recipe"] = selected_recipe # response to country selection - FREE OR PAID UP CONTENT speak_output = "Here is what I found for {}.".format(selected_recipe) apl_document = _load_apl_document( "./apl/{}.json".format(selected_recipe_lower)) return (handler_input.response_builder.speak(speak_output).ask( speak_output).add_directive( RenderDocumentDirective( token="selected_recipe", document=apl_document["document"], datasources=apl_document["datasources"])).response)
def add_apl_home_card(handler_input, response, images=None, apl_document_name=None): if response.card and get_supported_interfaces( handler_input).alexa_presentation_apl: if response.card.object_type == 'Simple': local_card_content = response.card.content background_small = images['Simple']['small'] background_large = images['Simple']['large'] elif response.card.object_type == 'Standard': local_card_content = response.card.text background_small = images['Standard']['small'] background_large = images['Standard']['large'] else: local_card_content = '' background_small = '' background_large = '' handler_input.response_builder.add_directive( RenderDocumentDirective( document=_load_apl_document(apl_document_name), datasources={ 'templateData': { 'header': response.card.title, 'text': local_card_content, 'backgroundSmall': background_small, 'backgroundLarge': background_large } }))
def handle(self, handler_input): # type: (HandlerInput) -> Response logger.info("In LaunchRequest") speech = WELCOME_MESSAGE apl = apl_img_title_text("Bienvenido", re.sub('<[^<]+>', "", WELCOME_MESSAGE)) if viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_LANDSCAPE_LARGE or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_LANDSCAPE_MEDIUM or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.HUB_ROUND_SMALL or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.TV_LANDSCAPE_XLARGE or viewport.get_viewport_profile( handler_input.request_envelope ) == viewport.ViewportProfile.MOBILE_LANDSCAPE_SMALL: handler_input.response_builder.speak(speech).add_directive( RenderDocumentDirective( document=_load_apl_document(apl["json"]), datasources=apl["datasources"])).set_should_end_session( False) else: handler_input.response_builder.speak(speech).ask( HELP_REPROMPT).set_card( SimpleCard(SKILL_NAME, re.sub('<[^<]+>', "", speech))).set_should_end_session(False) #handler_input.response_builder.speak(speech).ask(speech).set_card( # SimpleCard(SKILL_NAME, speech)) return handler_input.response_builder.response
def meats_intent_handler(handler_input): speechText = 'Meat is the tissue – usually muscle – of an animal consumed by humans. Since most parts of many animals are edible, there is a vast variety of meats.' return (handler_input.response_builder.speak( speechText).ask(speechText).set_card( SimpleCard("Meats - Food Pyramid", speechText)).add_directive( RenderDocumentDirective(document=_load_apl_document( "lambda/custom/meats.json"))).response)
def grains_intent_handler(handler_input): speechText = 'These foods provide complex carbohydrates, which are a ' \ 'good source of energy but provide little nutrition.' return (handler_input.response_builder.speak( speechText).ask(speechText).set_card( SimpleCard("Grains - Food Pyramid", speechText)).add_directive( RenderDocumentDirective(document=_load_apl_document( "lambda/custom/grains.json"))).response)
def fruits_intent_handler(handler_input): speechText = 'Fruits are the sweet-tasting seed-bearing parts of plants, or occasionally sweet parts of plants which do not bear seeds.' return (handler_input.response_builder.speak( speechText).ask(speechText).set_card( SimpleCard("Fruits - Food Pyramid", speechText)).add_directive( RenderDocumentDirective(document=_load_apl_document( "lambda/custom/fruits.json"))).response)
def fats_intent_handler(handler_input): speechText = 'These foods provide calories, but not much nutrition. These foods include salad dressings, sugars, soft drinks, candies, and desserts.' return (handler_input.response_builder.speak( speechText).ask(speechText).set_card( SimpleCard("Fats - Food Pyramid", speechText)).add_directive( RenderDocumentDirective(document=_load_apl_document( "lambda/custom/fats.json"))).response)
def vegetables_intent_handler(handler_input): speechText = 'A vegetable is a part of a plant consumed by humans that is generally savory but is not sweet. A vegetable is not considered a grain, fruit, nut, spice, or herb.' return (handler_input.response_builder.speak(speechText).ask( speechText).set_card( SimpleCard("Vegetables - Food Pyramid", speechText)).add_directive( RenderDocumentDirective(document=_load_apl_document( "lambda/custom/vegetables.json"))).response)
def dairy_intent_handler(handler_input): speechText = 'Dairy products are produced from the milk of mammals. They include milk, yogurt and cheese.' return (handler_input.response_builder.speak( speechText).ask(speechText).set_card( SimpleCard("Dairy - Food Pyramid", speechText)).add_directive( RenderDocumentDirective(document=_load_apl_document( "lambda/custom/dairy.json"))).response)
def homeScreen(handler_input): """ Adds Help Screen (APL Template) to Response """ # Only add APL directive if User's device supports APL if (supports_apl(handler_input)): handler_input.response_builder.add_directive( RenderDocumentDirective(token="helpScreen", document=APL_DOCS['home']))
def handle(self, handler_input): language_prompts = handler_input.attributes_manager.request_attributes[ "_"] video_directive = RenderDocumentDirective( token="videoplayer", document=load_json_from_path("apl/render-videoplayer.json"), datasources=create_all_video_playlist(playlist())) return (handler_input.response_builder.add_directive( video_directive).response)
def launch_request_handler(handler_input): speechText = 'Welcome to the the Food Pyramid skill. You can ask about ' \ 'the different tiers or a specific food group!' return (handler_input.response_builder.speak( speechText).ask(speechText).set_card( SimpleCard("Food Pyramid", speechText)).add_directive( RenderDocumentDirective( document=_load_apl_document("lambda/custom/homepage.json")) ).set_should_end_session(False).response)
def include_display_for_stats(handler_input, location, cases, active, recovered, deaths): #APL Directive Code if supports_apl(handler_input): handler_input.response_builder.add_directive( RenderDocumentDirective(document=sd.stats(), datasources=sd.stats_datasource( location, cases, active, recovered, deaths)))
def handle(self, handler_input): # type: (HandlerInput) -> Response logger.info("In LaunchRequestHandler") # handler_input.response_builder.speak(WELCOME_MESSAGE).ask( # HELP_MESSAGE) response_builder = handler_input.response_builder speech = PRIMARY_TEXT viewport_state = handler_input.request_envelope.context.viewport if not viewport_state: speech = "La Skill funziona solo sui device con schermo" response_builder.speak(speech) return response_builder.set_should_end_session(True).response response_builder.speak(speech) if USE_CARDS_FLAG: response_builder.set_card( ui.StandardCard(title=TITLE, text=PRIMARY_TEXT, image=ui.Image( small_image_url=IMG_PATH, large_image_url=IMG_PATH, ))) if supports_display(handler_input) and not supports_APL(handler_input): logger.info("Supports Display") title = TITLE fg_img7 = Image(content_description=PRIMARY_TEXT, sources=[ImageInstance(url=IMG_PATH)]) response_builder.add_directive( RenderTemplateDirective( BodyTemplate7(back_button=BackButtonBehavior.HIDDEN, image=fg_img7, title=title))) if supports_APL(handler_input): logger.info("Supports APL") response_builder.add_directive( RenderDocumentDirective( token=APP_NAME + "_Token", document=_load_apl_document("RadarMeteoAPL.json"), datasources={"param": { 'url': IMG_PATH }})).add_directive( ExecuteCommandsDirective( token=APP_NAME + "_Token", commands=[ IdleCommand(delay=5, description="wait_a_bit") ])).add_directive( ExecuteCommandsDirective( token=APP_NAME + "_Token", commands=[ IdleCommand(delay=5, description="last command") ])) return response_builder.set_should_end_session(True).response
def launch_screen(handler_input): """ Adds Launch Screen (APL Template) to Response """ # Only add APL directive if User's device supports APL if (supports_apl(handler_input)): handler_input.response_builder.add_directive( RenderDocumentDirective( token="launchToken", document=APL_DOCS['launch'], datasources=generateLaunchScreenDatasource(handler_input)))
def handle(self, handler_input): logger.info("In NoIntentHandler") speech_output = "Okay. You can come back later whenever you are ready." if supports_apl(handler_input): handler_input.response_builder.add_directive( RenderDocumentDirective( token = "simpleDisplayTemplate", document = _load_apl_document('simpleDisplayTemplate.json'), datasources = {"message": {"text": speech_output}} ) ) return handler_input.response_builder.speak(speech_output).set_should_end_session(True).response
def handle(self, handler_input): # type: (HandlerInput) -> Response logger.info("Multiplica Intent") speech = "No entendí muy bien"+ ". ¿Qué más deseas realizar?" session_attributes = {} card_title = SKILL_NAME card_content = "No entendí muy bien" #num1 = random.randint(0,10) #num2 = random.randint(0,10) slots = handler_input.request_envelope.request.intent.slots try: num1 = int(slots["numero_uno"].value) num2 = int(slots["numero_dos"].value) op = int(slots["operacion"].resolutions.resolutions_per_authority[0].values[0].value.id) except: num1 = 1 num2 = 1 op = 0 if op == 0: card_content = "{} x {} = {} ".format(num1, num2, num1*num2) speech = "{} por {} es igual a {}. ¿Qué más deseas realizar?".format(num1, num2, num1*num2) elif op == 1: card_content = "{} + {} = {} ".format(num1, num2, num1+num2) speech = "{} más {} es igual a {}. ¿Qué más deseas realizar?".format(num1, num2, num1+num2) elif op == 2: card_content = "{} - {} = {} ".format(num1, num2, num1-num2) speech = "{} menos {} es igual a {}. ¿Qué más deseas realizar?".format(num1, num2, num1-num2) elif op == 3: card_content = "{} / {} = {} ".format(num1, num2, num1+num2) speech = "{} entre {} es igual a {}. ¿Qué más deseas realizar?".format(num1, num2, num1/num2) apl = apl_img_title_text(card_title, card_content) if viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_LANDSCAPE_LARGE or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_LANDSCAPE_MEDIUM or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.HUB_ROUND_SMALL or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.TV_LANDSCAPE_XLARGE or viewport.get_viewport_profile(handler_input.request_envelope) == viewport.ViewportProfile.MOBILE_LANDSCAPE_SMALL: handler_input.response_builder.speak(speech).ask(HELP_REPROMPT).add_directive( RenderDocumentDirective(document=_load_apl_document(apl["json"]),datasources=apl["datasources"]) ).set_should_end_session(False) else: handler_input.response_builder.speak(speech).ask(HELP_REPROMPT).set_card(SimpleCard(SKILL_NAME, re.sub('<[^<]+>', "",speech))).set_should_end_session(False) return handler_input.response_builder.response