예제 #1
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        # go to beginning of track
        logger.info("In StartOverHandler")
        persistence_attr = handler_input.attributes_manager.persistent_attributes
        track_number = int(persistence_attr["track_number"])

        audio_key = trackInfo.track_info[track_number]["url"]
        audio_url = create_presigned_url(audio_key)
        persistence_attr["playback_settings"]["offset_in_milliseconds"] = 0
        persistence_attr["playback_settings"]["url"] = audio_url
        persistence_attr["playback_settings"]["token"] = audio_key

        persistence_attr["playback_settings"]["next_stream_enqueued"] = False

        handler_input.attributes_manager.persistent_attributes = persistence_attr

        card = StandardCard(title=trackInfo.track_info[track_number]["title"],
                            text=trackInfo.track_info[track_number]["artist"],
                            image=Image(small_image_url=small_image_url,
                                        large_image_url=large_image_url))

        directive = PlayDirective(play_behavior=PlayBehavior.REPLACE_ALL,
                                  audio_item=AudioItem(stream=Stream(
                                      token=audio_key,
                                      url=audio_url,
                                      offset_in_milliseconds=0,
                                      expected_previous_token=None),
                                                       metadata=None))

        handler_input.response_builder.set_card(card).add_directive(
            directive).set_should_end_session(True)

        return handler_input.response_builder.response
예제 #2
0
def read_headlines_intent_handler(handler_input):
    """Handler for Hello World Intent."""
    # type: (HandlerInput) -> Response
    speech_text = HeadLines().getHeadlines()

    return handler_input.response_builder.speak(speech_text).set_card(
        StandardCard("Daily Orange", speech_text,
                     DAILY_ORANGE_LOGO)).set_should_end_session(True).response
예제 #3
0
    def handle(self, handler_input):

        speak_output = "Claro. o Dóti Benk é um banco digital que ajuda empresários a ganharem performance nas rotinas diárias além de pagamentos e recebimentos. com o meu apoio é possível fazer muitas tarefas. podemos ainda utilizar rôbôs para operações, minimizando erros humanos e aumentando a performance da empresa, além das reduções de custo."
        card_text = "Claro, o Dotbank é um banco digital que ajuda empresários a ganharem performance nas rotinas diárias além de pagamentos e recebimentos, com o meu apoio é possível fazer muitas tarefas, podemos ainda utilizar robôs para operações minimizando erros humanos e aumentando a performance da empresa além das reduções de custo."

        return (handler_input.response_builder.speak(speak_output).set_card(
            StandardCard("Obrigado", card_text, imagem_padrao)).ask(
                "Posso ajudar em mais alguma coisa?").response)
예제 #4
0
    def handle(self, handler_input):

        speak_output = "Você tem uma conta de energia elétrica no valor de 210 reais e 35 centavos. e o pagamento do fornecedor de móveis no valor de 654 reais."
        card_text = "\nEnergia Elétrica: R$210,35.\n\nFornecedor de móveis: R$654,00"

        return (handler_input.response_builder.speak(speak_output).set_card(
            StandardCard("Pagamentos", card_text, imagem_padrao)).ask(
                "Posso ajudar em mais alguma coisa?").response)
예제 #5
0
    def handle(self, handler_input):

        speak_output = "Olá, Marcelo, seu saldo é de 21.370 reais."
        card_text = "Saldo: R$21.370,00"

        return (handler_input.response_builder.speak(speak_output).set_card(
            StandardCard("Saldo", card_text, imagem_padrao)).ask(
                "Posso ajudar em mais alguma coisa?").response)
예제 #6
0
    def handle(self, handler_input):

        speak_output = "Você vendeu 280147 reais em setembro."
        card_text = "\nVendas em Setembro: R$280.147,00"

        return (handler_input.response_builder.speak(speak_output).set_card(
            StandardCard("Volume de vendas", card_text, imagem_padrao)).ask(
                "Posso ajudar em mais alguma coisa?").response)
예제 #7
0
    def handle(self, handler_input):

        speak_output = "Conta de energia paga com sucesso."
        card_text = "\nConta: Energia Elétrica R$210,35 foi paga com sucesso!"

        return (handler_input.response_builder.speak(speak_output).set_card(
            StandardCard("Pagamentos", card_text, imagem_padrao)).ask(
                "Posso ajudar em mais alguma coisa?").response)
