def test_viewport_map_to_mobile_landscape_medium(self):
        viewport_state = ViewportState(shape=Shape.RECTANGLE,
                                       dpi=float(240),
                                       current_pixel_width=float(960),
                                       current_pixel_height=float(600))
        test_request_env = RequestEnvelope(context=Context(
            viewport=viewport_state))

        assert (
            viewport.get_viewport_profile(test_request_env) is
            viewport.ViewportProfile.MOBILE_LANDSCAPE_MEDIUM), (
                "Viewport profile couldn't resolve MOBILE_LANDSCAPE_MEDIUM")
    def test_viewport_map_to_unknown(self):
        viewport_state = ViewportState(shape=Shape.ROUND,
                                       dpi=float(240),
                                       current_pixel_width=float(600),
                                       current_pixel_height=float(600))
        test_request_env = RequestEnvelope(context=Context(
            viewport=viewport_state))

        assert (
            viewport.get_viewport_profile(test_request_env) is
            viewport.ViewportProfile.UNKNOWN_VIEWPORT_PROFILE), (
                "Viewport profile couldn't resolve UNKNOWN_VIEWPORT_PROFILE")
Exemple #3
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
    def test_viewport_map_to_hub_round_small(self):
        viewport_state = ViewportState(
            shape=Shape.ROUND,
            dpi=float(160),
            current_pixel_width=float(300),
            current_pixel_height=float(300))
        test_request_env = RequestEnvelope(
            context=Context(
                viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env)
                is viewport.ViewportProfile.HUB_ROUND_SMALL), (
            "Viewport profile couldn't resolve HUB_ROUND_SMALL")
    def test_viewport_map_to_hub_landscape_small(self):
        viewport_state = ViewportState(
            shape=Shape.RECTANGLE,
            dpi=float(160),
            current_pixel_width=float(960),
            current_pixel_height=float(480))
        test_request_env = RequestEnvelope(
            context=Context(
                viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env)
                is viewport.ViewportProfile.HUB_LANDSCAPE_SMALL), (
            "Viewport profile couldn't resolve HUB_LANDSCAPE_SMALL")
    def test_viewport_map_to_mobile_portrait_small(self):
        viewport_state = ViewportState(
            shape=Shape.RECTANGLE,
            dpi=float(240),
            current_pixel_width=float(300),
            current_pixel_height=float(600))
        test_request_env = RequestEnvelope(
            context=Context(
                viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env)
                is viewport.ViewportProfile.MOBILE_PORTRAIT_SMALL), (
            "Viewport profile couldn't resolve MOBILE_PORTRAIT_SMALL")
    def test_viewport_map_to_tv_landscape_xlarge(self):
        viewport_state = ViewportState(
            shape=Shape.RECTANGLE,
            dpi=float(320),
            current_pixel_width=float(1920),
            current_pixel_height=float(960))
        test_request_env = RequestEnvelope(
            context=Context(
                viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env)
                is viewport.ViewportProfile.TV_LANDSCAPE_XLARGE), (
            "Viewport profile couldn't resolve TV_LANDSCAPE_XLARGE")
    def test_viewport_map_to_tv_portrait_medium(self):
        viewport_state = ViewportState(
            shape=Shape.RECTANGLE,
            dpi=float(320),
            current_pixel_width=float(300),
            current_pixel_height=float(1920))
        test_request_env = RequestEnvelope(
            context=Context(
                viewport=viewport_state))

        assert (viewport.get_viewport_profile(test_request_env)
                is viewport.ViewportProfile.TV_PORTRAIT_MEDIUM), (
            "Viewport profile couldn't resolve TV_PORTRAIT_MEDIUM")
