APLバージョン1.3で導入された変更点
(これはAPLの最新バージョンではありません。APLの最新バージョンの資料を参照するには、その他のバージョンオプションをクリックしてください)
Alexa Presentation Language 1.3では、APLに新機能が追加されました。
- 新しいレスポンシブ対応コンポーネントとテンプレート
- 遅延読み込みと動的データソース
- データバインディング式でのデータソースへのアクセスの簡素化
- 更新情報
- APLのバージョンを指定する
- 以前のバージョンのAPL
新しいレスポンシブ対応コンポーネントとテンプレート
新しいレスポンシブ対応コンポーネントとテンプレートを使用して、APLレスポンシブ対応ドキュメントを作成します。この新しいコンポーネントとテンプレートを使用するには、alexa-layouts
パッケージをドキュメントに読み込みます。version
には、必ず1.1.0を指定してください。
{
"import": [
{
"name": "alexa-layouts",
"version": "1.1.0"
}
]
}
コンポーネントとテンプレートの概要については、レスポンシブ対応コンポーネントとテンプレートを参照してください。
新しいレスポンシブ対応コンポーネントについて詳しくは、以下を参照してください。
新しいレスポンシブ対応テンプレートについて詳しくは、以下を参照してください。
遅延読み込みと動的データソース
ユーザーが大きなリストのコンテンツをスクロールして、その項目を順次読み込むには、遅延読み込みを使用します。これにより、Alexaにすべてのデータを一度に送信するのではなく、データソースを「断片的」な形にして送信できます。
またデータソースをAlexaに送信した後でも、更新できるようになりました。項目の追加、編集、削除を臨機応変に行い、ユーザーに表示されるデータを変更できます。
この2つの機能では、データで新しいdynamicIndexList
データソースタイプを使用します。次に、新しいAPLディレクティブとリクエストを使用して、必要に応じてスキルコードから、より多くのデータとデータソースの更新を送信します。詳細については、以下のドキュメントを参照してください。
dynamicIndexList
データソースタイプ- 新しいディレクティブ:
- 新しいリクエスト:
データバインディング式でのデータソースへのアクセスの簡素化
データソースをドキュメントにバインドするために、mainTemplate.parameters
配列でデータソース用のキーを指定できるようになりました。キーを指定すると、データバインディング式を簡素化できます。
たとえば、1.3より前のバージョンでは、mainTemplate.parameters
を次のように設定します。
{
"type": "APL",
"version": "1.2",
"mainTemplate": {
"parameters": [
"payload"
],
"items": []
}
}
次に、以下のようなデータバインディング式を記述します。
${payload.myDocumentData.title}
1.3では、mainTemplate.parameters
を次のように設定します。
{
"type": "APL",
"version": "1.3",
"mainTemplate": {
"parameters": [
"myDocumentData"
],
"items": []
}
}
次に、以下のようなデータバインディング式を記述します。
${myDocumentData.title}
mainTemplate.parameters
として "payload"を使用するドキュメントは、引き続き機能します。ただし、新しいAPLドキュメントには、簡略化したフォームを使用することをお勧めします。パラメーターとして他の文字列を使用しても機能しません。データソースキーまたは "payload"を使用する必要があります。
ドキュメントでdynamicIndexList
データソースを使用するには、mainTemplate.parameter
でデータソースキーを使用する必要があります。1.3より前の "payload"パラメーターは使用しないでください。
データソースについて詳しくは、APLデータソースとトランスフォーマーを参照してください。
更新情報
APLドキュメントのプロパティ
ドキュメントで、次の新しいプロパティを指定できるようになりました。
background
プロパティ – ドキュメントの背景色またはグラデーションを指定できるようになりました。設定すると、ドキュメントを読み込むときに、デバイスはこの色またはグラデーションを使用します。このプロパティは、最初のデータバインディングコンテキストのプロパティにアクセスできますが、データソースやドキュメントリソースのデータにはアクセスできません。export
– ドキュメントをパッケージとして読み込むときに、他のユーザーが使用するドキュメントの要素を特定できるようになりました。検証およびオーサリングツールでは、export
情報を使用して、APL作成者が適切に構成されたドキュメントを作成できるようにします。
コマンド
次の新しいコマンドを使用できます。
クロックとタイマーの変数と関数
データバインディングコンテキストには、時間を取得するための新しい上位レベルの変数が含まれるようになりました。
データバインディングコンテキストには、Time
オブジェクトも含まれています。これは、時間を操作およびフォーマットするための組み込みのTime関数のコレクションです。
APLのバージョンを指定する
APLドキュメントで、version
を"1.3"
に設定します。
APLの最新バージョンをサポートしていない古いデバイスで、スキルが呼び出される場合があります。特定のバージョンのAPLで導入された機能を使用する場合は、それ以前のバージョンのAPLを実行しているデバイス向けに代替機能を提供してください。データバインディングコンテキストのenvironment.aplVersion
プロパティを使用すると、デバイスのAPLのバージョンを取得できます。このプロパティでは、APL 1.0についてはnull
が、APL 1.1以降では実際のバージョン番号が返されます。このプロパティをwhen
ステートメントで使用すると、バージョンに基づく条件付きブロックを作成できます。
たとえば、次のようにすると、APL 1.1以降を使用しているデバイスではVectorGraphic
を、APL 1.0を使用しているデバイスでは画像(Image)をレンダリングできます。
[
{
"type": "Image",
"when": "${environment.aplVersion == null}",
"width": 100,
"height": 100,
"source": "https://example.com/alternate/image/for/older/versions.jpg"
},
{
"type": "VectorGraphic",
"when": "${environment.aplVersion != null}",
"source": "lightbulb",
"width": 100,
"height": 100,
"scale": "best-fit"
}
]
APLのバージョンは、スキルに送信されるリクエストにも含まれています。
context.System.device.supportedInterfaces.['Alexa.Presentation.APL'].runtime.maxVersion
次の例は、APL 1.3に対応したデバイスからのリクエストを示しています。短くするために、session
、request
、viewport
の各プロパティは省略しています。
{
"version": "1.0",
"session": {},
"context": {
"System": {
"application": {
"applicationId": "amzn1.ask.skill.1"
},
"user": {
"userId": "amzn1.ask.account.1"
},
"device": {
"deviceId": "amzn1.ask.device.1",
"supportedInterfaces": {
"Alexa.Presentation.APL": {
"runtime": {
"maxVersion": "1.3"
}
}
}
},
"apiEndpoint": "https://api.amazonalexa.com",
"apiAccessToken": "eyJ..."
},
"Viewport": {}
},
"request": {}
}