예제 #8
0
def launch_request_handler(handler_input):
    """Handler for Skill Launch."""
    # type: (HandlerInput) -> Response
    speech_text = "Welcome to the Daily Orange skill, you can ask for the headlines!"

    return handler_input.response_builder.speak(speech_text).set_card(
        StandardCard("Daily Orange", speech_text,
                     DAILY_ORANGE_LOGO)).set_should_end_session(False).response
예제 #9
0
    def handle(self, handler_input):

        speak_output = "Seu melhor vendedor é o Pedro Rósa da empresa Vamos Parcelar"
        card_text = "\nVendedor: Pedro Rosa\n\n Empresa: Vamos Parcelar"

        return (handler_input.response_builder.speak(speak_output).set_card(
            StandardCard("Melhor Vendedor", card_text, imagem_padrao)).ask(
                "Posso ajudar em mais alguma coisa?").response)
예제 #10
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("In PlayMetronomeHandler")

        tempo = int(get_slot_value(handler_input, "tempo"))
        if tempo < 20 or tempo > 240:
            handler_input.response_builder.speak(strings.TEMPO_NOT_IN_RANGE)
            return handler_input.response_builder.response

        duration = (get_slot_value(handler_input, "duration")
                    or strings.DEFAULT_DURATION)
        seconds = iso_8601_duration_to_seconds(duration)
        if seconds < 10 or seconds > 600:
            handler_input.response_builder.speak(strings.DURATION_NOT_IN_RANGE)
            return handler_input.response_builder.response

        logger.info("tempo={} duration={} seconds={}".format(
            tempo, duration, seconds))

        speak = strings.PLAYING.format(
            tempo, "{}'{}\"".format(int(seconds / 60), seconds % 60))

        data = {
            "card": {
                "title": strings.SKILL_NAME,
                "text": strings.CARD_TEXT.format(tempo),
                "small_image_url": strings.ICON_URL,
                "large_image_url": strings.ICON_URL
            },
            "url": get_metronome_url(tempo, seconds),
        }

        card = StandardCard(
            title=data["card"]["title"],
            text=data["card"]["text"],
            image=Image(small_image_url=data["card"]["small_image_url"],
                        large_image_url=data["card"]["large_image_url"]))

        directive = PlayDirective(
            play_behavior=PlayBehavior.REPLACE_ALL,
            audio_item=AudioItem(
                stream=Stream(expected_previous_token=None,
                              token=data["url"],
                              url=data["url"],
                              offset_in_milliseconds=0),
                metadata=AudioItemMetadata(
                    title=data["card"]["title"],
                    subtitle=data["card"]["text"],
                    art=display.Image(
                        content_description=data["card"]["title"],
                        sources=[display.ImageInstance(url=strings.ICON_URL)]),
                    background_image=display.Image(
                        content_description=data["card"]["title"],
                        sources=[display.ImageInstance(url=strings.ICON_URL)
                                 ]))))
        (handler_input.response_builder.speak(speak).set_card(
            card).add_directive(directive).set_should_end_session(True))
        return handler_input.response_builder.response
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("In GetNextMatchIntent")

        # Get user timezone
        usertz = getUserTimezone(handler_input.request_envelope)
        if usertz is None:
            handler_input = requestPermission(handler_input)
            return handler_input.response_builder.response

        # Get OWL schedule
        schedule = APIRequest.schedule()

        curWeek = getCurrentWeek(schedule)
        nextMatch = getNextMatch(curWeek)
        matchTime = nextMatch.startdate.astimezone(usertz)

        team1 = nextMatch.teams[0]
        team2 = nextMatch.teams[1]

        # TODO: old version implemented a check for live games here. It is
        # probably a good idea to check for a live game (the user may be
        # interested to know) but the TODO is to consider if here is the best
        # place to do that.
        liveMatchContent = ""

        # Prepare speech output
        nextMatchContent = "The next match will be"
        if isToday(matchTime):
            nextMatchContent = "{} today at {}.".format(
                nextMatchContent, matchTime.strftime(clkfrmt.clkstr))
        elif isTomorrow(matchTime):
            nextMatchContent = "{} tomorrow at {}.".format(
                nextMatchContent, matchTime.strftime(clkfrmt.clkstr))
        else:
            nextMatchContent = "{} on {}.".format(
                nextMatchContent, matchTime.strftime(clkfrmt.datetimestr))

        nextMatchContent = "{} The {} will {} the {}.".format(
            nextMatchContent, team1.name, getRandomEntry(vs), team2.name)

        speechOutput = "{}{}".format(liveMatchContent, nextMatchContent)

        # Setup card
        title = "Match Details"
        img = Image(small_image_url=resource.OWL['LOGO'],
                    large_image_url=resource.OWL['LOGO'])
        content = speechOutput

        handler_input.response_builder.speak(speechOutput) \
            .set_card(StandardCard(title, content, img)) \
            .set_should_end_session(True)

        return handler_input.response_builder.response
