Alexa.Presentation.HTMLインターフェースのリファレンス



Alexa.Presentation.HTMLインターフェースのリファレンス

Alexa.Presentation.HTMLインターフェースは、スキルとウェブアプリを統合するディレクティブとリクエストを提供します。このインターフェースをAlexa JavaScript APIと併せて使うことで、Alexaデバイスで実行可能な音声対応のゲームを構築できます。

Alexa Skills Kit SDKは、Alexa.Presentation.HTMLインターフェースのディレクティブとリクエストをサポートしていません。

Alexa Web API for Gamesの詳細については、Alexa Web API for Gamesの概要を参照してください。

ALEXA_PRESENTATION_HTMLインターフェースに対応するようスキルを設定する

スキルでHTMLディレクティブを使用するには、スキルのマニフェストでALEXA_PRESENTATION_HTMLインターフェースを定義する必要があります。

ALEXA_PRESENTATION_HTMLインターフェースのサポートを追加するには

  1. 開発者コンソールを開き、設定するスキルの編集をクリックします。
  2. ビルド>インターフェースページに移動します。
  3. Alexa Web API for Gamesオプションを有効にします。
  4. インターフェースを保存モデルをビルドの順にクリックして、対話モデルを再ビルドします。

ASK CLI、SMAPIのどちらかを使ってスキルをビルドしている場合、スキルのマニフェストを直接編集してinterfacesオブジェクトにALEXA_PRESENTATION_HTMLインターフェースを追加できます。追加すると、ASK CLIまたはSMAPIを使って変更されたマニフェストをデプロイできるようになります。

Alexa.Presentation.HTMLインターフェースのサポートは、Alexa Presentation Language(APL)のサポートとは別です。APLも使用しているスキルの場合、必ずAlexa.Presentation.HTMLALEXA_PRESENTATION_APLの両方を含めてください。たとえば、この例では、スキルのinterfaces配列がAPLインターフェースとHTMLインターフェースの両方をサポートしています。

インターフェースをサポートするようスキルを更新する方法の詳細については、次のトピックを参照してください。

デバイスがAlexa.Presentation.HTMLに対応していることを確認する

スキルコードがAlexa.Presentation.HTMLディレクティブを送信する前に、ユーザーのデバイスがHTMLインターフェースに対応していることを確認してください。[Alexa.Presentation.HTML]LaunchRequestに含まれるcontext.System.device.supportedInterfacesオブジェクトを確認します。HTMLインターフェースのサポートは、APLのサポートとは別です。APLに対応しているデバイスでも、HTMLに対応していない場合があります。HTMLサポートの確認は別途行ってください。この例では、HTMLインターフェースとAPLインターフェースが両方サポートされています。

Startディレクティブ

指定したuriでウェブアプリを開始します。headers.Authorizationフィールドはオプションです。このディレクティブでtransformersを使う場合、fetchAndDemuxMP3関数を使ってオーディオストリームを取得し、分離してオーディオバッファとスピーチマークを抽出できます。詳細については、トランスフォーマーを使ってHTMLでネイティブに音声をレンダリングするを参照してください。

Alexa.Presentation.HTML.Startディレクティブの例

"type":"Alexa.Presentation.HTML.Start",
"data": {
   "mySsml": "<speak>こんにちは</speak>"
},
"request": {
    "uri": "https://mydomain.example.com/mygame.html",
    "method": "GET",
    "headers": {
        "Authorization" : "Basic eyJ "
    }
},
"transformers": [
   {
     "inputPath": "mySsml",
     "transformer": "ssmlToSpeech",
     "outputName": "myTransformedSsml"
   }
],
"configuration": {
   "timeoutInSeconds": 300
}
名前 説明 必須

configuration.timeoutInSeconds

コンテンツがユーザー対話なしで画面に表示される秒数です。デフォルト値は30秒です。最大値は30分です。

整数

configuration

HTMLランタイムを初期化するために必要な情報です。

オブジェクト

data

ウェブアプリの起動時のデータです(オプション)。データには有効なJSONオブジェクトを指定できます。ウェブアプリ内にあるこのデータにアクセスするには、Alexa JavaScript APIを使用します。最大サイズは24KBです。

オブジェクト

request.headers

ウェブアプリがリソースへのアクセスに使用するHTTPヘッダーです。たとえば、アプリに認可が必要な場合、ここにauthTokenを指定します。

マップ

request.methods

GETなど、URIのロードに使うHTTPメソッドです。

文字列

request.uri