Exemple #9
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
Exemple #10
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("In Device Intent")

        speech = 'This device is a '

        if viewport.get_viewport_profile == viewport.ViewportProfile.HUB_LANDSCAPE_LARGE:
            speech += 'hub landscape large'
        elif viewport.get_viewport_profile == viewport.ViewportProfile.HUB_LANDSCAPE_MEDIUM:
            speech += 'hub landscape medium'
        elif viewport.get_viewport_profile == viewport.ViewportProfile.HUB_ROUND_SMALL:
            speech += 'hub round small'
        elif viewport.get_viewport_profile == viewport.ViewportProfile.TV_LANDSCAPE_XLARGE:
            speech += 'tv landscape extra large'
        elif viewport.get_viewport_profile == viewport.ViewportProfile.MOBILE_LANDSCAPE_SMALL:
            speech += 'mobile landscape small'
        else:
            speech += 'echo device!'

        if _supports_apl(handler_input):
            handler_input.response_builder.speak(speech).add_directive(
                RenderDocumentDirective(
                    document=_load_apl_document("devices.json"),
                    datasources={
                        'deviceTemplateData': {
                            'type':
                            'object',
                            'objectId':
                            'deviceSample',
                            'properties': {
                                'deviceName':
                                viewport.get_viewport_profile(
                                    handler_input.request_envelope),
                                'hintString':
                                'try and buy more devices!'
                            },
                            'transformers': [{
                                'inputPath': 'hintString',
                                'transformer': 'textToHint'
                            }]
                        }
                    }))
        else:
            handler_input.response_builder.speak(speech)

        return handler_input.response_builder.response
Exemple #11
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
Exemple #12
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
Exemple #13
0
def picture_intent_handler(handler_input):
    """
    Takes a picture and reads out the results
    
    1) Get session ID
    2) send an mqtt message
    3) wait with time.sleep(x)
    4) Query DDB for the results
    5) APL to show the image (if on a supported device)
    """
    session_id = handler_input.request_envelope.session.session_id
    send_mqtt_directive("/camera",
                        "take a picture",
                        data={"session_id": session_id})

    time.sleep(
        3
    )  # Let's give the backend process a little time to 1) take a picture, 2) recognize people and objects, and 3) upload details to DDB

    dynamodb = boto3.resource("dynamodb")
    table = dynamodb.Table('TwitchRobot_Scenes')

    speech = "Got it. "

    try:
        response = table.get_item(Key={'session_id': session_id})
    except ClientError as e:
        print(e.response['Error']['Message'])
        speech = "I had trouble getting anything back from the camera."

    if response and 'Item' in response:
        item = response['Item']

        recognized_people = False
        recognized_labels = False

        if len(item['recognized_people']) > 0:
            recognized_people = True
            speech += "I recognized: "
            for person in item['recognized_people']:
                speech += person + ", "

        if len(item['labels']) > 0:
            if recognized_people:
                speech += "I also see: "
            else:
                speech += "I see: "

            for label in item['labels']:
                speech += label + ", "

        if not recognized_people and not recognized_labels:
            speech += "I didn't detect anything in the scene."

    else:
        speech += "I didn't detect anything in the scene."

    # See if APL is supported:
    if viewport.get_viewport_profile(
            handler_input.request_envelope
    ) == viewport.ViewportProfile.UNKNOWN_VIEWPORT_PROFILE:
        # Just return speech without any APL
        handler_input.response_builder.speak(speech).set_card(
            SimpleCard(SKILL_NAME, speech)).set_should_end_session(False)

    else:
        # Return speech and use APL to show the image
        handler_input.response_builder.speak(speech).set_card(
            SimpleCard(SKILL_NAME, speech)).add_directive(
                RenderDocumentDirective(
                    token="pictureToken",
                    document=_load_apl_document("./apl/document.json"),
                    datasources=_load_apl_document(
                        "./apl/data.json"))).set_should_end_session(False)

    return handler_input.response_builder.response