예제 #12
0
    def handle(self, handler_input):
        speech_text = "This is a simple spoken response with a standard card"
        image_url = "https://duy7y3nglgmh.cloudfront.net/tackles.png"
        card = StandardCard(title="Premier League",
                            text=speech_text,
                            image=Image(small_image_url=image_url,
                                        large_image_url=image_url))

        return (handler_input.response_builder.ask(
            "this is the reprompt").speak(speech_text).set_card(
                card).set_should_end_session(False).response)
예제 #13
0
 def handle(self, handler_input):
     # type: (HandlerInput) -> Response
     speech_text = "Thank you for using TeraChem! " \
                 "Have a nice day!"
     small = "https://chemvox.s3.us-east-2.amazonaws.com/" + str(
         random.randint(1, 6)) + ".png"
     pict = Image(small)
     handler_input.response_builder.speak(speech_text).set_card(
         StandardCard("ChemVox", speech_text,
                      pict)).set_should_end_session(True)
     return handler_input.response_builder.response
예제 #14
0
 def handle(self, handler_input):
     logger.info("In HelloWorld")
     speechText = '<lang xml:lang="en-US">Hello World</lang>, <lang xml:lang="es-ES">Hola ' \
                  'Mundo</lang>'
     handler_input.response_builder.speak(speechText).set_card(
         StandardCard(title='Standard Card / Tarjeta Estandar',
                      text='Lorem ipsum dolor sit amet, consectetur adipiscing',
                      image=Image(small_image_url=standard_small_img,
                                  large_image_url=standard_large_img))).\
         ask(speechText).\
         set_should_end_session(False)
     return handler_input.response_builder.response
예제 #15
0
 def handle(self, handler_input):
     """
     Creates a response for the given input
     Args:
         handler_input(HandlerInput): The input to the handler
     Returns: (Response) The response
     """
     handler_input.response_builder.speak(speechs["nero"]) \
         .add_directive(ConfirmIntentDirective()) \
         .set_card(StandardCard("Nero", speechs["nero_card"],
                                Image(images["nero"], images["nero"])))
     return handler_input.response_builder.response
예제 #16
0
    def handle(self, handler_input):
        slots = handler_input.request_envelope.request.intent.slots
        skill_locale = handler_input.request_envelope.request.locale

        name = slots["name"].value

        s1 = True

        sentence = "Let me search for " + name + " on my database"
        self.progressive_response(handler_input, sentence)

        # check molecule on Pubchem
        cids = get_cids(name, 'name')
        if not cids:
            speech_text = "Sorry, I could not find {} on PubChem. What else can I do for you?".format(
                name)
        else:
            Natoms, atoms, geom, charge = get_parameters(cids)

            if geom is None:
                speech_text = "Sorry, I could not find the coordinates of {} on PubChem. What else can I do for you?".format(
                    name)

            else:
                # run calculation on TCC
                sentence = "I Launched the calculation on TeraChem Cloud."
                self.progressive_response(handler_input, sentence)

                pool = ThreadPool(processes=1)
                async_result = pool.apply_async(
                    solvatochromic, (s1, name, cids, atoms, geom, charge,
                                     receiver_email, user_name))

                speech_text = None
                try:
                    speech_text = async_result.get(timeout=5)
                except:
                    if receiver_email is None:
                        speech_text = "The calculation is taking too long. If you grant the permission, I will email you the results. What else can I do for you?"
                    else:
                        speech_text = "The calculation is taking too long. I will email you the results. What else can I do for you?"


