ASK CLIを使用したAlexa-hostedスキルの作成と管理



ASK CLIを使用したAlexa-hostedスキルの作成と管理

Alexa-hostedスキルの作成や管理に、Alexa Skills Kitコマンドラインインターフェース(ASK CLI)を使うことができます。Alexa-hostedスキルの詳細については、Alexa-hostedスキルを使用してスキルをエンドツーエンドで作成するを参照してください。

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

概要

ASK CLIを使用してAlexa-hostedスキルを作成する場合、スキルはGitプロジェクトとして管理されます。ASK CLI v2で作成したプロジェクトの構造は次のようになります。

├── ask-resources.json
├── infrastructure/
├── lambda/
│   ├── index.js
│   ├── package.json
│   └── util.js
└── skill-package/
    ├── interactionModels/
    │   └── custom/
    │       └── ja-JP.json
    └── skill.json

プロジェクトには、次のファイルとフォルダが含まれています。

  • skill-package/ — スキルのマニフェスト、対話モデル、スキル内商品、画像アセットなどのリソースが含まれます。詳細については、スキルパッケージAPIリファレンスを参照してください。
  • infrastructure/ — スキルがAWS CloudFormationを使用している場合、テンプレートはこのフォルダにあります。
  • lambda/ — スキルのソースコードが含まれています。
  • ask-resources.json — スキルのJSON設定ファイルです。

ASK CLI v2

ASK CLI v2でAlexa-hostedスキルを作成する

ASK CLI V2で新しいAlexa-hostedスキルを作成するには、newコマンドを使用し、Alexa-hostedスキルでサポートされているNode.jsまたはPythonをプログラミング言語として選択し、Alexa-hostedスキルをホスティングソリューションとして選択します。これによりAmazon開発者アカウントにステージが開発中の新しいAlexa-hostedスキルが作成され、ローカルコンピューターにスキルのクローンが作成されます。

既存のAlexa-hostedスキルのクローンをローカルコンピューターに作成するには、initコマンドでスキルIDを指定します。

$ ask init --hosted-skill-id <hostedスキルのID>

Alexa-hostedスキルのクローンを作成すると、ASK CLI V2は、スキルのコードを含むGitリポジトリのあるフォルダやスキルパッケージを作成します。このリポジトリは以下のブランチで設定されます。

  • masterブランチ — 開発ステージのAWS Lambdaエンドポイントにデプロイされている内容に対応します。
  • prodブランチ — スキルが既に公開中である場合、公開中のAWS Lambdaエンドポイントにデプロイされている内容に対応します。

Alexa-hostedスキルに変更をデプロイする(ASK CLI v2)

git pushコマンドでAlexa-hostedスキルに変更をデプロイします。

  • masterにプッシュすると、ローカルコンピューター上のコードがスキルの開発ステージのAWS Lambdaエンドポイントにプッシュされます。また、スキルパッケージディレクトリを変更してmasterにプッシュすると、対話モデル、スキルマニフェスト、スキル内商品に変更がデプロイされます。

  • masterprodへマージしてからprodへプッシュする操作は、開発者コンソールのコードエディタタブで公開するをクリックすることと同じです。これは公開中のスキルのコードを簡単に修正するのみで、スロット、インテント、発話の変更のような対話モデルの更新はデプロイされません。対話モデルの変更には、認定審査が必要です。

変更をテストしたら、開発者コンソールを使ってスキルをAlexaスキルストアに公開するプロセスに進みます。詳細については、スキルをテストして認定を申請するを参照してください。

Alexa-hostedスキルを簡単に更新する(ASK CLI v2)

スキルが既に公開済みで、公開中のコードに簡単な修正が必要な場合は、開発者コンソールで公開するをクリックして変更を公開中に昇格させるか、以下の実行によりmasterにプッシュしてmasterブランチをprodにマージすることで変更を加えることができます。

$ git checkout prod
$ git merge master
$ git push

この操作はスキルを使用しているすべてのユーザーに影響します。スロット、インテント、発話の変更などの対話モデルの更新はデプロイされません。masterブランチにプッシュして、変更内容が失われないようにしてください。そうしないと、スキルが認定に合格したときや変更を公開に昇格させたときなど、開発ステージのスキルが公開されたときに変更内容は上書きされてしまいます。このような場合、masterブランチのコードがデプロイされ、prodブランチのコードは強制的なマージにより置き換えられます。

Alexa-hostedスキルをASK CLI v1からv2に移行する

