Alexa Smart Home Skill

>100 Views

November 14, 16

スライド概要

Introduction of Alexa Smart Home Skill

profile-image

クラウドで働くIoTおじさん

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Alexa Smart Home Skill JAWS-UG IoT専門支部 IoTサロン 2016-11 合同開催スペシャル

2.

市川 純 (Jun Ichikawa) @sparkgene Recruit Marketing Partners infrastructure engineer favorite services: Route 53、Lambda、AWS IoT

4.

Alexa Skill types • Custom Interaction Model(Custom Skill) • Smart Home Skill • Flash Briefing Skill

5.

Custom Skill • Build a skill with a custom interaction model • Customers say invocation name to use it. “Alexa, ask Uber to request a ride” • Most flexible, but most complex to customers.

6.

Smart Home Skill • Easy to use for customer. • Customers say “Alexa, turn on living room lights” • This skill is for cloud connected smart home devices.

7.

Flash Briefing Skill • It can be integrated into "Alexa Flash Briefing” • Customers can simply ask “Alexa, what’s my Flash Briefing” to hear your content • Currently Flash Briefing is only available for the English (U.S.) language

8.

DIFFERENCE BETWEEN CUSTOM SKILL

9.

Custom Skill • design your own interaction model • interaction name is required • customer need to remember interaction name or invocation phrase • you can use any server to host skill

10.

Smart Home Skill • built-in interaction model • natural utterances to control device • Alexa need a grant permissions (OAuth) to retrieve device information and control device • Skill must use AWS Lambda function

11.

Mange devices on cloud Customer need to register their devices to the device makers cloud.

12.

On personal use, you don’t need to register devices. Just hard code in your lambda function.

13.

HOW TO MAKE IT

14.

Demo Video https://youtu.be/nT20o2uv2h0

15.

demo’s architecture this slide explain only here see here to create custom skill version architecture https://www.hackster.io/sparkgene/alexa-makes-home-smarter-7e1981

16.

Prerequisites to Smart Home Skill Development • Amazon developer account – https://developer.amazon.com/ • AWS account • Knowledge of Java, Node.js, or Python as Lambda functions can be written in any of these language • A basic understanding of OAuth 2.0

17.

Three steps to create Skill • Create “Login With Amazon”(LWA) security profile • register Smart Home Skills • Create Lambda function step-by-step article ・https://developer.amazon.com/public/solutions/alexa/alexa-skillskit/docs/steps-to-create-a-smart-home-skill ・http://qiita.com/sparkgene/items/055d7864c92a80b0c040

18.

Create Login With Amazon https://developer.amazon.com/home.html

19.

• enter “Allowed Return URLs” in the Web Settings after register skill Account Linking.

20.

register Smart Home Skills https://developer.amazon.com/edw/home.html#/skill/create/ • Update “End point” after creating lambda function

21.

Account Linking https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/steps-tocreate-a-smart-home-skill#finish-registering-your-skill-in-the-developer-portal • To finish registering your skill, you must configure OAuth 2.0 for your skill, which is used for account linking. You can use Login with Amazon or another provider for this section. • Use “Redirect URL” to allow redirect at OAuth provider

22.

Authoization URL: https://www.amazon.com/ap/oa?redirect_uri=https://pitangui.amazon.com/api/skill/link/<ID>

23.

Create Lambda function • Alexa skill is only available on us-east1 and eu-west-1 region • Node.js blue print is available – alexa-smart-home-skill-adapter

24.

Smart Home Skill API • Smart Home Skill API communicate with your skill(skill adapter) with same basic structure. • Skill adapter directives contain two top-level objects – header – payload

25.
[beta]
header and payload
"header": {
"messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2",
"name": "DiscoverAppliancesRequest",
"namespace": "Alexa.ConnectedHome.Discovery",
"payloadVersion": "2”
},
"payload": {
"accessToken": "OAuth Token here"
}

accessToken always include in request.
use the access token to know who’s request.