# type: (HandlerInput) -> Response
        small = "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/" + name.replace(
            " ", "") + "/PNG"
        structure = Image(small)
        handler_input.response_builder.speak(speech_text).set_card(
            StandardCard("ChemVox", speech_text,
                         structure)).set_should_end_session(False)
        return handler_input.response_builder.response
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response

        # will help with figuring out errors in cloudwatch later
        logger.info("In GetTeamRecordIntent")

        slots = handler_input.request_envelope.request.intent.slots
        if 'Team' not in slots:
            print("Error: entered request without a slot")
            # TODO: Will we ever get here? If so we need to return an ASK error

        teamSlot = slots['Team']
        resolution = teamSlot.resolutions.resolutions_per_authority[0]

        if resolution.status.code == StatusCode.ER_SUCCESS_MATCH:
            resolutionValues = resolution.values[0]
            teamName = resolutionValues.value.name
            teamId = resolutionValues.value.id
        else:
            print("Error: not a valid team recognized in the slots")
            # TODO: implement data.TEAM_REPROMPT
            handler_input.response_builder.speak(data.INVALID_TEAM_MSG.format(teamSlot.value))\
                    .ask(data.TEAM_REPORMPT)
            return handler_input.response_builder.response

        team = APIRequest.teamfromid_v2(teamId)
        record = team.records

        W = record['matchWin']
        L = record['matchLoss']

        speechOutput = 'The {} have a record of {} wins and {}'.format(
            team.name, W, L)
        if L == 1:
            speechOutput = speechOutput + ' loss.'
        else:
            speechOutput = speechOutput + ' losses.'

        cardTitle = '{}: {}-{}'.format(team.name, W, L)
        cardContent = ''
        # TODO: With the /v2/teams endpoint the logo URL are a little more
        # formatted and varying. Need to go back and modify.
        cardImg = Image(small_image_url=team.logo.path['main']['svg'],
                        large_image_url=team.logo.path['main']['svg'])

        handler_input.response_builder.speak(speechOutput) \
            .set_card(StandardCard(cardTitle, cardContent, cardImg)) \
            .set_should_end_session(True)

        return handler_input.response_builder.response
예제 #18
0
    def handle(self, handler_input):
        """Handle the intent; fetch and serve appropriate response.

        Ends the current session.

        Args:
            handler_input (ask_sdk_core.handler_input.HandlerInput):
                Input from Alexa.

        Returns:
            ask_sdk_model.response.Response: Response for this intent and
                device.

        """
        LOGGER.info("__In MassTimeHandler__")
        userSession = session.KilianUserSession(handler_input)

        mass = events.MassResponse(userSession)
        speech, reprompt, cardTitle, cardText, cardImage, displayText = \
            mass.getMassTimeResponse()
        handler_input.response_builder.speak(speech).ask(reprompt)

        # Card for app:
        handler_input.response_builder.set_card(
            StandardCard(title=cardTitle, text=cardText, image=cardImage))
        handler_input.response_builder.set_should_end_session(True)

        # Display Directive for display devices (Echo Show, etc):
        directiveBuilder = display.Directive(
            mainUrl=
            "https://st-killian-resources.s3.amazonaws.com/displayTemplateMedia/massGifts_340.jpg",  # pylint: disable=C0301
            backgroundUrl=
            "https://st-killian-resources.s3.amazonaws.com/displayTemplateMedia/dispBG_512.jpg",  # pylint: disable=C0301
            title=cardTitle,
            text=displayText)
        displayDirective = directiveBuilder.getDirective()

        # Check for displayDirective support:
        envelope = handler_input.request_envelope
        supported = envelope.context.system.device.supported_interfaces.to_dict(
        )
        if supported.get('display'):
            LOGGER.info(
                "display interface supported, adding display directive.")
            handler_input.response_builder.add_directive(displayDirective)
        else:
            LOGGER.info(
                "display interface not supported, withholding directive.")

        return handler_input.response_builder.response
