SendEventコマンド


SendEventコマンド

Alexa.Presentation.APL.UserEventリクエストを生成してスキルに送信します。UserEventリクエストには、コマンドをトリガーしたAlexa Presentation Language(APL)のコンポーネントとイベントに関する情報が含まれます。

プロパティ

SendEventコマンドには、共通のコマンドプロパティに加えて、以下の表に示すプロパティがあります。typeプロパティはSendEventに設定します。

コマンドを実行するために値が必要なプロパティの場合、以下の表の「デフォルト」列に「必須」と表示されています。それ以外の場合はデフォルト値が表示されますが、デフォルト値がないこともあります。

プロパティ デフォルト 説明

arguments

オブジェクトの配列

[ ]

UserEventリクエストでスキルに送信する引数データの配列です。

components

セレクター文字列の配列

[ ]

コンポーネントの配列です。結果のUserEventリクエストには、識別された各コンポーネントに関連付けられた値が含まれます。コンポーネントはセレクター構文を使用して識別されます。

flags

マップ

なし

(オプション)ランタイムで使用される可能性のあるフラグのマップです。使用可能なフラグは次のとおりです。

SendEventコマンドは、高速モードでは無視されます。

arguments

UserEventリクエストでスキルに送信するデータの配列です。データバインディングは、SendEventの実行時に配列の各要素に適用されます。これによって引数に${event.source.value}など、イベント自体についてのデータを含めることができるため、このプロパティを使って任意のデータをスキルに送信できます。

このデータには、リクエストのargumentsプロパティのUserEventハンドラーでアクセスします。

components

componentsプロパティはセレクター文字列の配列です。UserEventリクエストには、各コンポーネントのvalueが含まれます。たとえば、componentsプロパティを使用して、各コンポーネントのコンテンツをスキルに送信するフォームを作成できます。

対象となるコンポーネントの値は、コンポーネントのタイプによって異なります。

  • 単純な押下操作のコンポーネント(TouchWrapperなど)は、コンポーネントのcheckedの状態を報告します。
  • 操作をサポートするリッチコンポーネント(PagerSequenceScrollViewなど)は、コンポーネント固有の値を報告します。たとえば、Pagerは表示されているページのインデックスを報告します。報告される内容については、コンポーネントのドキュメントを参照してください。
  • その他のコンポーネントは、コンポーネントのドキュメントに特に明記されていない限り、nullを報告します。

リクエストのcomponentsプロパティ内のコンポーネント値にアクセスします。

flags

ランタイムまたはメッセージルーティングシステムがUserEventの動作をカスタマイズするために使用する可能性のある、追加のプロパティです。APLランタイムはデフォルトキーを直接設定する場合があります。SendEventコマンドで生成されるUserEventには、flagsプロパティの値は含まれません。

interactionModeフラグ

ウィジェットの場合は、flagsプロパティをリクエストの対話モードに設定します。ユーザーイベントの対話モードは、そのイベントへの応答に使用できる機能を定義します。ウィジェットでは、以下のflagsの値がサポートされます。

プロパティ デフォルト 説明

interactionMode

次のいずれか: INLINESTANDARD

INLINE

イベントの対話モードを制御し、スキルの応答方法を決定します。

interactionModeフラグには、次の2つのうちいずれかの値を指定できます。

  • STANDARD - ウィジェットはスキルエクスペリエンス全体を開始できます。たとえば、スキルを起動してスキルセッションを続行するボタンを含めることができます。標準の対話モードでは、LaunchRequestIntentRequestの場合と同様に、スキルはリクエストに対して標準的な任意の応答を返すことができます。
  • INLINE - ウィジェットはイベントに基づいてアクションを実行できますが、スキルエクスペリエンス全体を開始したり、出力音声を返したりすることはできません。たとえば、後で使用できるようにデータを保存したり、ウィジェットに表示されているデータをサイレントに更新したりするボタンでは、インラインモードを使用します。インラインの対話モードが設定されたイベントでは、送信できる応答のタイプが制限されます。

以下の例は、ウィジェット内のボタンのSendEventコマンドを示しています。この例では、interactionModeフラグはINLINEになっています。

{
  "type": "AlexaFooterActionButton",
  "id": "saveItemButton",
  "buttonText": "項目を保存",
  "primaryAction": [
    {
      "type": "SendEvent",
      "arguments": [
        {
          "itemId": "ItemIDForSmokedWildSalmon"
        }
      ],
      "flags": {
        "interactionMode": "INLINE"
      }
    }
  ]
}

UserEventリクエストの詳細については、UserEventを参照してください。

スキルに送信されるUserEventリクエスト

SendEventコマンドは、スキルにAlexa.Presentation.APL.UserEventリクエストを送信します。

たとえば、SendEventの例に示されているTouchWrapperで定義されたSendEventは、次のようなUserEventリクエストを生成します。

{
  "type": "Alexa.Presentation.APL.UserEvent",
  "requestId": "amzn1.echo-api.request.1",
  "timestamp": "2020-01-20T22:28:44Z",
  "locale": "ja-JP",
  "arguments": [
    "textWasPressed",
    "このデータをスキルに送信する"
  ],
  "components": {
    "idForTheTextComponent": "クリックすると、スキルにUserEventが送信されます。"
  },
  "source": {
    "type": "TouchWrapper",
    "handler": "Press",
    "id": "idForTheTouchWrapper"
  },
  "token": "token-provided-with-RenderDocument"
}

このUserEventには、SendEventコマンドで定義された次の情報が含まれます。

  • argumentsプロパティは、SendEventコマンドのarguments配列に渡されるデータを含む配列です。この例では、この配列には静的文字列が含まれていますが、データバインディングを使用して動的情報を含めることもできます。
  • sourceプロパティには、イベントをトリガーしたコンポーネントに関する詳細を提供するオブジェクトが含まれます。
  • componentsプロパティには、idForTheTextComponentというIDを持つコンポーネントのvalueが含まれます。このコンポーネントはTextコンポーネントです。そのため、UserEventにはtextプロパティの値が含まれます。この値が含まれるのは、SendEventで同じIDがcomponents配列に含まれているためです。

UserEventリクエストの詳細については、UserEventリクエストを参照してください。

UserEventハンドラーの例については、UserEventリクエストを処理するを参照してください。

SendEventの例

以下は、TouchWrapperonPressハンドラーでのSendEventコマンドの例です。

{
  "type": "TouchWrapper",
  "id": "idForTheTouchWrapper",
  "spacing": "@spacingSmall",
  "alignSelf": "center",
  "onPress": [
    {
      "type": "SendEvent",
      "arguments": [
        "textWasPressed",
        "このデータをスキルに送信する"
      ],
      "components": [
        "idForTheTextComponent"
      ]
    }
  ],
  "item": {
    "type": "Text",
    "id": "idForTheTextComponent",
    "color": "@colorAccent",
    "text": "クリックすると、スキルにUserEventが送信されます。"
  }
}

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

最終更新日: 2025 年 12 月 04 日