Exemple #14
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("Topico")

        card_title = "Tópico de Cálculo"

        topico = ''
        topico_id = -1
        topico_nombre = ''
        speech = "No tengo la definición" + ". ¿Qué más deseas realizar?"
        card_content = "No tengo la definición"

        #speech = "Definición de {} es {}".format(topico,"")
        #session_attributes = {}
        attribute_manager = handler_input.attributes_manager
        session_attr = attribute_manager.session_attributes

        try:
            #topico = str(intent_r['intent']['slots']['topico_text']['value']) if 'topico_text' in intent_r['intent']['slots'] else ''
            #topico_id = int(intent_r['intent']['slots']['topico_text']['resolutions']['resolutionsPerAuthority'][0]['values'][0]['value']['id']) if 'values' in intent_r['intent']['slots']['topico_text']['resolutions']['resolutionsPerAuthority'][0] else -1
            #topico_nombre = str(intent_r['intent']['slots']['topico_text']['resolutions']['resolutionsPerAuthority'][0]['values'][0]['value']['name']) if 'values' in intent_r['intent']['slots']['topico_text']['resolutions']['resolutionsPerAuthority'][0] else -1

            slots = handler_input.request_envelope.request.intent.slots

            topico = str(
                slots["topico_text"].value) if 'topico_text' in slots else ''
            session_attr["topico_text"] = topico

            try:
                topico_id = int(
                    slots['topico_text'].resolutions.
                    resolutions_per_authority[0].values[0].value.id
                )  # if 'values' in slots['topico_text'].resolutions.resolutions_per_authority[0] else -1
            except:
                topico_id = -1
            session_attr["id"] = topico_id

            try:
                topico_nombre = str(
                    slots['topico_text'].resolutions.
                    resolutions_per_authority[0].values[0].value.name
                )  # if 'values' in slots['topico_text'].resolutions.resolutions_per_authority[0] else ""
            except:
                topico_nombre = ''
            session_attr["name"] = topico_nombre

            card_content = ""
            if topico_id > -1:
                speech = "'" + topico_nombre.capitalize(
                ) + "': " + TOPICOS[topico_id] + ". ¿Qué más deseas realizar?"
                card_content = "'" + topico_nombre.capitalize(
                ) + "': " + TOPICOS[topico_id]
            else:
                speech = "No tengo la definición de " + topico + ". ¿Qué más deseas realizar?"
                card_content = "No tengo la definición de " + topico

        except:
            print("An exception occurred")

        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).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)

        return handler_input.response_builder.response
Exemple #15
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("PesoEstatura Intent")

        speech = "No entendí muy bien" + ". ¿Qué más deseas realizar?"

        card_title = SKILL_NAME
        card_content = "No entendí muy bien"

        slots = handler_input.request_envelope.request.intent.slots

        try:
            estatura = int(slots["cm"].value)
        except:
            estatura = -1

        try:
            estatura_mts = int(slots["mt"].value)
        except:
            estatura_mts = 0

        try:
            peso = int(slots["kg"].value)
        except:
            peso = -1

        estatura = estatura + estatura_mts

        #attr = handler_input.attributes_manager.persistent_attributes
        session_attr = handler_input.attributes_manager.session_attributes

        session_attr['estatura'] = estatura
        session_attr['peso'] = peso

        if session_attr['estatura'] > -1 and session_attr['peso'] > -1:
            speech = "Mides " + str(estatura) + " cm y pesas " + str(
                peso) + " kg. "
            speech = speech + _imc(peso,
                                   estatura) + ". ¿Qué más deseas realizar?"

            session_attr['pregunta_anterior'] = ''
            session_attr['estatura'] = -1
            session_attr['peso'] = -1

        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