예제 #19
0
    def card(title, text=None, blend=None):
        if blend:
            blend = stringcase.spinalcase(blend)
            image = Image(
                f"{NOISEBLEND_IMG}/bg/blend/bg_{blend}_768.jpg",
                f"{NOISEBLEND_IMG}/bg/blend/bg_{blend}_1280.jpg",
            )
        else:
            image = Image(
                f"{NOISEBLEND_IMG}/icons/app/app-android-512x512.png",
                f"{NOISEBLEND_IMG}/icons/app/app-android-1024x1024.png",
            )

        return StandardCard(title, text, image)
예제 #20
0
    def get_card(self) -> Card:

        card = StandardCard(
            title="Pi-hole Alexa",
            image=Image(small_image_url=self.get_images_url() + "/logo.png",
                        large_image_url=self.get_images_url() +
                        "/logo_large.png"),
            text=StatusIntent.CARD_TEXT_TEMPLATE.format(
                self.get_client().status,
                self.get_client().total_queries,
                self.get_client().unique_clients,
                self.get_client().blocked,
                Decimal(self.get_client().ads_percentage).normalize()))

        return card
예제 #21
0
    def handle(self, handler_input):
        """Handle the intent; fetch and serve appropriate response.

        Args:
            handler_input (ask_sdk_core.handler_input.HandlerInput):
                Input from Alexa.

        Returns:
            ask_sdk_model.response.Response: Response for this intent and
                device.

        """
        userSession = session.KilianUserSession(handler_input)

        implemented = False
        if implemented:
            speech, reprompt, cardTitle, cardText, cardImage = \
                events.Calendar(userSession).getNextEvents()
            handler_input.response_builder.speak(speech).ask(
                reprompt).set_card(
                    StandardCard(title=cardTitle,
                                 text=cardText,
                                 image=cardImage)).set_should_end_session(True)
            return handler_input.response_builder.response

        calendar = events.Calendar(userSession)
        speech, title, text, directive, sessionAttrs = \
            calendar.getNotImplementedResponse()

        card = StandardCard(title=title, text=text)
        handler_input.response_builder.speak(speech)
        handler_input.response_builder.set_card(card)
        handler_input.response_builder.add_directive(directive)
        handler_input.response_builder.set_should_end_session(True)
        handler_input.attributes_manager.session_attributes = sessionAttrs
        return handler_input.response_builder.response
예제 #22
0
    def play(handler_input, is_playback=False):
        # type: (HandlerInput) -> Response
        playback_info = get_playback_info(handler_input)
        response_builder = handler_input.response_builder

        play_order = playback_info.get("play_order")
        offset_in_ms = playback_info.get("offset_in_ms")
        index = playback_info.get("index")

        play_behavior = PlayBehavior.REPLACE_ALL
        podcast = data.AUDIO_DATA[play_order[index]]
        token = play_order[index]
        playback_info['next_stream_enqueued'] = False

        response_builder.add_directive(
            PlayDirective(
                play_behavior=play_behavior,
                audio_item=AudioItem(
                    stream=Stream(
                        token=token,
                        url=podcast.get("url"),
                        offset_in_milliseconds=offset_in_ms,
                        expected_previous_token=None),
                    metadata=None))
        ).set_should_end_session(True)

        if not is_playback:
            # Add card and response only for events not triggered by
            # Playback Controller
            handler_input.response_builder.speak(
                data.PLAYBACK_PLAY.format(podcast.get("title")))

            if can_throw_card(handler_input):
                response_builder.set_card(StandardCard(
                    title=data.PLAYBACK_PLAY_CARD.format(
                        podcast.get("title")),
                    text=data.PLAYBACK_PLAY_CARD.format(
                        podcast.get("title")),
                    image=Image(
                        small_image_url="https://quisutdeusapp.altervista.org/sanmichele_108.png",
                        large_image_url="https://quisutdeusapp.altervista.org/sanmichele_512.png"
                    )
                ))

        return response_builder.response
