Esempio n. 1
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("In QuizAnswerHandler")
        attr = handler_input.attributes_manager.session_attributes
        response_builder = handler_input.response_builder

        item = attr["quiz_item"]
        item_attr = attr["quiz_item"]['species']
        is_ans_correct, option = util.compare_token_or_slots(
            handler_input=handler_input, value=item_attr)

        if is_ans_correct:
            speech = util.get_speechcon(correct_answer=True)
            speech += util.get_answer(item_attr, item)

            handler_input.attributes_manager.session_attributes = attr

            if option == 'miss':
                speech += data.SPEECH_PROUN.format(item_attr)
            speech += util.get_speech_description(item)
            speech += util.get_final_score(attr["quiz_score"], attr["counter"])
            speech += data.EXIT_SKILL_MESSAGE

            #response_builder.set_should_end_session(True)

            if data.USE_CARDS_FLAG:
                #speech_card=speech.replace("<say-as interpret-as='interjection'>", "")
                #speech_card=speech_card.replace("</say-as><break strength='strong'/>, ")
                response_builder.set_card(
                    ui.StandardCard(title="Final Score {}".format(
                        str(attr["quiz_score"])),
                                    text=speech))

        else:
            speech = util.get_speechcon(correct_answer=False)
            if attr['counter'] < data.MAX_QUESTIONS:

                attr["quiz_score"] -= 20
                # Update item and item_attr for next question
                item = attr["quiz_item"]
                item_attr = attr["quiz_attr"]

                attr['ready'].append(item_attr)
                speech = util.get_hint(handler_input, attr['ready'], item)
                attr['counter'] += 1
                if data.USE_CARDS_FLAG:
                    response_builder.set_card(
                        ui.StandardCard(title="Question #{}".format(
                            str(attr["counter"])),
                                        text=speech))

            else:
                speech = util.get_speechcon(correct_answer=False)
                speech += util.no_answer(item_attr)
                speech += util.get_speech_description(item)
                speech += data.EXIT_SKILL_MESSAGE

        return response_builder.speak(speech).ask(speech).response
Esempio n. 2
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("In DefinitionHandler")
        response_builder = handler_input.response_builder
        item, is_resolved = util.get_item(
            slots=handler_input.request_envelope.request.intent.slots,
            states_list=data.STATES_LIST)

        if is_resolved:
            if data.USE_CARDS_FLAG:
                response_builder.set_card(
                    ui.StandardCard(
                        title=util.get_card_title(item),
                        text=util.get_card_description(item),
                        image=ui.Image(
                            small_image_url=util.get_small_image(item),
                            large_image_url=util.get_large_image(item)
                        )))

            if util.supports_display(handler_input):
                img = Image(
                    sources=[ImageInstance(url=util.get_large_image(item))])
                title = util.get_card_title(item)
                primary_text = get_plain_text_content(
                    primary_text=util.get_card_description(item))

                response_builder.add_directive(
                    RenderTemplateDirective(
                        BodyTemplate2(
                            back_button=BackButtonBehavior.VISIBLE,
                            image=img, title=title,
                            text_content=primary_text)))

            response_builder.speak(
                util.get_speech_description(item)).ask(data.REPROMPT_SPEECH)

        else:
            response_builder.speak(
                util.get_bad_answer(item)).ask(util.get_bad_answer(item))

        return response_builder.response