Damien Russell
Artist, gamer, and software engineer, I'm a well rounded nerd.
with Damien Russell
Teaching Alexa New Skills
Interaction Model
Code To Support The Interactions
New Kid on the Block
Amazon Developer Account
Alexa Enabled Device (Not Required)
Aws Lamada
Web Service
Some server side application to handle requests from the Alexa service
Practically Free
Can use any language
More control
Node.js, Java, Python, C#
or
Aws Lamada
Practically Free
Node.js, Java, Python, C#
Different Interaction Models
Rules for inputs and outputs
Custom Skill Interaction Model
{
"version": "string",
"session": {
"new": true,
"sessionId": "string",
"application": {
"applicationId": "string"
},
"attributes": {
"string": {}
},
"user": {
"userId": "string",
"permissions": {
"consentToken": "string"
},
"accessToken": "string"
}
},
"context": {
"System": {
"application": {
"applicationId": "string"
},
"user": {
"userId": "string",
"permissions": {
"consentToken": "string"
},
"accessToken": "string"
},
"device": {
"deviceId": "string",
"supportedInterfaces": {
"AudioPlayer": {}
}
},
"apiEndpoint": "string"
}
},
"request": {}
}
All requests contain:
Standard requests contain:
Standard Request Types
{
"type": "LaunchRequest",
"requestId": "string",
"timestamp": "string",
"locale": "string"
}
{
"version": "1.0",
"response": {
"outputSpeech": {
"type": "PlainText",
"text": "Welcome to the Lou Demo app."
},
"speechletResponse": {
"outputSpeech": {
"text": "Welcome to the Lou Demo app."
},
"shouldEndSession": false
}
},
"sessionAttributes": {}
}
Response
{
"session": {
"sessionId": "SessionId.e6b0c7d5-4e36-4e57-b603-########",
"application": {
"applicationId": "amzn1.ask.skill.4716b9c1-8e38-4f4d-b620-#######"
},
"attributes": {},
"user": {
"userId": "amzn1.ask.account.AGG7FMMRMRWRGO24D62VS3SH...",
"accessToken": "EAAgrmik5G0QBABtIfCOvc5XZC..."
},
"new": true
},
"request": {
"type": "LaunchRequest",
"requestId": "EdwRequestId.cba58496-ef65-44f4-ad19-########",
"locale": "en-US",
"timestamp": "2017-07-27T22:38:32Z"
},
"version": "1.0"
}
Request
{
"type": "SessionEndedRequest",
"requestId": "string",
"timestamp": "string",
"reason": "string",
"locale": "string",
"error": {
"type": "string",
"message": "string"
}
}
{
"session": {
"sessionId": "SessionId.2c9ff56f-b8fc-4b29-bcc1-###########",
"application": {
"applicationId": "amzn1.ask.skill.4716b9c1-8e38-4f4d-b620-###########"
},
"attributes": {},
"user": {
"userId": "amzn1.ask.account.AGG7FMMRMRWRGO24D62VS3...",
"accessToken": "EAAgrmik5G0QBABtIfCOvc5XZC65pLofjZA..."
},
"new": false
},
"request": {
"type": "SessionEndedRequest",
"requestId": "EdwRequestId.4b3f70d4-bfb6-4c15-ba23-30780220fe81",
"locale": "en-US",
"timestamp": "2017-07-27T23:35:15Z",
"reason": "USER_INITIATED"
},
"version": "1.0"
}
{
"type": "IntentRequest",
"requestId": "string",
"timestamp": "string",
"dialogState": "string",
"locale": "string",
"intent": {
"name": "string",
"confirmationStatus": "string",
"slots": {
"SlotName": {
"name": "string",
"value": "string",
"confirmationStatus": "string",
}
}
}
}
...
And many more!
Built In Intents
{
"version": "string",
"sessionAttributes": {
"string": "<object>"
},
"response": {
"outputSpeech": {
"type": "string",
"text": "string",
"ssml": "string"
},
"card": {
"type": "string",
"title": "string",
"content": "string",
"text": "string",
"image": {
"smallImageUrl": "string",
"largeImageUrl": "string"
}
},
"reprompt": {
"outputSpeech": {
"type": "string",
"text": "string",
"ssml": "string"
}
},
"directives": [],
"shouldEndSession": boolean
}
}
Specify device-level actions
The Dialog Directive
Dialog.Delegate
Dialog.ElicitSlot
Dialog.ConfirmSlot
Dialog.ConfirmIntent
it's awesome, easy, and fun
it's a whole new set of challenges
By Damien Russell
Alexa Development Overview