Alexa-hostedスキルの作成と管理



Alexa-hostedスキルの作成と管理

Alexa開発者コンソールを使用して、Alexa-hostedスキルを作成および管理できます。Alexa-hostedスキルの詳細については、Alexa-hostedスキルを使用してスキルをエンドツーエンドで作成するを参照してください。

Alexa-hostedスキルは、次の方法で作成することもできます。

  • 開発者コンソールを使用して、パブリックGitリポジトリからスキルプロジェクトをインポートすることで、Alexa-hostedスキルを作成できます。
  • ASK CLIを使用して作成できます。

コンソールでAlexa-hostedスキルを作成する

以下の手順に沿って、開発者コンソールでAlexa-hostedスキルを作成できます。

コンソールでAlexa-hostedスキルを作成する

  1. Alexa開発者コンソールを開いて、ログインします。
  2. スキルの作成をクリックします。新しいスキルを作成ページが表示されます。
  3. ページの右上のホストするリージョンで、デフォルトのままにするか、別のホスティングリージョンを選択します。ホスティングするリージョンによって、Amazon S3バケットとDynamoDBテーブルの場所が決まります。詳細はリソースをさまざまなAWSリージョンでホスティングするを参照してください。
  4. スキル名に名前を入力します。
  5. デフォルトの言語で言語を選択します。
  6. スキルに追加するモデルを選択カスタムを選択します。
  7. スキルのバックエンドリソースをホスティングする方法を選択で、Alexa-Hosted(Node.js)またはAlexa-Hosted(Python)を選択します。
  8. スキルを作成をクリックします。スキルに追加するテンプレートを選択ページが表示されます。
  9. テンプレートを選択してテンプレートで続けるボタンをクリックするか、スキルをインポートボタンをクリックします。詳細については、GitリポジトリをAlexa-hostedスキルにインポートするを参照してください。約1~2分後、コンソールにスキルが表示され、ビルドページが開きます。

スキルを作成すると、音声モデル、AWSリソース、コードエディタが有効になり、開発者コンソールが音声モデルのビルドを開始します。

Alexa-hostedスキルで使用する音声およびビジュアルファイルはAmazon S3に保存することができます。詳細については、Alexa-hostedスキルでメディアファイルを使用するを参照してください。

Alexa-hostedスキルで使用するデータはAmazon DynamoDBに保存することができます。詳しくは、Alexa-hostedスキルのデータ永続性にDynamoDBを使用するを参照してください。

依存関係の追加

Alexaは、ビルドスクリプトを実行するためにスキル用のAWS CodeBuildをプロビジョニングします。npm(Node.js)またはpip(Python)は、ビルドスクリプトの一部として自動的に実行されます。デプロイボタンをクリックすると、追加されたライブラリや依存関係が取得されてビルドされます。

  • Node.js — package.jsonファイルのdependenciesセクションに依存関係を追加します。

    "i18next": "^10.5.0"
    
  • Python — requirements.txtファイルのdependenciesセクションに依存関係を追加します。例:

    boto3==1.9.216
    

Amazon CloudWatchログの表示

Alexa-hostedスキルはAmazon CloudWatchログを自動的に提供します。これにより、スキルの開発に不可欠な情報にアクセスできます。

複数のリージョンでAlexa-hostedエンドポイントを使用するスキルについては、ユーザーがスキルにアクセスするリージョンごとにCloudwatchログが個別に表示されます。コンソールのテストページを使用してスキルをテストするときに生成されるログは、スキルのデフォルトのホスティングリージョンのCloudWatchログに表示されます。スキルのデフォルトのホスティングリージョンは、スキルの作成時に選択し、その後ビルドページのエンドポイントタブに表示されます。

CloudWatchログを表示するには

  1. Alexa開発者コンソールを開いて、ログインします。
  2. スキル一覧で、表示するスキルの名前をクリックします。
  3. コードエディタタブをクリックします。
  4. ツールバーのLogsの横にある矢印をクリックし、リージョンを選択します。
    AWSコンソールでAmazon CloudWatchが開き、ログが表示されます。
  5. AWSコンソールでリージョンを変更し、他のリージョンのスキルのログを表示します。

既存のスキルをAlexa-hostedスキルに切り替える

