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



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

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

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

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

コンソールで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分後、コンソールにスキルが表示され、ビルドページが開きます。

スキルを作成すると、音声モデル、Amazon Web Services(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からセルフホストにスキルを移行できます。

スキルコードをインポートする

Alexa Skills Kit(ASK)コマンドラインインターフェイス(CLI)やVS Codeなどのオフラインツールを使用して開発したスキルコードがある場合は、Alexa-hostedスキルリポジトリの lambdaフォルダーにスキルコードをインポートできます。インポートはスキルコードのみを取り込みます。音声対話モデルやスキルマニフェストなどの他のアーティファクトはインポートされません。

コードをインポートするには、次の要件を満たす必要があります。

  • コードをZIPファイルアーカイブに圧縮する必要があります。
  • アーカイブには、ルートの下にlambdaフォルダーが必要です。
    インポート操作により、lambdaフォルダーからファイルとフォルダーをコピーします。
  • アーカイブおよびアーカイブ内のファイルはUTF-8でエンコードされている必要があります。
  • アーカイブのサイズは50 MBを超えてはいけません。
  • 一度に最大100個のファイルをインポートできます。インポートするファイルまたはファイルのグループのサイズは6 MBを超えてはいけません。
    アーカイブに100個を超えるファイルが含まれている場合は、インポート操作を複数回に分けて実行して、残りのファイルをインポートします。
  • アーカイブのスキルコードは、スキルのバックエンドリソースを作成したときに選択した言語と同じ言語(Node.jsまたはPython)である必要があります。

コンソールにスキルコードをインポートするには

  1. Alexa開発者コンソールを開いて、ログインします。
  2. スキル一覧で、編集するスキルの名前をクリックします。
  3. コードエディタタブをクリックします。
  4. ツールバーで、コードのインポートをクリックします。
  5. コードのインポートダイアログボックスの アーカイブを選択で、参照をクリックして、スキルコードを含むZIPファイルを探します。
  6. アーカイブファイルを選択し、開くをクリックします。
  7. アーカイブを解凍するには、次へをクリックします。
  8. アーカイブからインポートするフォルダとファイルを選択して次へをクリックします。
    別のZIPファイルを選択するには、戻るを選択します。
  9. 選択したファイルで問題なければ、ファイル一覧とAmazon Developer Services Agreementを確認し、インポートをクリックします。
    戻るをクリックして、選択したファイルを変更します。
    または、キャンセルをクリックしてインポートをキャンセルします。

    インポートをクリックすると、コンソールは選択したファイルをインポートし、AWS CodeCommitリポジトリに保存します。

  10. インポートしたコードをスキルのエンドポイントにデプロイするには、デプロイをクリックします。

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

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

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

  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
  }
}

スキルを更新してデプロイする

Alexa-hostedスキルが公開されると、開発者コンソールにスキルの2つのバージョンが表示されます。1つは公開中ステージ、1つは開発中ステージです。開発中ステージでは、コードエディタを使用してスキルコードを編集、保存、デプロイできます。その後、テストタブをクリックし、変更をテストできます。この操作は、スキルの公開中バージョンの動作には影響しません。

公開されたスキルの音声対話モデルを変更した場合は、スキルの再認定を申請する必要があります。AWS Lambda側のコードのみを変更する場合、再認定は必要ありませんが、Amazonは自動のセキュリティテストを実行して更新を検証します。コードエディターの公開中にするボタンをクリックするとコードを開発中から公開中に昇格させることができます。この操作は、公開ステージのスキルのコードを置き換え、公開中スキルの動作に影響を与えます。

Alexa-hostedスキルの公開中ステージのコードを更新するには、まず開発中ステージで変更を行い、変更をテストしてから公開中にするをクリックすることをお勧めします。公開中コードを簡易的に修正する場合は、コードエディターで公開中ステージを選択して直接コードを変更することができます。ただし、公開中エンドポイントにデプロイする前に変更をテストすることはできません。公開中ステージのコードを直接修正するには、コードエディターで公開中ステージを選択し、コードを編集して、デプロイして公開をクリックします。

更新されたコードを公開中エンドポイントに昇格またはデプロイすると、Amazonは自動のセキュリティテストを実行して更新を検証します。これらのテストは完了するまで最長5分かかります。テストが正常に完了すると、更新されたコードが公開中バージョンを置き換えます。テストが失敗した場合、Amazonは変更のデプロイをブロックし、その理由をメールで通知します。問題の箇所を修正してからコードを再度デプロイしてください。