さて、以前カスタムスキルの作成方法を簡単に紹介しましたが、今回は「スマートホームスキル」の作成手順を紹介します。
スマートホームスキルは呼び出しがカスタムよりも簡単です。
カスタムスキル
「○○(スキル名)でテレビをオンして」
スマートホームスキル
「テレビをオンして」
作成方法もそこまで難しくないので、個人でも企業でもさっと作成してみてはいかがでしょうか。
Alexaとは
AlexaとはAmazonが出している音声アシスタントサービスの名称です。
「Amazon Echo」などのスマートスピーカーはマイクとスピーカーとインターネットに接続する能力を持っており、
音声データをクラウドとやり取りすることで、しゃべったりします。
スキルとは
スキルとは、Alexaサービス上で動作する「アプリ」のようなものです。
iPhoneがApp Storeからアプリをインストールして、いろいろ便利になるように、
Alexaもスキルを使うことでさらに便利になります!
そしてアプリ開発者がいるように、「スキルの開発者」もいる訳です。
Alexaは簡単に言うと以下のようなシステムで動作しています。
人がしゃべった音声データがAlexaクラウドに飛んでいき、テキスト変換され、テキストを解釈し、スキルを起動します。
スキルで「インテント(意図)」を判断し、そのインテントに対してLambda(AWSのサービス)で処理を行いレスポンスを返します。
開発者の作成部分は以下の通りです。
スキルは大きく分けると2種類あります。
「カスタムスキル」と「スマートホームスキル」です。
「カスタムスキル」と「スマートホームスキル」の違い
簡単に「カスタムスキル」と「スマートホームスキル」の違いをあげてみます。
項目 | スマートホームスキル | カスタムスキル |
---|---|---|
呼び出し方 | スキル名いらず | スキル名必要 |
音声UI | Amazonが用意したもの | 全部自分で設計 |
アカウントリンク | 必須 | 任意 |
大きな違いだとこんな感じですかね。
エンドユーザーからすると、スキル名が不要というのが大きな利点ですね。
開発者からすると、音声UIの設計が不要です。
何がいいかというと、設計時間が圧倒的に短縮されるのと、音声UIがすべてAmazonの設計したものなので、簡単に全世界言語も対応してくれます。
スマートホーム作成手順
スキルの作成
まずはAlexaの開発者ポータルサイトに行きます。
Amazonのアカウントでログインします。
「Alexa」をクリックします。
「左上の開発者コンソール」をクリックします。
「スキルの作成」をクリックします。
スキル名と言語を入力します。
スキルの種類を選択します。
「スキルの作成」をクリックします。
「Lambda」の作成
AWSのLambdaを作成します。
「関数の作成」をクリックします。
リージョンは日本語対応したい場合は「オレゴン」限定ですので、注意してください。
関数名を入力し、「関数の作成」をクリックします。
出来上がったLambda関数のARNをコピーします。
エンドポイントの設定
Alexaのコンソールに移動し、先ほどコピーしたLambdaのARNを入力し「保存」します。
次に「スキルID」をコピーします。
AWSのLambdaの編集画面に移動し、「トリガーを追加」をクリックします。
「トリガー」を「Smart Home」にします。
「アプリケーションID」に先ほどコピーした「スキルID」を入力し、「追加」をクリックします。
Alexaのコンソールで「保存」をクリックします。
Cognitoの設定
CognitoとはAWSの提供する認証認可のサービスです。
スマートホームスキルではアカウントリンキングが必須で、oauth2.0の「authorization code flow」の仕組みを使用してアカウントリンキングを行います。
自分で認証認可のサーバを実装するのはめんどくさいので、今回はcognitoのユーザープールを使用します。
cognitoの画面にアクセスします。
「ユーザープールの管理」をクリックします。
「ユーザープールを作成する」をクリックします。
「プール名」を入力し、「ステップに従って設定」をクリックします。
「次へ」をクリックします。
「次のステップ」をクリックします。
「次のステップ」をクリックします。
「次のステップ」をクリックします。
「次のステップ」をクリックします。
「次のステップ」をクリックします。
「アプリクライアントの追加」をクリックします。
「アプリクライアント名」を入力して、「アプリクライアントの作成」をクリックします。
「次のステップ」をクリックします。
「次のステップ」をクリックします。
「プールの作成」をクリックします。
cognitoにドメインを追加します。
アプリクライアントの設定を以下のように設定します。
上記のコールバックURLには、Alexaスキルのコンソールに表示されているものをそのままコピペして貼り付けます。
3個のURLが表示されているので、それをそのままカンマで区切ってコピペします。
以下がAlexaのコンソール画面で、下のほうにリダイレクト先のURLが載っているのでそれをコピーします。
Alexaのリンキングを設定
以下のように設定をします。
認証画面のURIにはCognitoの認可エンドポイントを設定します。
認可エンドポイント - Amazon Cognito
https://自分で設定したcognitoのドメイン名.auth.ap-northeast-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=cognitoのアプリクライアントID&
redirect_uri=Alexaコンソールのしたのほうに書いてあるURLの一つをURLエンコードしたもの&
state=STATE
例としてはこんな感じ。
https://○○○○.auth.ap-northeast-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=tjwt59tr48hr86hr6hre6ther6&
redirect_uri=https%3A%2F%2Falexa.amazon.co.jp%2Fapi%2Fskill%2Flink%254re456gr546&
state=STATE
アクセストークンのURIは以下のように設定します。
https://自分で設定したcognitoのドメイン名.auth.ap-northeast-1.amazoncognito.com/oauth2/token
ユーザーのクライアントIDはcognitoのアプリクライアントIDを入力します。
ユーザーのシークレットはcognitoのアプリクライアントシークレットを入力します。
スコープには「aws.cognito.signin.user.admin」を入力します。
アカウントリンキングの確認
さて、先ほど設定したアカウントリンキングが成功しているか、確認してみましょう。
以下のURLにアクセスします。
スキルボタンをクリックします。
右上の「有効なスキル」をクリックします。
「開発スキル」のメニューをクリックして、今回作成したスキルをクリックします。
「有効にする」をクリックします。
Cognitoの認証画面が表示されます。
テストユーザーを作るために「Sign Up」をクリックします。
認証コードを入力します。
認証が成功します。
Lambdaを実装する
Lambdaを実装していきます。
以下のAmazonのサイトにサンプルコードが載っています。
スマートホームスキルの作成手順 | Alexa Skills Kit
このサンプルコードでは、寝室のコンセントというものが検出できるようになっています。
さて、実際に動作するか確認してみましょう。
スマートスキルの動作の確認
以下のURLで「デバイスの検出」を行いましょう。
デバイスの検出は20秒ほどかかります。
この間にLambdaヘのDiscovery命令が飛んでいます。
無事「寝室のコンセント」が検出されました。
最後にAlexaのDeveloper consoleのテストで、動作を確認します。
一通り動作しましたね。
実際はLambdaにさらに実装して、自分の会社の機器を操作するAPIなどを呼び出して、実際の機器を操作するように設定していきます。
まとめ
今回はスマートホームスキルの実装をしてみました。
基本的にはcognitoなどを用いれば、かなり簡単に実装ができます。
Lambdaもサンプルコードがあり、後はapiの呼び出しなどを実装していくだけなので、相当簡単ですね。
Alexaもどんどん日本になじんできているので、早いこと機器をスマートホームスキルに対応して、市場に乗り遅れないようにしましょう。