예제 #1
0
    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
예제 #3
0
    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
예제 #4
0
    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
예제 #5
0
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
예제 #6
0
    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
예제 #9
0
 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
         )
예제 #10
0
    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
예제 #11
0
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
예제 #12
0
    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
예제 #13
0
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")))
예제 #14
0
    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)
예제 #15
0
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
                    }
                }))
예제 #16
0
    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
예제 #17
0
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)
예제 #18
0
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)
예제 #19
0
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)
예제 #20
0
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)
예제 #21
0
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)
예제 #22
0
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)
예제 #23
0
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)
예제 #25
0
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)
예제 #26
0
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
예제 #28
0
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
예제 #30
0
    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