リストスキルの作成手順



リストスキルの作成手順

リストスキルはリストイベントやスキルイベントにアクセスできるため、リストスキルを作成するとユーザーの操作性が向上します。リストスキルを作成するには、ASK CLI(Alexa Skills Kitコマンドラインインターフェース)を使用してスキルを作成または更新し、適切なapisオブジェクトと、適切なpermissionseventsオブジェクトが含まれるようスキルマニフェストを編集します。

リストスキルを作成する手順は以下のとおりです。

ASK CLIクイックスタートに従ってASK CLIをインストールし、新しいスキルを作成します。

スキルマニフェストファイルがあるskill.jsonファイルを、以下のように編集します。

  • スキルマニフェストは、apisオブジェクトにあるhouseholdListを持つスキルマニフェストか、apisオブジェクトに追加のhouseholdListフィールドを持つカスタムスキルマニフェストのいずれかです。詳細については、リストスキルのマニフェストの例を参照してください。

  • ユーザーに対して適切な権限を付与するプロンプトを出すようスキルをセットアップすると、スキルサービスがこれらのイベントを参照できるようになります。skill.jsonファイルにはpermissionsInfoオブジェクトが含まれている必要があります。詳細については、イベントを含めるようスキル定義を更新するを参照してください。permissionsInfoオブジェクトを使用して、Alexaリストの読み込みまたは書き込み権限の許可をユーザーに求めることができます。これは、開発者コンソールでアクセス許可を設定する場合と同じ結果になります。

  • スキルマニフェストには、イベントへのサブスクリプションを含むeventsオブジェクトが必要です。スキルマニフェストのスキーマを参照してください。含めるイベントは、スキルが必要とするものだけにしてください。

  • スキルマニフェストにeventsオブジェクトがあり、apisオブジェクトにcustomオブジェクトが含まれない場合、カスタム対話モデルはオプションです。

  • スキルサービスにAWS Lambda関数を使用する場合は、AWS Lambda関数のエンドポイントにAlexa Skills Kitのトリガーを設定してください。これはAWSコンソールで行うことができます。詳細はLambda関数のトリガーを設定するを参照してください。

スキルがイベントを使用しないカスタムスキルであれば、引き続きAmazon開発者ポータルで管理することができ、リストとの対話型のスキルであっても、リストスキルとしては扱われません。

ただし、スキルにリストイベントへのサブスクリプションを行うhouseholdListコンポーネントが含まれる場合、そのスキルはASK CLIを使って管理する必要があり、Amazon開発者ポータルでは編集できなくなります。

リストスキルでリストやスキルのイベントを使用し、スキルの操作性を高める

リストイベントスキルイベントを使用する目的は、ユーザーがスキルとセッション中でないときでも「アレクサ、買い物リストにバナナを追加して」といった上位レベルの発話にすぐに応答できるスキルを作成することです。たとえば、ユーザーがニュースを聞いたり、ゲームをしたりしているときにAlexaリストに項目の追加をリクエストするような場合です。

前のセクションで述べた機能をリストスキルに追加するには、以下の手順に従います。

  • スキルマニフェストを編集し、リストの読み込みとリストの書き込みの権限をユーザーから取得できるようにします。スキルのpermissionsオブジェクトの使い方については、カスタムコンポーネントなしのリストスキルマニフェストを参照してください。以下は、スキルでAlexaリストの読み取りおよび書き込みアクセス権限をユーザーに求めるpermissionsオブジェクトのサンプルです。
    "permissions": [
      {
        "name": "alexa::household:lists:read"
      },
      {
        "name": "alexa::household:lists:write"
      }
    ],

スキルを有効にすると、ユーザーはAlexaアプリで権限を付与または拒否するカードを受け取ります。

スキルの同意トークンを取得するには、スキルIDクライアントIDおよびクライアントシークレットが必要です。これを行うには次の手順に従います。

  • 開発者コンソールのスキル一覧から、該当のリストスキルを見つけます。スキル名の下で、スキルIDをコピーをクリックしてSkillIdをコピーします。スキル名をクリックします。ビルドツールアクセス権限の順にクリックします。画面の下までスクロールし、表示をクリックしてClientIdClientSecretを確認します。ClientIdClientSecretをコピーします。

以下のいずれかの方法で認証情報を取得することもできます。

  • ASK CLIのget-skill-credentials SMAPIサブコマンド、ask smapi get-skill-credentials -s {skill-id}を使用します。
  • ASK CLI v1 get-skill-credentialsサブコマンド、ask api get-skill-credentials -s {skill-id}を使用します。

アカウントリンクを実装し、スキルを有効にしたユーザーをアプリのIDに関連付けます。スキルマニフェストにはアカウントリンクオブジェクトを含める必要があります。このオブジェクトは、update-account-linking subcommandでマニフェストに追加できます。アカウントリンクの詳細については、アカウントリンクとはを参照してください。

スキルサービスで、リストイベントに応答するハンドラーを実装します。

スキルメッセージAPIを使用して、ユーザーがスキルセッション中でないときにリストにアクセスします。スキルメッセージAPIリファレンスを参照してください。

スキルにリストの同期以外の機能を追加する場合、スキルにインテントモデルを追加します。スキルにカスタムコンポーネントを含める場合、カスタム対話モデルが必要になります。また、apisオブジェクトにcustomオブジェクトを入れ子にする必要があります。詳細については、カスタムスキルマニフェストの例を参照してください。

サンプルコード