26.

DiscoverAppliancesRequest The request come on • When you say “Alexa, discover devices” • hourly after your device register on Alexa (device health check)

27.
[beta]
{
"header": {
"messageId": "6d6d6e14-8aee-473e-8c24-0d31ff9c17a2",
"name": "DiscoverAppliancesRequest",
"namespace": "Alexa.ConnectedHome.Discovery",
"payloadVersion": "2"
},
"payload": {
"accessToken": "OAuth Token here"
}
}

28.
[beta]
DiscoverAppliancesResponse
{
"header": {
"messageId": "ff746d98-ab02-4c9e-9d0d-b44711658414",
"name": "DiscoverAppliancesResponse",
"namespace": "Alexa.ConnectedHome.Discovery",
"payloadVersion": "2"
},
"payload": {
"discoveredAppliances": []
}
}

29.

discoveredAppliances "discoveredAppliances": [ { "actions": [ ”turnOn", The action which device support ”turnOff” ], "additionalApplianceDetails": { "extraDetail1": "optionalDetailForSkillAdapterToReferenceThisDevice” }, "applianceId": "unique Device Id", "friendlyDescription": "description that is shown to customer", "friendlyName": " Bedroom Light", "isReachable": true, "manufacturerName": "your Manufacturer Name", "modelName": "fancyThermostat", "version": "your software version number here." } ]

30.

actions • turnOff • turnOn • setTargetTemperature • incrementTargetTemperature • decrementTargetTemperature • setPercentage • incrementPercentage • decrementPercentage – “Alexa, turn off the <device name>” – “Alexa, turn on the <device name>” – “Alexa, set the <room name> to <number> degrees” – “Alexa, increase the <device name> by <number> degrees” – “Alexa, decrease <device name> by <number> degrees” – “Alexa, set <name> to <number> percent” – “Alexa, increase <device name> by <number> percent” – “Alexa, decrease <device name> by <number> percent”

31.
[beta]
TurnOnRequest
{
"header": {
"messageId": "01ebf625-0b89-4c4d-b3aa-32340e894688",
"name": "TurnOnRequest",
"namespace": "Alexa.ConnectedHome.Control",
"payloadVersion": "2"
},
"payload": {
"accessToken": "[OAuth Token here]",
"appliance": {
"additionalApplianceDetails": {},
"applianceId": "[Device ID for Ceiling Fan]"
}
}

}

32.
[beta]
TurnOnConfirmation
{
"header": {
"messageId": "26fa11a8-accb-4f66-a272-8b1ff7abd722",
"name": "TurnOnConfirmation",
"namespace": "Alexa.ConnectedHome.Control",
"payloadVersion": "2"
},
"payload": {}

}

33.

Error Response • TargetOfflineError • BridgeOfflineError • NoSuchTargetError – target device is not connected to the customer’s device cloud or is not on. – target device is connected to a home automation hub or bridge, which is powered off. – target device cannot be found, meaning it was never configured by the enduser. • ExpiredAccessTokenError • ValueOutOfRangeError • and more.. – the access token used for authentication has expired and is no longer valid. – customer request would set a target value to a value out of its supported range. skill adapter should respond with the appropriate error type, and supporting information

34.
[beta]
ValueOutOfRangeError
{
"header":{
"namespace":"Alexa.ConnectedHome.Control",
"name":" ValueOutOfRangeError",
"payloadVersion":"2",
"messageId":"697fe957-c842-4545-a159-8a8c75fbe5bd"
},
"payload":{
"minimumValue":15.0,
"maximumValue":30.0
}

}

35.

DISCOVERY DEMO - enable skill Login with Amazon discover device Turn on request

36.

Questions?

37.

appendix • slide demo skill – https://github.com/sparkgene/smart_ho me_skill/blob/master/aws_iot_device.py • Raspbery Pi setup guide for the demo – https://www.hackster.io/sparkgene/alexa -makes-home-smarter-7e1981