예제 #23
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response

        slots = handler_input.request_envelope.request.intent.slots
        try:
            recipient = slots[
                'recipient'].resolutions.resolutions_per_authority[0].values[
                    0].value.name.title()
        except:
            recipient = slots['recipient'].value.title()

        # fetch data into dynamodb
        print 'searching for {} in dynamodb'.format(recipient)
        table = boto3.resource('dynamodb').Table('MedalOfHonorInfo')
        response = table.query(
            KeyConditionExpression=Key('name').eq(recipient), Limit=1)
        print 'response={}'.format(response)

        if len(response['Items']) == 0:
            speech_text = 'There are no Medal of Honor recipients by the name of {}'.format(
                recipient)
            handler_input.response_builder.speak(speech_text)

            session_attributes = handler_input.attributes_manager.session_attributes
            session_attributes['last_request'] = {'speech_text': speech_text}
        else:
            citation = response['Items'][0]['citation']
            year_of_honor = response['Items'][0]['year_of_honor']
            img = response['Items'][0]['img']
            name = response['Items'][0]['name']
            speech_text = citation
            handler_input.response_builder\
              .speak('{} was awarded the Medal of Honor in {}<break time="600ms"/>{}'.format(name, year_of_honor, speech_text))\
              .set_card(
                StandardCard(name, speech_text, Image(img, img)))\
              .set_should_end_session(False)

            session_attributes = handler_input.attributes_manager.session_attributes
            session_attributes['last_request'] = {
                'name': name,
                'citation': citation,
                'img': img
            }

        return handler_input.response_builder.response
예제 #24
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response

        global user_name
        global receiver_email

        req_envelope = handler_input.request_envelope
        if not (req_envelope.context.system.user.permissions and
                req_envelope.context.system.user.permissions.consent_token):
            user_name = ''
            receiver_email = None
        else:
            apiaccessToken = handler_input.request_envelope.context.system.api_access_token
            key = 'Bearer ' + apiaccessToken
            headers = {
                "Host": "api.amazonalexa.com",
                "Authorization": key,
                "Accept": "application/json"
            }
            URL = "https://api.amazonalexa.com/v2/accounts/~current/settings/Profile.givenName"
            jname = requests.get(url=URL, headers=headers)
            user_name = jname.json()
            if not isinstance(user_name, str): user_name = ''

            URL = "https://api.amazonalexa.com/v2/accounts/~current/settings/Profile.email"
            jemail = requests.get(url=URL, headers=headers)
            receiver_email = jemail.json()
            if not isinstance(receiver_email, str): receiver_email = None

        if receiver_email is None or user_name == '':
            speech_text = "Welcome " + user_name + ", I am ChemVox, the voice of TeraChem. If you grant the permissions to access your email address and name in the skill setting, I will email you the results. How can I help you?"
            handler_input.response_builder.speak(speech_text).set_card(
                AskForPermissionsConsentCard(
                    permissions=permissions)).set_should_end_session(False)
        else:
            speech_text = "Welcome " + user_name + ", I am ChemVox, the voice of TeraChem. How can I help you?"
            small = "https://chemvox.s3.us-east-2.amazonaws.com/" + str(
                random.randint(1, 6)) + ".png"
            pict = Image(small)
            handler_input.response_builder.speak(speech_text).set_card(
                StandardCard("ChemVox", speech_text,
                             pict)).set_should_end_session(False)

        return handler_input.response_builder.response
예제 #25
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        logger.info("*****  at handle launch request   *******")
        speech_text = "Welcome to the Alexa APLA demo"

        logger.info("about to return response")
        image_url = "https://duy7y3nglgmh.cloudfront.net/Depositphotos_referee.jpg"
        card = StandardCard(title="Premier League",
                            text="bla",
                            image=Image(small_image_url=image_url,
                                        large_image_url=image_url))

        session_attr = handler_input.attributes_manager.session_attributes
        session_attr["radioButtonText"] = "Form"
        handler_input.attributes_manager.session_attributes = session_attr

        return (handler_input.response_builder
                #.speak("this is the speak")
                .ask("this is the ask").set_card(card).response)