Exemple #16
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("Derivada")

        card_title = "Cálcular derivada a la n"

        x_valor = None
        x_exponente = None
        x_exponente_numero = None
        variable = ""

        slots = handler_input.request_envelope.request.intent.slots

        try:
            #variable = str(intent_r['intent']['slots']['variable']['resolutions']['resolutionsPerAuthority'][0]['values'][0]['value']['name']) if 'values' in intent_r['intent']['slots']['variable']['resolutions']['resolutionsPerAuthority'][0] else ""
            variable = str(slots['variable'].resolutions.
                           resolutions_per_authority[0].values[0].value.name)

        except:
            variable = ""

        try:
            #x_valor = int(intent_r['intent']['slots']['x_valor']['value']) if 'value' in intent_r['intent']['slots']['x_valor'] else None
            x_valor = int(
                slots["x_valor"].value
            )  # if 'value' in intent_r['intent']['slots']['x_valor'] else None
        except:
            x_valor = None

        try:
            #x_exponente = int(intent_r['intent']['slots']['x_exponente']['resolutions']['resolutionsPerAuthority'][0]['values'][0]['value']['id']) if 'values' in intent_r['intent']['slots']['x_exponente']['resolutions']['resolutionsPerAuthority'][0] else None
            x_exponente = int(slots['x_exponente'].resolutions.
                              resolutions_per_authority[0].values[0].value.id)
        except:
            x_exponente = None

        try:
            #x_exponente_numero = int(intent_r['intent']['slots']['x_exponente_numero']['value']) if 'value' in intent_r['intent']['slots']['x_exponente_numero'] else None
            x_exponente_numero = int(slots['x_exponente_numero'].value)
        except:
            x_exponente_numero = None

        if x_exponente is None and x_exponente_numero is None:
            x_exponente = 1
        elif x_exponente is None and x_exponente_numero is not None:
            x_exponente = x_exponente_numero

        resultado = ".."

        texto_elevado = ""
        texto_valor = ""
        card_content = ""

        if x_exponente is None:
            texto_elevado = ""
        elif x_exponente == 2:
            texto_elevado = " al cuadrado"
        elif x_exponente == 3:
            texto_elevado = " al cubo"
        elif x_exponente >= 4:
            texto_elevado = " elevado a la {} ".format(str(x_exponente))

        if variable != "" and x_valor == 1:
            texto_valor = ""
        else:
            texto_valor = str(x_valor if x_valor is not None else 1)

        if variable != "" and x_valor is None:
            x_valor = 1

        if x_exponente is not None and x_valor is None:
            x_valor = 1

        if variable == "":
            speech = "La derivada de una constante es 0" + ". ¿Qué más deseas realizar?"
            card_content = "La derivada de una constante es 0"
        else:
            texto_elevado_resultado = ""
            variable_resultado = variable

            if x_exponente is None:
                texto_elevado_resultado = ""
            elif x_exponente - 1 == 2:
                texto_elevado_resultado = " al cuadrado"
            elif x_exponente - 1 == 3:
                texto_elevado_resultado = " al cubo"
            elif x_exponente - 1 >= 4:
                texto_elevado_resultado = " elevado a la {} ".format(
                    str(x_exponente - 1))

            if variable != "" and x_exponente == 1:
                variable_resultado = ""
            resultado = str(
                x_valor * x_exponente
            ) + " " + variable_resultado + texto_elevado_resultado

            if texto_valor == "1" and variable != "":
                texto_valor = ""
            speech = "La derivada de {} {} {} es : {} . ¿Qué más deseas realizar?".format(
                texto_valor, variable, texto_elevado, resultado)
            card_content = "La derivada de {} {} {} es : {}".format(
                texto_valor, variable, texto_elevado, resultado)

        session_attributes = {
            "texto_valor": texto_valor,
            "variable": variable,
            "texto_elevado": texto_elevado,
            "resultado": resultado
        }

        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).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)

        return handler_input.response_builder.response
