For setting up account linking in Alexa Skill, follow the steps here.
Once setup is done, and intent handler needs to be implemented in the Python code:
This will open a Login with Amazon screen where customers can sign in using their Amazon Account Credentials. Once logged-in successfully, the account is linked and next time onwards the user token comes as part of the session request.
Sample Request after Account Linking:
Once setup is done, and intent handler needs to be implemented in the Python code:
# --------------- Helpers that build all of the responses ----------------------
def build_user_authentication_response():
return {
"version": "1.0",
"response": {
"outputSpeech": {
"type": "PlainText",
"text": " Please use the companion app to authenticate on Amazon to start using this skill"
},
"card": {
"type": "LinkAccount"
},
"shouldEndSession": false
},
"sessionAttributes": {}
}
# --------------- Method that gets called when there is an intent request ----------------------
def on_intent(intent_request, session, context):
""" 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']
if intent_name == "SayHello":
return build_user_authentication_response()
# --------------- Main handler ------------------
def 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['request']['type'] == "LaunchRequest":
return on_launch(event['request'], event['session'])
elif event['request']['type'] == "IntentRequest":
return on_intent(event['request'], event['session'], event['context'])
elif event['request']['type'] == "SessionEndedRequest":
return on_session_ended(event['request'], event['session'])
This will open a Login with Amazon screen where customers can sign in using their Amazon Account Credentials. Once logged-in successfully, the account is linked and next time onwards the user token comes as part of the session request.
Sample Request after Account Linking:
{
"version": "1.0",
"session": {
"new": true,
"sessionId": "session-id",
"application": {
"applicationId": "application-id"
},
"user": {
"userId": "user-id",
"accessToken": "access-token",
"permissions": {
"consentToken": "consent-token"
}
}
},
"context": {
"AudioPlayer": {
"playerActivity": "IDLE"
},
"Display": {},
"System": {
"application": {
"applicationId": "application-id"
},
"user": {
"userId": "user-id",
"accessToken": "access-token",
"permissions": {
"consentToken": "consent-token"
}
},
"device": {
"deviceId": "device-id",
"supportedInterfaces": {
"AudioPlayer": {},
"Display": {
"templateVersion": "1.0",
"markupVersion": "1.0"
}
}
},
"apiEndpoint": "https://api.eu.amazonalexa.com",
"apiAccessToken": "api-access-token"
}
},
"request": {
"type": "LaunchRequest",
"requestId": "request-id",
"timestamp": "2018-06-03T05:22:36Z",
"locale": "en-US",
"shouldLinkResultBeReturned": false
}
}
No comments:
Post a Comment