tutorial101 is the one place for high quality web development, Web Design and software development tutorials and Resources programming. Learn cutting edge techniques in web development, design and software development, download source components and participate in the community.
Hello World - How to Make an Alexa Skill with Python part 2
#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
}