Exemple #17
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("noticias_fuente_categoria")

        card_title = "Noticias"
        card_content = "Estas son las noticias"

        attribute_manager = handler_input.attributes_manager
        session_attr = attribute_manager.session_attributes

        #session_attributes = {"valor_anterior":MAX_NOTICIAS, "noticias":None}
        session_attr["valor_anterior"] = MAX_NOTICIAS
        session_attr["noticias"] = None
        slots = handler_input.request_envelope.request.intent.slots

        try:
            fuente_nombre = str(
                slots['fuente'].resolutions.resolutions_per_authority[0].
                values[0].value.name)
            fuente_id = str(slots['fuente'].resolutions.
                            resolutions_per_authority[0].values[0].value.id)
        except:
            fuente_nombre = None
            fuente_id = None

        if fuente_nombre is None:
            handler_input.response_builder.speak(HELP_MESSAGE).ask(
                HELP_REPROMPT).set_card(
                    SimpleCard(SKILL_NAME, re.sub(
                        '<[^<]+>', "",
                        HELP_MESSAGE))).set_should_end_session(False)
            return handler_input.response_builder.response

        try:
            categoria_nombre = str(
                slots['categoria'].resolutions.resolutions_per_authority[0].
                values[0].value.name)
            categoria_id = str(slots['categoria'].resolutions.
                               resolutions_per_authority[0].values[0].value.id)
        except:
            categoria_nombre = None
            categoria_id = None

        if categoria_nombre is None:
            handler_input.response_builder.speak(HELP_MESSAGE).ask(
                HELP_REPROMPT).set_card(
                    SimpleCard(SKILL_NAME, re.sub(
                        '<[^<]+>', "",
                        HELP_MESSAGE))).set_should_end_session(False)
            return handler_input.response_builder.response

        data = None
        try:
            resp = requests.get(
                'http://observatoriotecnologico.org.mx:8111/rss/noticias/fuente/categoria/'
                + fuente_id + '/' + categoria_id)
            data = resp.json()
            tema = '"' + categoria_nombre + '" en "' + fuente_nombre + "'"

            accion = ""
            if len(data) <= MAX_NOTICIAS:
                session_attributes = {"valor_anterior": 0, "noticias": None}
                accion = "<s>Estas fueron las noticias de hoy. ¿Qué más deseas realizar?</s>"
            else:
                accion = "<s>¿Deseas seguir escuchando?</s>"

            speechSSML = ""

            card_content = ""
            for idx, noticia in enumerate(data):
                if idx < MAX_NOTICIAS:
                    card_content = card_content + "<b>" + noticia[
                        'title'] + "</b><br>" + noticia['summary'] + "<br><br>"
                    speechSSML = speechSSML + '''
    ''' + ('<s><say-as interpret-as="expletive">.</say-as></s>'
                    if idx > 0 else '') + '''
    <p>''' + noticia['title'] + '''
    <s><emphasis level="reduced">''' + noticia['summary'] + '''</emphasis></s>
    </p>'''

            speechSSML = speechSSML + '''<audio src='soundbank://soundlibrary/ui/gameshow/amzn_ui_sfx_gameshow_neutral_response_03'/>
    ''' + accion

            if len(data) > MAX_NOTICIAS:
                del data[0:MAX_NOTICIAS]
                #session_attributes = {"valor_anterior": MAX_NOTICIAS, "noticias":data, "count":len(data)}
                session_attr["valor_anterior"] = MAX_NOTICIAS
                session_attr["noticias"] = data
                #session_attr["count"] = len(data)

        except:
            print("Ocurrio algo inesperado")
            speech = "<speak>No entendí la pregunta. ¿Qué más deseas realizar?</speak>"
            #session_attributes = {"valor_anterior": 0, "noticias":data}
            session_attr["valor_anterior"] = 0
            session_attr["noticias"] = data

        speech = tema + "<audio src=\'soundbank://soundlibrary/ui/gameshow/amzn_ui_sfx_gameshow_outro_01\'/>"

        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:
            apl = apl_img_title_text(tema, card_content)
            handler_input.response_builder.speak(
                "<speak>" + speech + speechSSML + "</speak>").add_directive(
                    RenderDocumentDirective(document=_load_apl_document(
                        apl["json"]),
                                            datasources=apl["datasources"])
                ).set_should_end_session(False)

        else:
            handler_input.response_builder.speak(
                "<speak>" + speech + speechSSML + "</speak>").set_card(
                    SimpleCard(SKILL_NAME,
                               re.sub('<[^<]+>', "",
                                      speech))).set_should_end_session(False)

        return handler_input.response_builder.response
