ウィジェットをスキルに追加する
ウィジェットをスキルに追加するには、Alexa Presentation Language(APL)を使用します。
ウィジェットに対応するようスキルを設定する
ウィジェットを使用するには、スキルが以下に対応する必要があります。
Alexa.DataStore.PackageManager
(ALEXA_DATASTORE_PACKAGEMANAGER
)– デバイスでパッケージを管理するためのリクエストを利用できます。Alexa.DataStore
(ALEXA_DATA_STORE
)– デバイスでのデータストアの更新に関連するリクエストを利用できます。- APLデータストアExtension – APLドキュメントで、データストアのデータにアクセスするデータバインディング式を使用できるようにします。
さらに、ウィジェットにはメタデータとその他のアセットを定義するAPLパッケージが必要です。
ウィジェットの追加の詳細については、ウィジェットを作成して管理するを参照してください。
ウィジェットを表示するAPLドキュメントを作成する
APLドキュメントは、表示するテンプレートを定義するJSONオブジェクトです。ウィジェットの場合、ドキュメントはデバイスがウィジェットパネルにウィジェットを表示する際に表示されるテンプレートを定義します。
ウィジェットのAPLドキュメントでは、全画面テンプレートのドキュメントと同じ構造を使用します。ウィジェットのドキュメントではAPL機能の一部を使用できます。また、ウィジェットに対応したレスポンシブ対応コンポーネントおよびテンプレートの一部も使用できます。
開発者コンソールには、ウィジェットドキュメントを編集するためのオーサリングツールが別途用意されています。
ウィジェットのオーサリングツールを開くには
- 開発者コンソールにサインインして、更新するスキルの名前をクリックします。
- 左側のナビゲーションでマルチモーダルをクリックします。
- このスキルのウィジェットの一覧を表示するには、ウィジェットをクリックします。
- 新しいウィジェットを作成するには、ウィジェットを作成をクリックします。既存のウィジェットを編集するには、一覧でウィジェットを探して編集をクリックします。
詳細については、オーサリングツールでウィジェットを作成または編集するを参照してください。
時間の経過に伴って変化するコンテンツがウィジェットに表示される場合、データストアExtensionを使用してドキュメントを設定し、ドキュメントのプロパティをデータソースではなくデータストアにバインドします。Data Store Extensionの詳細については、APLデータストアExtensionを参照してください。
APLドキュメント構造のリファレンスについては、APLドキュメントを参照してください。ウィジェットで使用できるレスポンシブ対応コンポーネントとテンプレートの詳細については、レスポンシブ対応コンポーネントとテンプレートを参照してください。ウィジェットで対応していないAPL機能の一覧については、ウィジェットで対応していないAPL機能を参照してください。
ウィジェットを開発する際のデザインガイダンスについては、Alexaデザインガイドのウィジェットの基本を参照してください。
ウィジェットを常に最新の状態にする
時間の経過に伴って変化するコンテンツがウィジェットに表示される場合、そのデータをデバイスのデータストアに格納します。その後、新しいデータでデータストアを定期的に更新します。このアプローチによって、ウィジェットに常に最新の情報が遅延なく表示されるようになります。
データストアの更新にはデータストアREST APIを使用します。このAPIを使用すると、スキルに送信された任意のリクエストから、そしてスキルセッションの外からデータストアに更新をプッシュできます。
たとえば、天気スキルに、定義済みの間隔(例:1時間ごと)でデータストアに更新された予報をプッシュするサービスを含めることができます。さらに、ユーザーがウィジェットをタップすると、スキルが最新の天候を取得して表示するようにすることもできます。
データストアREST APIの詳細については、データストアREST APIリファレンスを参照してください。
ウィジェットのライフサイクルイベントを処理する
ウィジェットのライフサイクルイベントは、Alexaがユーザーのデバイスのウィジェットをインストール、更新、削除したときに開発者に通知するリクエストをスキルに送信します。これらのイベントを使用して、デバイスのデータストアに対する更新をトリガーします。たとえば、ユーザーがウィジェットをインストールしたときに、スキルがAlexa.DataStore.PackageManager.UsagesInstalled
リクエストを受け取るようにすることもできます。このリクエストのハンドラーで、ウィジェットの新しいデータでデバイスのデータストアを更新してください。
これらのウィジェットのアクションに関してスキルが受け取るリクエストの詳細については、Alexa.DataStore.PackageManagerインターフェースのリファレンスを参照してください。ウィジェットのライフサイクルの概要については、ウィジェットのライフサイクルを参照してください。
ウィジェットのユーザーとの対話を処理する
標準的なAPLドキュメントと同様、ウィジェットはユーザーとの対話に対応しています。TouchWrapper
などのタッチ可能なコンポーネントを使用して、ユーザーがタッチできるボタンや領域を定義します。レスポンシブ対応コンポーネントとテンプレートにも対話に関する要素が含まれます。たとえば、FooterActionButton
レスポンシブ対応コンポーネントを使用してウィジェットの下部にボタンを表示できます。
これらのユーザーとの対話に対してコマンドを実行します。ウィジェットは一部のコマンドに対応しています。ウィジェットに対応したAPLコマンドの一覧については、APL標準コマンドを参照してください。
スキルにリクエストを送信するには、SendEvent
コマンドを使用します。標準的なAPLドキュメントと同様、このコマンドはAlexa.Presentation.APL.UserEvent
をスキルに送信します。UserEvent
のリクエストハンドラーは、スキルエクスペリエンス全体を開始するか、ユーザーとの対話をそれ以上行わずにウィジェットを「インライン」で更新できます。たとえば、天気スキルのウィジェットをタップすると、以下のいずれかのアクションが実行されます。
- インラインの応答 – 新しい天気データを取得してウィジェットに表示します。スキル全体を開始したり、何かを読み上げたりすることはありません。
- 標準的な応答 – スキル全体を開き、より詳細な情報を読み上げ、標準的なAPLドキュメントに予報の詳細を表示します。
SendEvent
コマンドを実行するときに対話モードを設定すると、スキルでイベントハンドラーから適切なタイプの応答が返されます。詳細については、以下のトピックを参照してください。
ウィジェットをテストする
ドキュメントとリクエストハンドラーを作成するときにウィジェットをテストします。開発時にオーサリングツールを使用してウィジェットをプレビューできますが、ウィジェット全体をテストするには画面付きのデバイスが必要です。詳細については、ウィジェットをテストするを参照してください。
関連トピック
最終更新日: 2023 年 09 月 11 日