Alexa-hostedスキルがASK CLI v1.xで作成されている場合は、以下の手順に従ってプロジェクトをアップグレードしてください。

  1. ASK CLI v1.xでdeployコマンドを実行します。
  2. npm update -g ask-cliを実行して、ASK CLIをv2.xにアップグレードします。
  3. configureコマンドを実行して、ASK CLIでプロファイルを作成します。
  4. プロジェクトのルートディレクトリから、前のステップで作成したプロファイルを使用してutil upgrade-projectコマンドを実行します。

アップグレード後、ローカルのdevブランチは削除され、devブランチに加えられた以前の変更はmasterブランチにマージされ、masterがデフォルトブランチになります。

ASK CLI v1

ASK CLI v1でAlexa-hostedスキルを作成する

ASK CLIを使って新しいAlexa-hostedスキルを作成するには、create-hosted-skillコマンドを使用します。これでAmazon開発者アカウントに開発中ステージの新しいAlexa-hostedスキルが作成されます。デフォルトではスキルはローカルコンピューターにクローンされません。Alexa-hostedスキルをローカルコンピューターにクローンするには、以下のいずれかを実行します。

  • create-hosted-skillコマンドで--auto-clone trueオプションを使用します。これにより新しいAlexa-hostedスキルが作成され、1個のコマンドでスキルがローカルコンピューターにクローンされます。
  • 既に作成済みのAlexa-hostedスキルをクローンするには、cloneコマンドを使用します。

Alexa-hostedスキルをクローンすると、ASK CLIは、スキルのコードを含むGitリポジトリのあるフォルダや、対話モデル、スキルマニフェストを作成します。このリポジトリは以下のブランチで設定されます。

  • devブランチ — 開発者コンソールに表示される最新の保存状態に対応します。
  • masterブランチ — 開発ステージのAWS Lambdaエンドポイントにデプロイされている内容に対応します。
  • prodブランチ — スキルが既に公開中である場合、公開中のAWS Lambdaエンドポイントにデプロイされている内容に対応します。

Alexa-hostedスキルに変更をデプロイする(ASK CLI v1)

git pushコマンドでAlexa-hostedスキルに変更をデプロイします。

  • devブランチにプッシュする操作は、開発者コンソールのコードタブで保存をクリックすることと同じです。
  • devにプッシュし、devmasterにマージし、masterにプッシュする操作は、開発者コンソールのコードタブでデプロイをクリックすることと同じです。
  • masterprodへマージしてからprodにプッシュする操作は、開発者コンソールのコードエディタタブで公開するをクリックすることと同じです。これは公開中のスキルのコードを簡易修正するのみで、スロット、インテント、サンプル発話の変更などの対話モデルの更新はデプロイされません。

以下に、deployコマンドを使用する手順を示します。この手順では、devブランチとmasterブランチでコマンドを実行し、ローカルコンピューターのコードをスキルの開発ステージのAWS Lambdaエンドポイントにプッシュします。

ASK CLIを使用してAlexa-hostedスキルに変更をデプロイするには:

  1. devブランチで変更を行います。

    1. <変更を行う>
    2. <Gitリポジトリのルートディレクトリに移動する>の後、以下のコマンドを実行します。
    3. git add <ファイル名>
    4. git commit
  2. deployコマンドを実行します。このコマンドは、devブランチをmasterにマージして、ローカルdevブランチをリモートdevブランチ、およびローカルmasterブランチをリモートmasterブランチにプッシュします。

変更をテストしたら、開発者コンソールを使ってスキルをAlexaスキルストアに公開するプロセスに進みます。詳細については、スキルをテストして認定を申請するを参照してください。

Alexa-hostedスキルを簡単に更新する(ASK CLI v1)

公開済みのスキルについて、公開中のコードを簡単に修正するには、開発者コンソールで公開するをクリックして変更を公開に昇格させるか、以下を実行してmasterブランチをprodにマージします。

git checkout prod
git merge master
git push

この操作はスキルを使用しているすべてのユーザーに影響します。スロット、インテント、発話の変更などの対話モデルの更新はデプロイされません。また簡単な修正をdevブランチとmasterブランチにマージして、変更が失われないようにする必要があります。そうしないと、スキルが認定に合格したときや変更を公開に昇格させたときなど、開発ステージのスキルが公開されたときに変更内容は上書きされてしまいます。このような場合、masterブランチのコードがデプロイされ、prodブランチのコードは強制的なマージにより置き換えられます。

AWS CodeCommit認証情報ヘルパー(ASK CLI v1)に関する問題の対処方法

以前のバージョンのGitをインストールした状態でAWS CodeCommit認証情報ヘルパーを設定していると、unable to accessthe requested URL returned error: 403などのエラーが表示されることがあります。この問題を解決するには、バージョン2.9以降にGitを更新します。