Exemple #18
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("continuar")

        card_title = "Noticias"
        card_content = "Estas son las noticias"

        attribute_manager = handler_input.attributes_manager
        session_attr = attribute_manager.session_attributes

        #session_attributes = {"valor_anterior":MAX_NOTICIAS, "noticias":None}
        #session_attr["valor_anterior"] = MAX_NOTICIAS
        #session_attr["noticias"] = None

        data = None
        try:
            #resp = requests.get('http://observatoriotecnologico.org.mx:8111/rss/noticias/portada')
            #data = resp.json()
            data = session_attr["noticias"]
            tema = 'Continuamos..'

            accion = ""
            if len(data) <= MAX_NOTICIAS:
                session_attributes = {"valor_anterior": 0, "noticias": None}
                accion = "<s>Estas fueron las noticias de hoy. ¿Qué más deseas realizar?</s>"
            else:
                accion = "<s>¿Deseas seguir escuchando?</s>"

            speechSSML = ""

            card_content = ""
            for idx, noticia in enumerate(data):
                if idx < MAX_NOTICIAS:
                    card_content = card_content + "<b>" + noticia[
                        'title'] + "</b><br>" + noticia['summary'] + "<br><br>"
                    speechSSML = speechSSML + '''
    ''' + ('<s><say-as interpret-as="expletive">.</say-as></s>'
                    if idx > 0 else '') + '''
    <p>''' + noticia['title'] + '''
    <s><emphasis level="reduced">''' + noticia['summary'] + '''</emphasis></s>
    </p>'''

            speechSSML = speechSSML + '''<audio src='soundbank://soundlibrary/ui/gameshow/amzn_ui_sfx_gameshow_neutral_response_03'/>
    ''' + accion

            if len(data) > MAX_NOTICIAS:
                del data[0:MAX_NOTICIAS]
                #session_attributes = {"valor_anterior": MAX_NOTICIAS, "noticias":data, "count":len(data)}
                session_attr["valor_anterior"] = MAX_NOTICIAS
                session_attr["noticias"] = data
                #session_attr["count"] = len(data)

        except:
            print("Ocurrio algo inesperado")
            speech = "<speak>No entendí la pregunta. ¿Qué más deseas realizar?</speak>"
            #session_attributes = {"valor_anterior": 0, "noticias":data}
            session_attr["valor_anterior"] = 0
            session_attr["noticias"] = data

        speech = tema

        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:
            apl = apl_img_title_text('En ' + tema, card_content)
            handler_input.response_builder.speak(
                "<speak>" + speech + speechSSML + "</speak>").add_directive(
                    RenderDocumentDirective(document=_load_apl_document(
                        apl["json"]),
                                            datasources=apl["datasources"])
                ).set_should_end_session(False)

        else:
            handler_input.response_builder.speak(
                "<speak>" + speech + speechSSML + "</speak>").set_card(
                    SimpleCard(SKILL_NAME,
                               re.sub('<[^<]+>', "",
                                      speech))).set_should_end_session(False)

        return handler_input.response_builder.response
