Alexa for Appsスキルマニフェストのリファレンス



Alexa for Appsスキルマニフェストのリファレンス

スキルでAlexa for Appsを有効にするには、スキルマニフェストを変更する必要があります。次の例とリファレンスでは、 appLinkオブジェクトをスキルマニフェストに追加し、APP_LINKS_V2インターフェースのサポートを宣言する方法について説明します。スキルマニフェスト全体の形式については、スキルマニフェストのスキーマを参照してください。

Skill Connectionsリクエストのスキルマニフェストの例

次の例は、Skill Connectionsリクエストのスキルマニフェストを示しています。

{
   "manifest": {
      "apis": {
         "custom": {
            "endpoint": {
               "uri": "arn:aws:lambda:us-east-1:040623927470:function:cityGuideSkillLambda"
            },
            "interfaces": [
               {
                  "type":"APP_LINKS_V2"
               }
            ],
================== ALEXA FOR APPSの追加開始 ==================
            "appLink": {
               "linkedApplications": [
                  {
                     "friendlyName":{
                        "default":"シティガイド",
                        "localizedNames": [
                           {
                              "locale":"ja-JP",
                              "name":"シティガイド"
                           }
                        ]
                     },
                     "catalogInfo": {
                        "type": "IOS_APP_STORE",
                        "identifier": "id123456789"
                     },
                     "customSchemes": [
                        "cityguide://",
                        "ctgd://"
                     ],
                     "domains": [
                        "cityguide.com",
                        "ctgd.com"
                     ]
                  },
                  {
                     "friendlyName":{
                        "default":"シティガイド",
                        "localizedNames": [
                           {
                              "locale":"ja-JP",
                              "name":"シティガイド"
                           }
                        ]
                     },
                     "catalogInfo": {
                        "type": "GOOGLE_PLAY_STORE",
                        "identifier": "com.cityguide.app"
                     },
                     "customSchemes": [
                        "cityguide://",
                        "ctgd://"
                     ],
                     "domains": [
                        "cityguide.com",
                        "ctgd.com"
                     ],
                     "androidCustomIntents": [
                        {
                           "component": "com.someapp.SomeActivity",
                           "action": "com.someapp.SOME_ACTION"
                        }
                     ]
                  }
               ],
               "linkedWebDomains": [
                  "grubbhouse.com",
                  "amazon.com",
                  "yahoo.com"
               ],
               "linkedCommonSchemes": {
                  "IOS_APP_STORE": [
                     "MAPS",
                     "TEL"
                  ],
                  "GOOGLE_PLAY_STORE": [
                     "MAPS",
                     "TEL"
                  ]
               },
               "linkedAndroidCommonIntents": [
                  {
                     "intentName": "SHOW_IN_MAP",
                     "catalogType": "GOOGLE_PLAY_STORE"
                  }
               ]
            }
================== ALEXA FOR APPSの追加終了 ==================
         }
      }
   }
}

appLinkオブジェクトには、スキルがリンクする各アプリのオブジェクトが含まれます。iOSバージョンとAndroidバージョンのアプリがある場合、これらのバージョンは別のアプリとしてカウントされます。

ディープリンクリクエストにURI、プレフィックス、パッケージ名のいずれかが含まれる場合、スキルマニフェストのdomainsフィールドやcustomSchemesフィールドの対応する項目と一致する必要があります。一致しない場合、ディープリンクリクエストは権限がないとしてエラーになります。

フィールド 説明 必須
linkedApplications 関連付けられたアプリのリストです。 オブジェクトの配列 少なくともlinkedApplicationslinkedWebDomainslinkedCommonSchemesのいずれかを宣言する必要があります。
linkedWebDomains スキルがブラウザで起動するウェブサイトのドメインまたはサブドメインのリストです。このフィールドは、関連付けられたアプリがない場合にのみ使用します。ユニバーサルリンクではありません。 文字列の配列 少なくともlinkedApplicationslinkedWebDomainslinkedCommonSchemesのいずれかを宣言する必要があります。
linkedCommonSchemes iOS App StoreまたはGoogle Playストア内でスキルが起動できる共通スキームです。 オブジェクト 少なくともlinkedApplicationslinkedWebDomainslinkedCommonSchemesのいずれかを宣言する必要があります。
linkedCommonSchemes.IOS_APP_STORE iOS App Store内でスキルが起動できる共通スキームのリストです。有効な値はMAPSおよびTELです。 列挙の配列
linkedCommonSchemes.GOOGLE_PLAY_STORE Google Playストア内でスキルが起動できる共通スキームのリストです。有効な値はMAPSおよびTELです。 列挙の配列
linkedAndroidCommonIntents スキルが起動できるAndroid共通インテントのリストです。 オブジェクトの配列
linkedAndroidCommonIntents.intentName Android共通インテントの名前です。次のいずれかになります: SHOW_IN_MAPADD_CALENDAR_EVENTPLAY_MEDIASTART_PHONE_CALLOPEN_SETTINGS。この値は、Androidインテントの形式を指定します。たとえば、AndroidインテントのSHOW_IN_MAPでは、"action"が"android.intent.action.VIEW"、"data"が"geo:"である必要があります。 列挙
linkedAndroidCommonIntents.catalogType リンクされたインテントカタログの種類です。現在、指定可能な値はGOOGLE_PLAY_STOREのみです。 列挙

