ゲーム向けWeb API Extensionsの概要



ゲーム向けWeb API Extensionsの概要

AlexaのWeb API extensionsは、既存のWeb API JavaScript SDKのアドオンで、互換性のあるデバイスの機能を有効化、拡張、変更することができます。現在、extensionsはAmazonによって開発および保守されていますが、今後のextensionsは、サードパーティの開発者によって提供される可能性があります。

extensionsによって、ウェブアプリに機能を追加して、ゲームのユーザーエクスペリエンスを向上させることができます。たとえば、マルチプレイヤーゲームで相手のプレイヤーと向き合うよう画面を回したり、カメラの視点からプレイヤーの存在を検出したりできます。extensionsを使用すると、ゲームで視覚的に優れた没入感のあるエクスペリエンスを実現できますが、一部のデバイスでは使用できないものもあります。

利用可能なextensions

extensionを使用する前に、Alexa搭載デバイスでユーザーが再生できるウェブアプリを作成する方法について、Alexa Web API for Gamesの概要を確認してください。

スキルにextensionsを追加する

ウェブアプリでextensionを使用する前に、使用する予定のextensionsをスキルマニフェストで宣言する必要があります。また、一部のextensionsには、マニフェストで有効または無効にできるデフォルトの動作があります。スキルマニフェストの詳細については、スキルマニフェストのスキーマを参照してください。

ALEXA_EXTENSIONインターフェースのapis.custom.interfacesのマニフェストでextensionsを宣言します。ALEXA_EXTENSIONインターフェースには、次のプロパティがあります。

フィールド 説明
type ALEXA_EXTENSIONにする必要があります。 文字列
requestedExtensions ウェブアプリで使用するextensionsの配列が含まれます。
配列内の各オブジェクトには、有効にするextensionのURIが設定されたuriプロパティがあります。指定するuriはextensionごとに一意です。
たとえば、Smart Motion extensionのURIはalexaext:smartmotion:10です。
extensionのuriを確認するには、利用可能なextensionsを参照してください。
オブジェクトの配列
autoInitializedExtensions デフォルトの動作のコンフィギュレーションを行うことができる設定の配列が含まれます。これらの設定により、extensionsがコード不要の動作をサポートしている場合は、コード不要の動作を有効にできます。

各オブジェクトには、次の2つのプロパティがあります。
* uri - コンフィギュレーションを行うextensionのURI。extensionはデフォルト設定をサポートしている必要があります。
* settings -スキルマニフェストでコンフィギュレーションを行うことができる各extension設定のキーと値のペアのセット。

たとえば、Smart Motion extensionの場合、autoInitializedExtensionsでデフォルトのwakeWordResponseを設定できます。
オブジェクトの配列

次の例は、Entity SensingとSmart Motionという2つの新しいextensionsのコンフィギュレーションが行われているマニフェストを示したものです。この例では、Smart MotionのwakeWordResponseの設定も示しています。

{
  "apis": {
    "custom": {
      "interfaces": [
        {
          "type": "ALEXA_EXTENSION",
          "requestedExtensions": [
            {
              "uri": "alexaext:entitysensing:10"
            },
            {
              "uri": "alexaext:smartmotion:10"
            }
          ],
          "autoInitializedExtensions": [
            {
              "uri": "alexaext:smartmotion:10",
              "settings": {
                  "wakeWordResponse": "turnToWakeWord"
              }
            }
          ]
        }
      ]
    }
  }
}

extensionに対して行えるコンフィギュレーションの詳細については、利用可能なextensionsを参照してください。

マニフェストファイルを保存したら、Alexa Skills Kitコマンドラインインターフェースを使用してスキルマニフェストを更新します。

開発者コンソールでスキルマニフェストのコンフィギュレーションを行うこともできます。詳細については、利用可能なextensionsを参照してください。

ウェブアプリにextensionsを追加する

Web API for Games JavaScript SDKと同様に、extensionsはJavaScriptライブラリとして使用できます。ウェブアプリのコードは、extensionのインターフェースを使用してデバイスと通信します。

Alexa JavaScript extensionライブラリをロードするには、HTMLページのscriptタグにURLを含める必要があります。使用するextensionライブラリごとに1つのスクリプトタグを含めます。extensionのURLを確認するには、利用可能なextensionsを参照してください。

次の例は、Entity SensingとSmart Motionという2つの新しいextensionsを追加する方法を示したものです。

<head>
      <script src="https://cdn.html.games.alexa.a2z.com/extensions/entity-sensing/v10/entity-sensing.js"></script>
      <script src="https://cdn.html.games.alexa.a2z.com/extensions/smart-motion/v10/smart-motion.js"></script>
</head>

アプリがデバイスと通信できるようにするには、extensionクライアントを初期化する必要があります。使用するextensionライブラリごとにawaitを含めます。alexa.capabilitiesオブジェクトを確認すると、デバイスがextensionをサポートしているかどうかがわかります。extensionの初期化手順の詳細については、利用可能なextensionsを参照してください。

次の例は、Entity SensingとSmart Motionという2つのextensionsの初期化方法を示したものです。

Alexa.create({version: "1.1"})
    .then(async ({alexa, message, createExtensionsMessageProvider}) => {
        if(alexa.capabilities.extensions['alexaext:entitysensing:10']) {
            entitySensing = await EntitySensing.create(createExtensionsMessageProvider);
        }
        if(alexa.capabilities.extensions['alexaext:smartmotion:10']) {
            smartMotion = await SmartMotion.create(createExtensionsMessageProvider);
        }
    });