ウェブアプリを起動するURIです。

文字列

request

ロードされているウェブアプリのリクエスト情報です。

オブジェクト

transformers.inputPath

変換するコンテンツへのパスです。このパスは、dataオブジェクト内のプロパティを参照する必要があります。

文字列

transformers.outputName

出力を指定したmessageオブジェクトに追加するプロパティの名前です。outputNameが指定されていない場合、inputPathは変換された出力で上書きされます。

文字列

transformers.transformer

ssmlToSpeechなどの、APLトランスフォーマーです。トランスフォーマーを参照してください。

文字列

transformers

データオブジェクトに適用される音声変換の配列です。

オブジェクト

type

常にAlexa.Presentation.HTML.Startです。

文字列

HandleMessageディレクティブ

ウェブアプリへのメッセージを処理するディレクティブです。ウェブアプリは、関数を呼び出してメッセージを待機するコールバックを登録できます。

このディレクティブでtransformersを使う場合、Speech.demux関数を使ってオーディオストリームを取得し、分離することができます。詳細については、トランスフォーマーを使ってHTMLでネイティブに音声をレンダリングするを参照してください。

HandleMessageディレクティブの例


"directives": [
    {
      "type":"Alexa.Presentation.HTML.HandleMessage",
      "message": {},
      "transformers" []

    }
  ]
名前 説明 必須

message

デバイスに配信するデータを含む自由形式のオブジェクトです。最大サイズは24KBです。

オブジェクト

transformers.inputPath

変換するコンテンツへのパスです。このパスは、messageオブジェクト内のプロパティを参照する必要があります。

文字列

transformers.outputName

出力を指定したmessageオブジェクトに追加するプロパティの名前です。outputNameが指定されていない場合、inputPathは変換された出力で上書きされます。

文字列

transformers.transformer

トランスフォーマーのタイプです。指定できる値は、ssmlToSpeechtextToSpeechです。トランスフォーマーを参照してください。

文字列

transformers

データオブジェクトに適用される音声変換の配列です。

オブジェクト

type

常にAlexa.Presentation.HTML.HandleMessageです。

文字列

Messageリクエスト

ウェブアプリがalexa.skill.sendMessage()でメッセージを送信したときにスキルが受け取るリクエストタイプです。

{
    "request": {
    "type": "Alexa.Presentation.HTML.Message",
    "message": {}
  }
}
名前 説明 必須

message

スキルに配信するデータを含む自由形式のオブジェクトです。最大サイズは24KBです。

オブジェクト

type

常にAlexa.Presentation.HTML.Messageです。

文字列

HTML環境での制限

スキルにALEXA_PRESENTATION_HTMLインターフェースのサポートを追加した場合、次のブラウザ機能は無効になります。

  • ブラウザの位置情報
  • getUserMedia(カメラ、マイク)
  • JavaScriptを使ったalert()、prompt()、confirm()
  • Web Speech APIを使ったSpeechRecognition
  • file:// urlsからのURLのロード
  • File API
  • コンテンツURLアクセス
  • Web SQL Database
  • ローカルストレージ
  • 非HTTPアセット/URL(HTTPS必須)

以下は、Alexa.Presentation.HTML.Startでの使用に限定されます。これらは、Startディレクティブごとに消去されます。

  • Cookie
  • 履歴
  • フォームデータ

sendMessageのレートは2 TPSに制限されます。

Transformerオブジェクト

HandleMessageディレクティブとStartディレクティブはどちらも、オプションのtransformers配列を取ります。トランスフォーマーはSSMLまたはプレーンテキストをオーディオストリームに変換し、そのストリームのURLをウェブアプリに提供します。ディレクティブは、Alexa Presentation Languageでサポートされるのと同じssmlToSpeechtextToSpeechのトランスフォーマーをサポートします。

トランスフォーマーの実装については、トランスフォーマーを参照してください。

配列の各トランスフォーマーには次のプロパティがあります。

名前 説明 必須

inputPath

変換するコンテンツへのパスです。このパスは、dataオブジェクト内のプロパティ(Startディレクティブで使用された場合)またはmessageオブジェクト内のプロパティ(HandleMessageディレクティブで使用された場合)を参照する必要があります。

文字列

outputName

出力を指定したmessageオブジェクトに追加するプロパティの名前です。outputNameが指定されていない場合、inputPathは変換された出力で上書きされます。

文字列

transformer

トランスフォーマーのタイプです。指定できる値は、ssmlToSpeechtextToSpeechです。

文字列