以下の手順に沿って、開発者コンソールで既存のカスタムスキルをAlexa-hostedスキルに変更できます。

開発者コンソールで既存のカスタムスキルをAlexa-hostedスキルに切り替えるには

  1. Alexa開発者コンソールを開いて、ログインします。
  2. スキル一覧でスキルの名前をクリックするか、アクション列で編集を選択します。
  3. コードエディタをクリックしてエディタの画面を開きます。
  4. Alexa-hostedに切り替えをクリックします。Alexa-hostedに切り替えダイアログが表示されます。
  5. プログラミング言語Node.jsまたはPythonを選択します。
  6. ホストするリージョンでプライマリホスティングリージョンを選択します。ホスティングするリージョンによって、Amazon S3バケットとDynamoDBテーブルの場所が決まります。詳細はリソースをさまざまなAWSリージョンでホスティングするを参照してください。
  7. 切り替えをクリックします。約1~2分後にコンソールのコードエディアページが開きます。

スキルがAlexa-hostedスキルに変更されたら、スキルコードをコードエディタに手動でコピーする必要があります。コードの移行作業が完了したら、デプロイをクリックしてスキルコードのビルドとデプロイをします。

スキルはいつでもセルフホストに戻すことができます。詳細については、Alexa-hostedからセルフホストへの移行を参照してください。

Alexa-hostedからセルフホストへの移行

既存のAlexa-hostedスキルをセルフホストの環境に移行するには、Alexa-hostedスキルのAmazon S3とDynamoDBリソースを所有のストレージに移行し、コードを新しいスキルエンドポイントに手動で移行して、開発者コンソールでスキルのエンドポイントを変更する必要があります。スキルをダウンロードして、Alexa-hostedからセルフホストにスキルを移行できます。

スキルをダウンロードする

スキルは、開発ステージまたは公開中ステージのいずれかで、スキルのコードエディタタブからダウンロードできます。開発ステージでは、最新のコード変更でスキルをダウンロードできます。公開中ステージでは、公開中のスキルのコピーをダウンロードできます。ダウンロードパッケージには、スキルの対話モデル、ソースコードファイル、スキルマニフェストが含まれます。

スキルのコピーをダウンロードするには

  1. Alexa開発者コンソールを開いて、ログインします。
  2. スキル一覧で、ダウンロードするスキルの名前をクリックします。
  3. コードエディタタブをクリックします。
  4. 左上にあるスキルのダウンロードアイコンをクリックします。
  5. ポップアップウィンドウで、続けるを選択します。
  6. スキルを.zipファイルとして保存します。

スキルの可用性チェックを除外する

Alexa-hostedスキルからAWS Lambdaへの呼び出しが正しく機能するように、Alexa-hostedスキルのサービスからAWS Lambda関数に可用性チェックが定期的に送信されます。Alexaは、LaunchRequestの形式でalexa-lambda-availabilityユーザーからの可用性チェックを送信します。LaunchRequestによってスキルがアクションを実行する場合、ユーザー情報にalexa-lambda-availabilityが含まれるリクエストを除外することで、スキルが不必要なアクションを実行しないようにします。

以下は、Alexaからスキルに送信される可用性チェックの例です。

{
  "version": "1.0",
  "session": {
    "new": true,
    "sessionId": "alexa-lambda-availability",
    "application": {
      "applicationId": "YOUR_SKILL_ID"
    },
    "user": {
      "userId": "alexa-lambda-availability"
    }
  },
  "context": {
    "AudioPlayer": {
      "playerActivity": "IDLE"
    },
    "System": {
      "application": {
        "applicationId": "YOUR_SKILL_ID"
      },
      "user": {
        "userId": "alexa-lambda-availability"
      },
      "device": {
        "deviceId": "test-device",
        "supportedInterfaces": {
          "AudioPlayer": {}
        }
      },
      "apiEndpoint": "https://api.amazonalexa.com",
      "apiAccessToken": "{token}"
    }
  },
  "request": {
    "type": "LaunchRequest",
    "requestId": "amzn1.echo-api.request.alexa.lambda.availability",
    "locale": "ja-JP",
    "shouldLinkResultBeReturned": false
  }
}