データソース(APL for Audio)



データソース(APL for Audio)

データソースとは、APLドキュメントにバインドできるデータを定義するJSON構造のことです。Alexa.Presentation.APLA.RenderDocumentディレクティブを使ってAPLドキュメントをAlexaに送信するときに、1つ以上のデータソースを含めることができます。APLドキュメントのパラメーターにデータソースを含めるとデータソースがバインドされます。その後で、データバインディング式を使用して、データをドキュメント内のコンポーネントプロパティにバインドできます。

RenderDocumentディレクティブでデータソースを送信する

APL for Audioの場合、Alexa.Presentation.APLA.RenderDocumentディレクティブdatasourcesオブジェクトとしてAlexaにデータソースを渡します。このdatasourcesオブジェクトには、各データソースを表すオブジェクトが含まれています。

この例では、RenderDocumentディレクティブを使用したスキル応答を示しています。ドキュメントと「myDocumentData」という名前のデータソースがAlexaに渡されます。ドキュメントの内容は、簡潔に示すために省略しています。

{
  "version": "1.0",
  "response": {
    "outputSpeech": {
      "type": "SSML",
      "ssml": "<speak>これは例です</speak>"
    },
    "sessionAttributes": {},
    "directives": [
      {
        "type": "Alexa.Presentation.APLA.RenderDocument",
        "token": "developer-provided-string",
        "document": {
          "type": "APLA",
          "version": "0.91",
          "mainTemplate": {
            "parameters": [
              "payload"
            ],
            "item": {}
          }
        },
        "datasources": {
          "myDocumentData": {
            "text": "これは単純な例です。",
            "user": {
              "name": "太郎"
            }
          }
        }
      }
    ]
  }
}

データソースをドキュメントにバインドする

データバインディング式を使用して、データソースのデータをAPLドキュメントのコンポーネントプロパティにバインドします。

データソースのデータをドキュメントのコンポーネントプロパティにバインドする方法

  1. payloadと呼ばれるmainTemplate.parameters配列のパラメーターを宣言します。これにより、datasourcesオブジェクト全体が「payload」パラメーターにバインドされます。
  2. コンポーネントプロパティで、構文${payload.dataSourceName.propertyName}を使用してデータソースプロパティを参照します。

たとえば、次のdatasourcesオブジェクトに2つのデータソースがあるとします。

{
  "myDocumentData": {
    "text": "これは単純な例です",
    "user": {
        "name": "太郎"
    }
  },
  "myDocumentData2": {
    "property": "これはデータソース内の2つ目のデータソースです"
  }
}

この例では、「name」プロパティの値にアクセスするデータバインディング式は、${payload.myDocumentData.user.name}です。