예제 #26
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response
        print("PlayRadio...")

        handler_input.response_builder.set_card(
            StandardCard(title="FIP Rock", text="La radio InRock"))
        handler_input.response_builder.add_directive(
            PlayDirective(
                play_behavior=PlayBehavior.REPLACE_ALL,
                audio_item=AudioItem(stream=Stream(
                    token="France Inter",
                    url=
                    "https://chai5she.cdn.dvmr.fr/fip-webradio1.mp3?ID=radiofrance",
                    offset_in_milliseconds=0,
                    expected_previous_token=None),
                                     metadata=None))).set_should_end_session(
                                         False)
        handler_input.response_builder.speak("En avant la musique")
        return handler_input.response_builder.response
    def generate_recipe_output(self, handler_input, sauce_item):
        _ = handler_input.attributes_manager.request_attributes["_"]
        locale = handler_input.request_envelope.request.locale
        # Sauce exists
        if (sauce_item['id']):
            # Load i18n strings
            recipes = recipe_utils.get_locale_specific_recipes(locale)
            selected_recipe = recipes[sauce_item['id']]
            # Add image
            sauce_item['image'] = recipe_utils.get_sauce_image(
                sauce_item['id'])
            # Add a card (displayed in the Alexa app)
            cardTitle = _(data.DISPLAY_CARD_TITLE).format(
                _(data.SKILL_NAME), selected_recipe['name'])
            # Add speak output and reprompt
            handler_input.response_builder.speak(
                selected_recipe['instructions']).ask(
                    _(data.RECIPE_REPEAT_MESSAGE))
            handler_input.response_builder.set_card(
                StandardCard(title=cardTitle,
                             text=selected_recipe['instructions'],
                             image=Image(small_image_url=sauce_item['image'],
                                         large_image_url=sauce_item['image'])))
            # Add APL Template if device is compatible
            apl_utils.recipeScreen(handler_input, sauce_item, selected_recipe)
        else:
            # Spoken Sauce does not exist
            # Add prompt : Is the item slot is filled with a value ?
            if (sauce_item['spoken']):
                # Use spoken value to let user know no recipe exists for this value
                handler_input.response_builder.speak(
                    _(data.RECIPE_NOT_FOUND_WITH_ITEM_NAME).format(
                        sauce_item['spoken']))
            else:
                # No spoken value
                handler_input.response_builder.speak(
                    _(data.RECIPE_NOT_FOUND_WITHOUT_ITEM_NAME))

        # add reprompt
        handler_input.response_builder.ask(_(data.RECIPE_NOT_FOUND_REPROMPT))

        # Generate JSON response
        return handler_input.response_builder.response
예제 #28
0
    def handle(self, handler_input):
        # type: (HandlerInput) -> Response

        # Extract User Input
        slots = handler_input.request_envelope.request.intent.slots
        user_id = int(slots.get("user_id").value)
        passcode = slots.get("passcode").value

        # Print info to logs for debugging purposes
        print("Deploy Production")
        print(f"UserID: {user_id}")
        print(f"Passcode: {passcode}")

        # Get the pipeline name from the environment variables
        pipeline_name = os.getenv("pipeline_name")

        # Trigger the Deployment if auth passes
        pipeline_execution_id = self.trigger_deployment(
            pipeline_name, user_id, passcode)

        # Generate Response for Deployment Status
        if pipeline_execution_id:

            speech_text = "<speak>Deployment Approved. Triggering the deployment now.<break time=\"1s\"/>Is there anything else I can do for you?</speak>"
            card_text = f"Deployment Approved\nPipeline Execution ID: {pipeline_execution_id}"

            handler_input.response_builder.speak(speech_text).set_card(
                StandardCard("Production Deployment Status",
                             card_text)).set_should_end_session(False)

            print("Deployment Approved")
        else:
            speech_text = "<speak>Invalid Authorization. Deployment Canceled.<break time=\"1s\"/>Is there anything else I can do for you?</speak>"
            card_text = f"Deployment Canceled\nAuthorization Failure"

            handler_input.response_builder.speak(speech_text).set_card(
                SimpleCard("Production Deployment Status",
                           card_text)).set_should_end_session(False)

            print("Deployment Canceled")

        # Return the response
        return handler_input.response_builder.response
예제 #29
0
    def handle(self, handler_input):
        """Handle the intent; fetch and serve appropriate response.

        Ends the current session.

        Args:
            handler_input (ask_sdk_core.handler_input.HandlerInput):
                Input from Alexa.

        Returns:
            ask_sdk_model.response.Response: Response for this intent and
                device.

        """
        speech, reprompt, cardTitle, cardText, cardImage = \
            getParishPhoneResponse()
        handler_input.response_builder.speak(speech).ask(reprompt).set_card(
            StandardCard(title=cardTitle, text=cardText,
                         image=cardImage)).set_should_end_session(True)
        return handler_input.response_builder.response