Selector(APL for Audio)


Selector(APL for Audio)

Selectorコンポーネントは、利用可能なオーディオクリップの配列から、クリップを1つ選択してレンダリングします。Selectorには、各オーディオクリップを定義する子コンポーネントの配列を提供する必要があります。Selectorは、whenプロパティがtrueに評価された最初の子コンポーネントのオーディオをレンダリングします。

プロパティ

Selectorコンポーネントには、基本コンポーネントのプロパティと、コンポーネント固有の次のプロパティがあります。

プロパティ デフォルト 説明
item/items コンポーネントの配列 × 子コンポーネントの配列です。
data 配列 [ ] コンポーネントに対してマッピングするデータの配列です。
strategy 文字列 normal 子を選択するために使用する戦略です。有効な値は、normalrandomItemrandomDatarandomItemRandomDataです。

item/items

レンダリングする子コンポーネントです。複数の子を指定した場合、Selectorコンポーネントは、whenプロパティで選択された最初の子をレンダリングします。

data

反復処理されて評価されるデータの配列です。

  1. data配列が空の場合、Selectorは、items配列からwhentrueに評価される最初のコンポーネントをレンダリングします。コンポーネントは、1つの子のみのインフレートを使用します。

  2. データ配列に項目が含まれている場合、Selectorコンポーネントはdata配列を反復処理し、items配列の各コンポーネントをチェックして、データ配列の項目ごとにwhenプロパティがtrueになるコンポーネントを探します。データバインディングコンテキストは、dataプロパティ、indexプロパティ、lengthプロパティで拡張されます。Selectorコンポーネントは、1つのコンポーネントを選択してレンダリングすると終了します。それ以降、データ配列の反復処理は続行されません。

反復処理の間、データバインディングコンテキストは次のプロパティで拡張されます。

名前 説明
data データ配列プロパティから割り当てられたデータです。
index 現在のデータ項目の0から始まるインデックスです。
length データ配列内のデータ項目の合計数です。

これらのプロパティは、data配列プロパティに1つ以上の項目が含まれている場合に設定されます。

strategy

レンダリングする項目を決定する選択戦略です。指定した戦略によって、Selectorコンポーネントがレンダリングする項目をどのように選択するかが決まります。

strategyの値に応じて、次の動作がトリガーされます。

  • normal - when句がtrueに評価される最初の項目をレンダリングします。
    • data配列が空の場合、Selectorコンポーネントは、items配列からwhen句がtrueになる最初のコンポーネントを選択してレンダリングします。
    • data配列が空でない場合、Selectorコンポーネントは、components配列の各コンポーネントを順番にチェックし、when句がdata配列でtrueになるコンポーネントを探します。データバインディングコンテキストは、dataプロパティ、indexプロパティ、lengthプロパティをバインドすることで拡張されます。Selectorコンポーネントは、1つのコンポーネントをレンダリングすると終了し、データ配列の反復処理を停止します。
  • randomItem - when句がtrueに評価される項目をランダムに1つレンダリングします。
    • data配列が空の場合、Selectorコンポーネントはすべての子コンポーネントのwhen句を評価し、when句がtrueになる項目を1つ選択してレンダリングします。
    • data配列が空でない場合、Selectorコンポーネントは、データ配列の項目ごとに順番に1回ずつランダム選択操作を実行します。データバインディングコンテキストは、dataプロパティ、indexプロパティ、lengthプロパティをバインドすることで拡張されます。Selectorコンポーネントは、1つのコンポーネントをレンダリングすると終了し、データ配列の反復処理を停止します。
  • randomData - when句がtrueに評価される最初の項目か、data配列のランダムなインデックスから選択される項目のいずれかをレンダリングします。
    • data配列が空の場合、Selectorコンポーネントは、items配列からwhen句がtrueになる最初のコンポーネントを選択してレンダリングします。normal戦略と同様です。
    • data配列が空でない場合、Selectorコンポーネントはdata配列のランダムなインデックスに対してnormal戦略を実行します。コンポーネントがレンダリングされない場合、Selectorは、data配列の別のランダムなインデックスに対してnormal戦略を実行します。このプロセスは、1つのコンポーネントがレンダリングされるか、data配列のすべての項目が評価されるまで繰り返されます。
  • randomItemRandomData - data配列が空の場合はrandomItem戦略を使用し、data配列が空でない場合はrandomData戦略を使用します。
    • data配列が空の場合、Selectorコンポーネントはすべての子コンポーネントのwhen句を評価し、when句がtrueになる項目を1つ選択してレンダリングします。randomItem戦略と同様です。
    • data配列が空でない場合、Selectorコンポーネントはdata配列のランダムなインデックスに対してnormal戦略を実行します。コンポーネントがレンダリングされない場合、Selectorは、data配列の別のランダムなインデックスに対してnormal戦略を実行します。このプロセスは、1つのコンポーネントがレンダリングされるか、data配列のすべての項目が評価されるまで繰り返されます。randomData戦略と同様です。

基本的なSelector

次の例では、データソースにバインドされた基本的なSelectorコンポーネントをドキュメントに追加します。${payload.myData.name}が空の文字列の場合、Selectorは最初のSpeechコンポーネントをレンダリングします。それ以外の場合、Selectorは2つ目のSpeechコンポーネントをレンダリングします。これにはnameプロパティが含まれます。


たとえば、以下のデータソースの場合、Selectorは「Hi, John!」というオーディオクリップを作成します。

クリップボードにコピーされました。

{
  "myData": {
    "name": "John"
  }
}

Data Sourcesタブのコンテンツを次のように変更すると、ドキュメントは「Hello! I don't yet know your name.」という音声のオーディオクリップを生成します。

クリップボードにコピーされました。

{
  "myData": {
    "name": ""
  }
}

ロケールを選択するSelector

以下は、ユーザーのロケールを使用して、「hello」を英語と日本語のどちらで言うかを判断するSelectorの例です。

クリップボードにコピーされました。

{
  "type": "Selector",
  "items": [
    {
      "type": "Speech",
      "when": "${environment.alexaLocale == 'en-US'}",
      "contentType": "PlainText",
      "content": "Hello!"
    },
    {
      "type": "Speech",
      "when": "${environment.alexaLocale == 'ja-JP'}",
      "contentType": "SSML",
      "content": "<speak><voice name='Mizuki'>こんにちは</voice></speak>"
    }
  ]
}

ユーザーのデバイスが英語(米国)ロケールを使用している場合、environment.alexaLocaleの値はen-USを返します。Selectorは「Hello!」という音声を生成します。 ユーザーのデバイスが日本語ロケールを使用している場合、environment.alexaLocaleja-JPを返し、Selectorは「こんにちは」という音声を生成します。 この例の2つ目のSpeechコンポーネントでは、「Mizuki」の声で音声をレンダリングするSSMLが使用されています。


このページは役に立ちましたか?

最終更新日: 2025 年 11 月 26 日