Posted at

スマートホームスキルの作成 - Cognito User Poolsを使って

More than 1 year has passed since last update.


スマートホームスキルとは

スマートホームスキルは、カスタムスキルと異なり、ユーザーが発話した内容を、プログラム用意なパラメーターにまで分解して呼び出してくれます。例えば、照明をつける場合、「Alexa、端末名をオンにして」といういうと、以下のようなDirectivesという形でスマートホームスキルが呼び出されます。

{

"directive": {
"header": {
"namespace": "Alexa.PowerController",
"name": "TurnOn",
"payloadVersion": "3",
"messageId": "1bd5d003-31b9-476f-ad03-71d471922820",
"correlationToken": "dFMb0z+PgpgdDmluhJ1LddFvSqZ/jCc8ptlAKulUj90jSqg=="
},
"endpoint": {
...
}

一般的なWebAPIの呼び出しと変わらない形で呼んでくれますので、会話の組み立てなどを考える必要がなく開発する側は非常に楽です。

image.png

カスタムスキルの場合は、会話が分解されて文字列としてスキル側に渡されます。そののため各言語ごとの処理が必要になります。しかしスマートホームスキルの場合は、その辺りの処理はAlexaが行ってくれるので、他言語化対応ができます。

以下の照明のON/OFFの場合、英語(米国)、英語(英国)、英語(インド)、ドイツ語、日本語の5ヶ国語に対応が可能です。

https://developer.amazon.com/ja/docs/device-apis/alexa-powercontroller.html


やりたいこと

自前デバイスを制御するためのスマートホームスキルの作成方法を理解する。デバイスは自前クラウド経由で制御が可能。自前クラウドはCognito User Poolsでアカウント管理を行っており、AlexaのAmazonアカウントと連携して制御可能とする。(アカウントリンク)


開発者コンソールでスキルの登録

Amazon開発者コンソールでスキルを登録します。

https://developer.amazon.com/home.html

スクリーンショット 2017-12-17 12.30.01.png

以下のように設定してスキルを作成します。後からLambdaなどの設定をするので、まずははアプリケーションIDだけ取れれば良いです。

スクリーンショット 2017-12-17 12.30.41.png


AWS Lambdaでスマートホームスキルの作成

AWSコンソールでスマートホームスキルをLambdaで作成します。Lambdaには、スマートホームスキルの雛形が用意されていますので、まずはそれを利用します。"設計図"、"alexa-smart-home-skill-adapter"を選択します。Amazonに確認したわけではないですが、tokyoリージョンにLambdaを作成した時は後にエラーになりました。us-east-1を選択して下さい。

スクリーンショット 2017-12-17 16.42.19.png

以下のようにLambdaの設定をします。アプリケーションIDは先ほど作成したスマートホームスキルのIDを設定します。

スクリーンショット 2017-12-17 16.57.45.pngスクリーンショット 2017-12-17 16.57.53.png

Lambdaが作成されました。後ほどARNをスキルの設定で利用します。

スクリーンショット 2017-12-17 17.03.40.png


Cognito User Poolsの設定

次にアカウント管理のためのCognito User Poolsの設定をしていきます。AWSコンソールよりユーザープールを作成します。ステップに従って設定するを選択します。

スクリーンショット 2017-12-17 17.07.23.png

スクリーンショット 2017-12-17 17.08.28.png

基本的な仕組みを確認するためなので、属性などはここでは必要ありません。以下のように設定をしていきます。


  • 属性


    • 標準属性 - なし

    • カスタム属性 - なし



  • ポリシー


    • パスワード強度:デフォルト 8文字

    • ユーザーの自己サインアップ:デフォルト 許可する

    • 有効期限:デフォルト 7日間



  • MFA


    • MFA:OFF

    • 検証:e-mailのみ



  • メッセージのカスタマイズ


    • E メール検証メッセージをカスタマイズ:デフォルト

    • ユーザー招待メッセージをカスタマイズ:デフォルト

    • E メールアドレスをカスタマイズ:デフォルト



  • タグ/デバイスはスキップして次へを選択

  • 「アプリクライアント」で「アプリクライアントの追加」

スクリーンショット 2017-12-17 17.34.02.png

あとは次へを選択してプールを作成。次にスマートホームスキルに設定するための以下の二つの情報を取得。


  • アプリクライアントID

  • 「アプリの統合」「ドメイン名」をクリックして、適当なドメインを設定
    スクリーンショット 2017-12-17 17.45.42.png

スクリーンショット 2017-12-17 21.45.48.png


スキルの設定

Alexaのコンソールの設定に戻って、以下の設定をします。


  • LambdaのARNの設定

  • アカウントリンクの設定

スクリーンショット 2017-12-17 21.47.49.png

スクリーンショット 2017-12-17 21.48.01.png

コールバックURIは次の設定で利用します。

スクリーンショット 2017-12-17 21.49.00.png


Cognito User PoolsにコールバックURIの設定

先ほど取得したOAuthのコールバックURIを以下のように設定します。

スクリーンショット 2017-12-17 22.00.35.png


動作確認

後ほどアップデートします