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インターフェースのサポートを追加するには
- 開発者コンソールを開き、設定するスキルの編集をクリックします。
- ビルド>インターフェースページに移動します。
- Alexa Web API for Gamesオプションを有効にします。
- インターフェースを保存、モデルをビルドの順にクリックして、対話モデルを再ビルドします。
ASK CLI、SMAPIのどちらかを使ってスキルをビルドしている場合、スキルのマニフェストを直接編集してinterfaces
オブジェクトにALEXA_PRESENTATION_HTML
インターフェースを追加できます。追加すると、ASK CLIまたはSMAPIを使って変更されたマニフェストをデプロイできるようになります。
Alexa.Presentation.HTML
インターフェースのサポートは、Alexa Presentation Language(APL)のサポートとは別です。APLも使用しているスキルの場合、必ずAlexa.Presentation.HTML
とALEXA_PRESENTATION_APL
の両方を含めてください。たとえば、この例では、スキルのinterfaces
配列がAPLインターフェースとHTMLインターフェースの両方をサポートしています。
インターフェースをサポートするようスキルを更新する方法の詳細については、次のトピックを参照してください。
- スキルのビルド(開発者コンソール)
- スキルマニフェストのスキーマ
- CLI:get-skillサブコマンド
- CLI:update-skillサブコマンド
- SMAPI: スキル情報の取得
- SMAPI: 既存スキルの更新
デバイスが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
}
名前 | 説明 | 型 | 必須 |
---|---|---|---|
|
コンテンツがユーザー対話なしで画面に表示される秒数です。デフォルト値は30秒です。最大値は30分です。 |
整数 |
◯ |
|
HTMLランタイムを初期化するために必要な情報です。 |
オブジェクト |
◯ |
|
ウェブアプリの起動時のデータです(オプション)。データには有効なJSONオブジェクトを指定できます。ウェブアプリ内にあるこのデータにアクセスするには、Alexa JavaScript APIを使用します。最大サイズは24KBです。 |
オブジェクト |
✕ |
|
ウェブアプリがリソースへのアクセスに使用するHTTPヘッダーです。たとえば、アプリに認可が必要な場合、ここに |
マップ |
✕ |
|
GETなど、URIのロードに使うHTTPメソッドです。 |
文字列 |
◯ |
|
ウェブアプリを起動するURIです。 |
文字列 |
◯ |
|
ロードされているウェブアプリのリクエスト情報です。 |
オブジェクト |
◯ |
|
変換するコンテンツへのパスです。このパスは、 |
文字列 |
◯ |
|
出力を指定した |
文字列 |
✕ |
|
|
文字列 |
◯ |
|
データオブジェクトに適用される音声変換の配列です。 |
オブジェクト |
✕ |
|
常に |
文字列 |
◯ |
HandleMessageディレクティブ
ウェブアプリへのメッセージを処理するディレクティブです。ウェブアプリは、関数を呼び出してメッセージを待機するコールバックを登録できます。
このディレクティブでtransformers
を使う場合、Speech.demux
関数を使ってオーディオストリームを取得し、分離することができます。詳細については、トランスフォーマーを使ってHTMLでネイティブに音声をレンダリングするを参照してください。
HandleMessageディレクティブの例
"directives": [
{
"type":"Alexa.Presentation.HTML.HandleMessage",
"message": {},
"transformers" []
}
]
名前 | 説明 | 型 | 必須 |
---|---|---|---|
|
デバイスに配信するデータを含む自由形式のオブジェクトです。最大サイズは24KBです。 |
オブジェクト |
◯ |
|
変換するコンテンツへのパスです。このパスは、 |
文字列 |
◯ |
|
出力を指定した |
文字列 |
◯ |
|
トランスフォーマーのタイプです。指定できる値は、 |
文字列 |
◯ |
|
データオブジェクトに適用される音声変換の配列です。 |
オブジェクト |
✕ |
|
常に |
文字列 |
◯ |
Messageリクエスト
ウェブアプリがalexa.skill.sendMessage()
でメッセージを送信したときにスキルが受け取るリクエストタイプです。
{
"request": {
"type": "Alexa.Presentation.HTML.Message",
"message": {}
}
}
名前 | 説明 | 型 | 必須 |
---|---|---|---|
|
スキルに配信するデータを含む自由形式のオブジェクトです。最大サイズは24KBです。 |
オブジェクト |
◯ |
|
常に |
文字列 |
◯ |
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でサポートされるのと同じssmlToSpeech
とtextToSpeech
のトランスフォーマーをサポートします。
トランスフォーマーの実装については、トランスフォーマーを参照してください。
配列の各トランスフォーマーには次のプロパティがあります。
名前 | 説明 | 型 | 必須 |
---|---|---|---|
|
変換するコンテンツへのパスです。このパスは、 |
文字列 |
◯ |
|
出力を指定した |
文字列 |
✕ |
|
トランスフォーマーのタイプです。指定できる値は、 |
文字列 |
◯ |