Exemple #19
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("Respuesta Intent")

        speech = "No entendí muy bien"+ ". ¿Qué deseas realizar?"
            
        card_title = SKILL_NAME
        card_content = "No entendí muy bien"
        correcto = False
        
        
        try:
        
            #attr = handler_input.attributes_manager.persistent_attributes
            session_attr = handler_input.attributes_manager.session_attributes
            
            nivel = session_attr['nivel']
            contador = session_attr['contador']
            respuesta = session_attr['respuesta']
            
            slots = handler_input.request_envelope.request.intent.slots
            try:
                respuesta_usuario = int(slots["numero"].value)
            except:
                respuesta_usuario = 0
            session_attr['nivel'] = nivel
        except:
            contador = -1
        
        if int(respuesta_usuario) == int(session_attr['respuesta']):
            correcto = True
            session_attr['correctas'] = session_attr['correctas'] +1
        
        if correcto:
            tu_respuesta = "¡Correcto!. ".format(respuesta_usuario , session_attr['respuesta'])
        else:
            tu_respuesta = "Incorrecto, la respuesta correcta de {} {} {} es {} . ".format(session_attr['num1'],session_attr['op'],session_attr['num2'],session_attr['respuesta'])
        
        if nivel == 1:
            max_num = 10
        elif nivel == 2:
            max_num = 20
        elif nivel == 3:
            max_num = 50
            
        num1 = random.randint(0,max_num)
        num2 = random.randint(0,max_num)
        
        if contador <= 2:
            card_content = "{} + {} = ? ".format(num1, num2)
            speech = "¿cuánto es {} más {}? .".format(num1, num2)
            
            session_attr['op'] = "más"
            session_attr['respuesta'] = int(num1+num2)
        elif contador <= 5:
            if num1 < num2:
                num1 = num2 + random.randint(0,2)
            if num1 > max_num:
                num1 = max_num
            card_content = "{} - {} = ? ".format(num1, num2)
            speech = "¿cuánto es {} menos {} ? .".format(num1, num2)
            
            session_attr['op'] = "menos"
            session_attr['respuesta'] = int(num1-num2)
        elif contador <= 8:
            card_content = "{} x {} = ? ".format(num1, num2)
            speech = "¿cuánto es {} por {} ? .".format(num1, num2)
            
            session_attr['op'] = "por"
            session_attr['respuesta'] = int(num1*num2)
        else:
            while True:
                num1 = random.randint(1,max_num)
                num2 = random.randint(2,max_num)
                if num1 % num2 == 0 and num1 != num2:
                    break
            card_content = "{} / {} = ? ".format(num1, num2, num1/num2)
            speech = "¿cuánto es {} entre {} ? .".format(num1, num2)
            
            session_attr['op'] = "entre"
            session_attr['respuesta'] = int(num1/num2)
            
        session_attr['num1'] = num1
        session_attr['num2'] = num2
        
        speech = tu_respuesta +" Siguiente: "+ speech
        card_content = tu_respuesta +"<br><br>Siguiente: "+ card_content
        
        
        if contador == 10:
            session_attr['contador'] = 0
            
            if int(session_attr['correctas']) == 10:
                calif = "¡Excelente!"
            elif int(session_attr['correctas']) > 7:
                calif = "¡Muy bien!"
            elif int(session_attr['correctas']) > 5:
                calif = "¡Bien, sigue practicando!"
            else:
                calif = "¡Necesitas practicar más!"
                
            speech = tu_respuesta +"Tu calificación es de {} de {}, {}. ¿Qué más deseas realizar?".format( int(session_attr['correctas']),contador, calif)
            card_content = "Tu calificación es de {} de {}".format( int(session_attr['correctas']),contador)
        else:
            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
Exemple #20
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("Practicar Intent")

        speech = "No entendí muy bien"+ ". ¿Qué más deseas realizar?"
            
        card_title = SKILL_NAME
        card_content = "No entendí muy bien"
        
        nivel = 1
        
        
    
        #attr = handler_input.attributes_manager.persistent_attributes
        session_attr = handler_input.attributes_manager.session_attributes
        
        session_attr['nivel'] = 1
        session_attr['correctas'] = 0
        session_attr['contador'] = 1
        
        slots = handler_input.request_envelope.request.intent.slots
        try:
            nivel = int(slots["practica"].resolutions.resolutions_per_authority[0].values[0].value.id)
            session_attr['nivel'] = nivel
            #if 'contador' in session_attr:
            #    contador = session_attr['contador']
        except:
            nivel = 1
            
        
        if nivel == 1:
            max_num = 10
        elif nivel == 2:
            max_num = 20
        elif nivel == 3:
            max_num = 50
            
        num1 = random.randint(0,max_num)
        num2 = random.randint(0,max_num)
        
        
        card_content = "{} + {} = ? ".format(num1, num2)
        speech = "Modo de práctica de 10 preguntas: ¿cuánto es {} más {} ? .".format(num1, num2)
        
        session_attr['op'] = "más"
        session_attr['respuesta'] = int(num1+num2)
            
        session_attr['num1'] = num1
        session_attr['num2'] = num2
        
            
        #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