Alexa(amazon Echo)のIRKitスキルを作る(10)
Lambdaの単体テストをしてみます
4.6 Lambdaの単体テストをする
作成したLambdaをテストしてみましょう。AWSコンソールで「テストイベントの選択...」メニューで「テストイベントの設定」を選んで新しいテストイベントを作成します。
1) スマートデバイスを検出するテスト
このようにスマートデバイスを検出するテストのイベントテンプレートがあるにはあるのですが、古いテンプレートなのか?これではエラーになってしまいます。そのため以下をコピーして張り付けます。
テストイベント名:"MyDiscoveryTest"
{
"directive": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
},
"payload": {
"scope": {
"type": "BearerToken",
"token": "some-access-token"
}
}
}
}
|
張り付けたら「作成」ボタンをクリックし、これでテストして以下のような応答(レスポンス)が得られれば、スマートデバイスの検出テストは成功です。
{
"event": {
"header": {
"namespace": "Alexa.Discovery",
"name": "Discover.Response",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820"
},
"payload": {
"endpoints": [
{
"endpointId": "irkitXXXX-light-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"manufacturerName": "IRKit",
"friendlyName": "リビングの照明",
"description": "リビングの照明をIRKitで操作できます。",
"displayCategories": [
"LIGHT"
],
"cookie": {},
"capabilities": [
{
"type": "AlexaInterface",
"interface": "Alexa",
"version": "3"
},
{
"interface": "Alexa.PowerController",
"version": "3",
"type": "AlexaInterface",
"properties": {
"supported": [
{
"name": "powerState"
}
],
"retrievable": true
}
}
]
}
]
}
}
}
|
2) 照明を点けるテスト
同様に電源を点けるテストイベントを作成します。
テストイベント名:"MyLightOnTest"
{
"directive": {
"header": {
"namespace": "Alexa.PowerController",
"name": "TurnOn",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
},
"endpoint": {
"scope": {
"type": "BearerToken",
"token": "some-access-token"
},
"endpointId": "irkXXXX-light-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"cookie": {}
},
"payload": {}
}
}
|
以下のような応答(レスポンス)が得られて、IRKitからリモコン信号が送信されればテスト成功です。
{
"context": {
"properties": [
{
"namespace": "Alexa.PowerController",
"name": "powerState",
"value": "ON",
"timeOfSample": "2017-12-24T16:20:50.52Z",
"uncertaintyInMilliseconds": 0
}
]
},
"event": {
"header": {
"namespace": "Alexa",
"name": "Response",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820-R",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
},
"endpoint": {
"endpointId": "irkitXXXX-light-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
},
"payload": {}
}
|
4.7 AlexaスキルとLmabdaを紐付け、設定を完了させる
Amazon開発者コンソールに戻り、設定のエンドポイントの「デフォルト」にARNをペーストします。その他の設定項目は以下のように設定します。
1) エンドポイント
- エンドポイントの地理的リージョンを設定しますか?
スキルを複数言語に対応させない限り「いいえ」で構わないようですが、近いホストを選択するようにした方が良いような事も書かれています。「はい」を選択した場合は、地理的リージョンとして "North America", "Europe", "India", "Far East"が選べるようになり、選んだリージョンの ARNを指定できるようになります。今回作成した Lambdaの「米国西部(オレゴン)」リージョンの場合は"Far East" の ARNにしか設定することはできません("North America"には設定できません)ので、"Far East"にチェックを入れ「デフォルト」に設定したのと同じ ARNを設定します。
2) アカウントリンク
3) アクセス権限
「Alexaイベントを送る」にはチェックを入れないようにします。
4) プライバシーポリシーURL
「4.3 Amazonでログイン(Login With Amazon)のプロファイルを作成する」の Consent Privacy Notice URL に入力したのと同じ URLを入れておけば良いでしょう。
設定を「保存」して「次へ」をクリックします。
4.8 Amazonでログイン(Login With Amazon)の許可リストを設定する
1) 開発者コンソールのAmazonでログインの画面を表示します。
2) 作成したセキュリティプロファイルの右側にある歯車アイコンをクリックし、「Web Settings」を選択します。
3) 右下の「Edit」ボタンをクリックします。
4) コピーしておいたリダイレクトURLを、Allowed Return URLsの入力欄に張り付けます。
この許可リストにはリダイレクト先に表示された3つ全てを登録しても良いのですが、取りあえず認証URLに指定したリダイレクト先だけを登録しておけばOKのようです。「Save」ボタンをクリックして保存します。
[続く]
|