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