名前付きのタイマーとリマインダーを有効化する方法
概要
SetAlert
ディレクティブは、名前付きのタイマーとリマインダーをサポートするよう拡張されたものです。この変更により、Alexaがオーディオファイルと読み上げテキスト(TTS)を連続再生する指示とともに、クライアントにパラメーターを送信することができるようになります。
アセットは、順不同のセット(assets
)としてディレクティブのペイロード内でクライアントに配信されます。各アセットには、assetId
とurl
が含まれます。これらのアセットはダウンロードされ、ユーザーに対してscheduledTime
に配信できるようキャッシュされる必要があります。ペイロードには再生順序(assetPlayOrder
)、アセットのシーケンスを再生する回数(loopCount
)、ループ間の一時停止時間(loopPauseInMilliSeconds
)に関する指示が含まれます。
クライアントは、該当する場合(たとえばリマインダーがローカルでセットされているときはSetAlertSucceeded
、ユーザーが鳴っているリマインダーを停止したときはAlertStopped
など)に、すべてのライフサイクルイベントを送信することが想定されています。完全な仕様については、Alertsインターフェースを参照してください。
クライアントコードをアップデートした後に、ユーザーが名前付きのタイマーやリマインダーをセットする方法の例はこちらです。
- 「Alexa, set a cooking timer for 10 minutes.」
- 「Alexa, set a reminder to call mom at 2 P.M. on Saturday.」
- 「Alexa, remind me to take out the trash on Tuesday at 8 A.M.」
名前付きのタイマーとリマインダーを準備する方法
- 以下の新しいペイロードのパラメーターをサポートするようにクライアントコードをアップデートします。
assets
assetId
url
assetPlayOrder
backgroundAlertAsset
loopCount
loopPauseInMilliSeconds
type
のREMINDER
の値をサポートするようにクライアントコードをアップデートします。- クライアントがAVSから送信されたアセットをダウンロードしてキャッシュし、ユーザーに対して
scheduledTime
に配信できるようにしてください。 - 製品がアラートについてに記載されているベストプラクティスに従っていることを確認します。
リマインダーを有効にする方法
リマインダーの受信を開始するには、AVS開発者コンソールでデバイスの機能を有効にする必要があります。
- ここをクリックしてログインします。
- 新しい製品を作成するか、既存製品を編集します。
- 「Device Capabilities」をクリックして「Named Timers and Reminders」を選択します。
Interaction Model
このアップデートは、AVS対話モデルには影響しませんが、ユーザーにアセットをいつ、どのように配信すべきかを理解することが重要です。
-
Dialogチャネルがアクティブで、
assets
オブジェクトを含むSetAlert
ディレクティブを受信した場合、クライアントはDialogチャネルがアクティブな間、ローカルに保存されたオーディオファイルを短いアラートモードで再生する必要があります。 -
Dialogチャネルが非アクティブで、
assets
オブジェクトを含むSetAlert
ディレクティブを受信した場合、クライアントはassetPlayOrder
のるassets
を再生する必要があります。
リマインダーの例
この例は、リマインダーをサポートするようにSetAlert
ディレクティブが拡張された方法を示しています。
クリックして拡大 +
SetAlertディレクティブ
このディレクティブはクライアントに、特定の時間または時刻のタイマー、アラーム、リマインダーをセットするよう指示します。クライアントは、アラートをセットする音声リクエストの結果として、またはAmazon Alexaアプリを使用して以前にセットされていたアラートが再度有効化されたときに、SetAlert
ディレクティブを受信することがあります。
assets
は、ローカルに保存されたオーディオファイルより優先されます。assets
が提供された場合、assetPlayOrder
リストに指定された順序でユーザーに対して再生される必要があります。提供されなかった場合は、Amazonが提供するアラートのオーディオファイルを使用します。{ "directive": { "header": { "namespace": "Alerts", "name": "SetAlert", "messageId": "{{STRING}}", "dialogRequestId": "{{STRING}}" }, "payload": { "token": "{{STRING}}", "type": "{{STRING}}", "scheduledTime": "{{STRING}}", "assets": [ { "assetId": "{{ASSET_ID}}", "url": "{{STRING}}" }, { "assetId": "{{STRING}}", "url": "{{STRING}}" } ], "assetPlayOrder": ["{{STRING}}", "{{STRING}}", ... ], "backgroundAlertAsset": "{{STRING}}", "loopCount": {{LONG}}, "loopPauseInMilliSeconds": {{LONG}} } } }
ヘッダーのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
messageId | 特定のメッセージを表すのに使用される一意のID。 | string |
dialogRequestId | 特定のRecognize イベントの応答として送信されるディレクティブとの関連付けに使用される一意のID。注: dialogRequestId は、音声リクエストの応答としてのみ送信されます。dialogRequestId は、ダウンチャネルストリーム上のクライアントに送信されたディレクティブには含まれません。 |
string |
ペイロードのパラメーター
パラメーター | 説明 | 型 |
---|---|---|
token | アラートを一意に識別する参照トークン。 | string |
type | アラートの種類を示します。認識されない値がクライアントに送信された場合、デフォルトのALARM に設定する必要があります。
有効な値は以下のとおりです。 TIMER 、ALARM 、REMINDER |
string |
scheduledTime | ISO 8601形式のアラートの設定時刻。 | string |
assets | ユーザーに再生するオーディオアセットを含むリスト。 | list |
assets[i].assetId | オーディオアセットの一意の識別子。 | string |
assets[i].url | クラウド内のアセットの場所を識別します。アセットはクライアントによってダウンロードされキャッシュされる必要があります。提供されるURLは、scheduledTime まで有効です。 |
string |
assetPlayOrder | オーディオアセットを再生する必要のある順序。リストは、複数のassetId で構成されます。 注: i) assetId がリスト内に複数回出現する場合があります。この場合、すべてのassetId を再生する必要があります。ii) クライアントがアセットのダウンロードとキャッシュに失敗した場合、デバイスはAmazonにより提供されるオーディオファイルを使用する必要があります。 |
list |
backgroundAlertAsset | アラートのチャネルがバックグラウンドにあるときに再生される必要のあるアセットを示します(対話モデルを参照)。backgroundAlertAsset は、assets リストで提供されます。ペイロードにbackgroundAlertAsset が含まれない場合、Amazonが提供するサウンドアセットをデフォルトとして再生します。 |
string |
loopCount | アセットの各シーケンスを再生する必要のある回数。例: 値が2 の場合、クライアントはassetPlayOrder を通しで2回ループする必要があります。注: ペイロードに loopCount がない場合、assets を1時間、またはアラートがユーザーによって停止されるまでの間、ループする必要があります。 |
long |
loopPauseInMilliseconds | 各アセットループ間の一時停止時間。例: loopPauseInMilliseconds が300 で、loopCount が3 の場合、クライアントは各アセットループ間に300ミリ秒一時停止する必要があります。注: この値が指定されない場合、または 0 に設定されている場合、アセットループ間に一時停止してはなりません。 |
long |