linkedApplicationsオブジェクト

フィールド 説明 必須
friendlyName ロケールごとのアプリ名です。 オブジェクト
catalogInfo iOS App StoreまたはGoogle Playストア内のアプリへリンクするためにAlexa for Appsが必要な情報です。 オブジェクト
customSchemes カスタムスキームリンクの検証に使用するカスタムスキームのカンマ区切りリストです。Alexa for Appsは、実行時にこの値で作成した正規表現を使ってディープリンク内のカスタムスキームを検証します。カスタムスキームリンクリクエストに必須です。 文字列の配列
domains ユニバーサルリンクの検証に使用するドメインのリストです。Alexa for Appsは、実行時にこの値で作成した正規表現を使ってディープリンク内のドメインを検証します。ユニバーサルリンクとウェブサイトのディープリンクに必須です。 文字列の配列
androidCustomIntents Androidカスタムインテントのリストです。 オブジェクトの配列

friendlyNameオブジェクト

friendlyNameオブジェクトは、Alexaがディープリンクの際に自動で提供するすべての音声応答で、アプリ名をどう表すかを示します。

たとえば、ユーザーがアプリをインストールしていない場合のフォールバックシナリオでは、AlexaはユーザーをiOS App StoreかGoogle Playストアにリダイレクトします。このようなケースでは、Alexaは、たとえば「このエクスペリエンスを有効にするには、アプリをインストールする必要があります。App Storeの<App Name>です。」

フィールド 説明 必須
default ホームロケールでのアプリのフレンドリー名です。localizedNamesを指定しない場合、Alexa for Appsはすべてのロケールにこの値を使用します。 文字列
localizedNames ユーザーのデバイスのロケールがホームロケールでない場合のアプリのフレンドリー名の配列を含みます。この配列は、アプリのフレンドリー名がロケールによって異なる場合は必須です。localizedNames値を指定できるのは、スキルマニフェストのmanifest.publishingInformation.localesセクションに含まれるロケールのみです。 オブジェクト配列
localizedNames[].locale ロケール(de-DEなど)です。 文字列
localizedNames[].names そのロケールでのアプリ名です。 文字列

catalogInfoオブジェクト

catalogInfoオブジェクトには、Alexa for AppsがiOS App StoreやGoogle Playストアのアプリにリンクするのに必要な情報が含まれます。

Alexa for Appsは、identifierフィールドをディープリンクリクエストの検証に使用します。たとえば、Androidインテントディープリンクリクエストは、ルートパッケージ名がcatalogInfoオブジェクトにあるインテント用である必要があります。そうでない場合、リクエストは権限がないとしてエラーになります。

フィールド 説明 必須
type IOS_APP_STOREGOOGLE_PLAY_STOREのいずれかです。 文字列の列挙値
identifier iOS App StoreまたはGoogle Playストア内のアプリのIDです。iOSアプリの場合は、id123456789など、数値のIDとなります。Androidインテントの場合、通常はcom.cityguide.appなどのパッケージ名となります。 文字列

androidCustomIntentsオブジェクト

androidCustomIntentsオブジェクトを使用してAndroidカスタムインテントを宣言します。スキルがAndroidカスタムインテントを送信する場合、スキルマニフェストでカスタムインテントを宣言する必要があります。

フィールド 説明 必須
component Androidカスタムインテントのコンポーネントです。actionが指定されていない場合は必須です。 文字列
action Androidカスタムインテントのアクションです。componentが指定されていない場合は必須です。 文字列