1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #lambda_function.py from __future__ import print_function import json # We'll start with a couple of globals... CardTitlePrefix = "Greeting" # --------------- entry point ----------------- def lambda_handler(event, context): # TODO implement print ( "event.session.application.applicationId=" + event[ 'session' ][ 'application' ][ 'applicationId' ]) if event[ 'session' ][ 'new' ]: on_session_started({ 'requestId' : event[ 'request' ][ 'requestId' ]}, event[ 'session' ]) if event[ 'request' ][ 'type' ] = = "LaunchRequest" : return on_launch(event[ 'request' ], event[ 'session' ]) elif event[ 'request' ][ 'type' ] = = "IntentRequest" : return on_intent(event[ 'request' ], event[ 'session' ]) elif event[ 'request' ][ 'type' ] = = "SessionEndedRequest" : return on_session_ended(event[ 'request' ], event[ 'session' ]) #return response("", response_plain_text("Hello from Lambda!", True)) # --------------- Events ------------------ def on_session_started(session_started_request, session): """ Called when the session starts """ print ( "on_session_started requestId=" + session_started_request[ 'requestId' ] + ", sessionId=" + session[ 'sessionId' ]) def on_launch(launch_request, session): """ Called when the user launches the skill without specifying what they want """ print ( "on_launch requestId=" + launch_request[ 'requestId' ] + ", sessionId=" + session[ 'sessionId' ]) # Dispatch to your skill's launch return get_welcome_response() def on_intent(intent_request, session): """ Called when the user specifies an intent for this skill """ print ( "on_intent requestId=" + intent_request[ 'requestId' ] + ", sessionId=" + session[ 'sessionId' ]) intent = intent_request[ 'intent' ] intent_name = intent_request[ 'intent' ][ 'name' ] # Dispatch to your skill's intent handlers if intent_name = = "greeting" : return say_hello() elif intent_name = = "AMAZON.HelpIntent" : return get_welcome_response() elif intent_name = = "AMAZON.CancelIntent" or intent_name = = "AMAZON.StopIntent" : return handle_session_end_request() else : raise ValueError( "Invalid intent" ) # --------------- Functions that control the skill's behavior ------------------ def get_welcome_response(): session_attributes = {} card_title = "Hello" speech_output = "Welcome to the Hello World demonstration... Ask me to say hello." # If the user either does not reply to the welcome message or says something # that is not understood, they will be prompted again with this text. reprompt_text = "I'm sorry - I didn't understand. You should ask me to say hello..." should_end_session = False return response(session_attributes, response_plain_text(card_title, speech_output, reprompt_text, should_end_session)) def say_hello(): """ Return a suitable greeting... """ card_title = "Greeting Message" greeting_string = "Hello! this is a demonstration of alexa hello word using python" return response({}, response_plain_text(card_title, greeting_string, "Ask me to say hello..." , True )) def handle_session_end_request(): card_title = "Session Ended" speech_output = "Have a nice day! " # Setting this to true ends the session and exits the skill. should_end_session = True return response({}, response_plain_text( card_title, speech_output, None , should_end_session)) # --------------- speech response handlers ----------------- # build the json responses def response_plain_text(title, output, reprompt_text, endsession): """ create a simple json plain text response """ return { 'outputSpeech' : { 'type' : 'PlainText' , 'text' : output }, 'card' : { 'type' : 'Simple' , 'title' : CardTitlePrefix + " - " + title, 'content' : output }, 'reprompt' : { 'outputSpeech' : { 'type' : 'PlainText' , 'text' : reprompt_text } }, 'shouldEndSession' : endsession } def response(session_attributes, speech_response): """ create a simple json response """ return { 'version' : '1.0' , 'sessionAttributes' : session_attributes, 'response' : speech_response } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | //skill.json { "interactionModel" : { "languageModel" : { "invocationName" : "demo quiz" , "intents" : [ { "name" : "AMAZON.CancelIntent" , "samples" : [] }, { "name" : "AMAZON.HelpIntent" , "samples" : [] }, { "name" : "AMAZON.StopIntent" , "samples" : [] }, { "name" : "AMAZON.NavigateHomeIntent" , "samples" : [] }, { "name" : "greeting" , "slots" : [], "samples" : [ "hello word" , "hello" ] }, { "name" : "AMAZON.RepeatIntent" , "samples" : [] }, { "name" : "AMAZON.StartOverIntent" , "samples" : [ "start new game" ] } ], "types" : [] } } } |