絖綛 N@i.jp  昨日:00044772
 今日:00041093
 総計:00093400
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:03/21 19:08


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

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) アカウントリンク

  • 認証URL
    "https://www.amazon.com/ap/oa?redirect_uri="に続けてリダイレクトURLに書かれているリストの中の一つを記述します(日本のURLが良いでしょう)。以下のようになります。
    https://www.amazon.com/ap/oa?redirect_uri=https://alexa.amazon.co.jp/api/skill/link/MXXXXXXXXXXXXX
    また、このリダイレクトURLは後でAmazonでログイン(Login With Amazon)のプロファイルに設定しますので、コピーして控えておいてください。
  • クライアントID
    「4.3 Amazonでログイン(Login With Amazon)のプロファイルを作成する」でコピーしておいた Client ID を入力します。
  • ドメインリスト
    何も追加しません。
  • スコープ
    「スコープを追加」をクリックしてprofileと入力します(profile はアカウントのプロフィールのことです)。
  • 認可の承諾タイプ
    「Auth Code Grant」の方を選択
  • アクセストークンURL
    "https://api.amazon.com/auth/o2/token"
  • クライアントシークレット
    「4.3 Amazonでログイン(Login With Amazon)のプロファイルを作成する」でコピーしておいた Client Secret を入力します。
  • クライアント認証スキーム:
    「HTTPベーシンク認証(推奨)」を選択します。

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」ボタンをクリックして保存します。

[続く]


< 過去の記事 [ 12月の プログラミング リスト ] 新しい記事 >

2017 calendar
12月
12
3456789
10111213141516
17181920212223
24252627282930
31


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.