question

newuser-3235553e-0bc0-40dd-9ade-f45617fd2196 avatar image

How to get request id in Alexa skill

Logs for my skills hows a request id : START RequestId: 4db1091d-****-11e6-8fbc-f7e3d870**** Version: $LATEST

I want to know how to capture that in node.js Also, is there a way I can check the current user in the app, i.e. who is invoking the command ?

I also tried getting the same using event.request.requestId inside alexa sdk module, but it was a fixed value for multiple requests and it never matched RequestId

alexa skills kitskillhow-totext-to-speech
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Alondra Cooper avatar image
Alondra Cooper answered
from __future__
import print_functiondef lambda_handler(event, context): ""
" Route the incoming request based on type (LaunchRequest, IntentRequest, etc.) The JSON body of the request is provided in the event parameter. "
""
print("event.session.application.applicationId=" + event['session']['application']['applicationId']) Uncomment this
if statement and populate with your skill 's application ID to prevent someone else from configuring a skill that sends requests to this function. """ # if (event['
session ']['
application ']['
applicationId '] != # "amzn1.echo-sdk-ams.app.[unique-value-here]"): # raise ValueError("Invalid Application ID") 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 '])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 == "MyColorIsIntent": return set_color_in_session(intent, session) elif intent_name == "WhatsMyColorIntent": return get_color_from_session(intent, session) elif intent_name == "AMAZON.HelpIntent": return get_welcome_response() else: raise ValueError("Invalid intent")def on_session_ended(session_ended_request, session): """ Called when the user ends the session. Is not called when the skill returns should_end_session=true """ print("on_session_ended requestId=" + session_ended_request['
requestId '] + ", sessionId=" + session['
sessionId ']) # add cleanup logic here# --------------- Functions that control the skill'
s behavior-- -- -- -- -- -- -- -- --def get_welcome_response(): ""
" If we wanted to initialize the session to have some attributes we could add those here "
""
session_attributes = {}
card_title = "Welcome"
speech_output = "Welcome to the Alexa Skills Kit sample. "\
"Please tell me your favorite color by saying, "\
"my favorite color is red"#
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 = "Please tell me your favorite color by saying, "\
"my favorite color is red."
should_end_session = False
return build_response(session_attributes, build_speechlet_response(card_title, speech_output, reprompt_text, should_end_session)) def set_color_in_session(intent, session): ""
" Sets the color in the session and prepares the speech to reply to the user. "
""
card_title = intent['name'] session_attributes = {}
should_end_session = False
if 'Color' in intent['slots']: favorite_color = intent['slots']['Color']['value'] session_attributes = create_favorite_color_attributes(favorite_color) speech_output = "I now know your favorite color is " + \favorite_color + \". You can ask me your favorite color by saying, "\
"what's my favorite color?"
reprompt_text = "You can ask me your favorite color by saying, "\
"what's my favorite color?"
else :speech_output = "I'm not sure what your favorite color is. "\
"Please try again."
reprompt_text = "I'm not sure what your favorite color is. "\
"You can tell me your favorite color by saying, "\
"my favorite color is red."
return build_response(session_attributes, build_speechlet_response(card_title, speech_output, reprompt_text, should_end_session)) def create_favorite_color_attributes(favorite_color): return {
    "favoriteColor": favorite_color
}
def get_color_from_session(intent, session): session_attributes = {}
reprompt_text = None
if "favoriteColor" in session.get('attributes', {}): favorite_color = session['attributes']['favoriteColor'] speech_output = "Your favorite color is " + favorite_color + \". Goodbye."
should_end_session = True
else :speech_output = "I'm not sure what your favorite color is. "\
"You can say, my favorite color is red."
should_end_session = False# Setting reprompt_text to None signifies that we do not want to reprompt# the user.If the user does not respond or says something that is not# understood, the session will end.return build_response(session_attributes, build_speechlet_response(intent['name'], speech_output, reprompt_text, should_end_session))# -- -- -- -- -- -- -- - Helpers that build all of the responses-- -- -- -- -- -- -- -- -- -- --def build_speechlet_response(title, output, reprompt_text, should_end_session): return {
            'outputSpeech': {
                'type': 'PlainText',
                'text': output 'card': {
                        'type': 'Simple',
                        'title': 'SessionSpeechlet - ' + title,
                        'content': 'SessionSpeechlet - ' + output 'reprompt': {
                                'outputSpeech': {
                                    'type': 'PlainText',
                                    'text': reprompt_text 'shouldEndSession': should_end_sessiondef build_response(session_attributes, speechlet_response): return {
                                            'version': '1.0',
                                            'sessionAttributes': session_attributes,
                                            'response': speechlet_response

This is just a example for more information of Please Visit http://amzn.to/1LGWsLG

10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Nick Gardner avatar image
Nick Gardner answered

How are you generating the requests for this skill? Are you using the service simulator, a device, or the lambda console itself?

10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.