名前付きのタイマーとリマインダーを有効化する方法

概要

SetAlertディレクティブは、名前付きのタイマーリマインダーをサポートするよう拡張されたものです。この変更により、Alexaがオーディオファイルと読み上げテキスト(TTS)を連続再生する指示とともに、クライアントにパラメーターを送信することができるようになります。

アセットは、順不同のセット(assets)としてディレクティブのペイロード内でクライアントに配信されます。各アセットには、assetIdurlが含まれます。これらのアセットはダウンロードされ、ユーザーに対して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.」

名前付きのタイマーとリマインダーを準備する方法

  1. 以下の新しいペイロードのパラメーターをサポートするようにクライアントコードをアップデートします。
    • assets
      • assetId
      • url
    • assetPlayOrder
    • backgroundAlertAsset
    • loopCount
    • loopPauseInMilliSeconds
  2. typeREMINDERの値をサポートするようにクライアントコードをアップデートします。
  3. クライアントがAVSから送信されたアセットをダウンロードしてキャッシュし、ユーザーに対してscheduledTimeに配信できるようにしてください。
  4. 製品がアラートについてに記載されているベストプラクティスに従っていることを確認します。

リマインダーを有効にする方法

リマインダーの受信を開始するには、AVS開発者コンソールでデバイスの機能を有効にする必要があります。

  1. ここをクリックしてログインします。
  2. 新しい製品を作成するか、既存製品を編集します。
  3. Device Capabilities」をクリックして「Named Timers and Reminders」を選択します。

Interaction Model

このアップデートは、AVS対話モデルには影響しませんが、ユーザーにアセットをいつ、どのように配信すべきかを理解することが重要です。

  • Dialogチャネルがアクティブで、assetsオブジェクトを含むSetAlertディレクティブを受信した場合、クライアントはDialogチャネルがアクティブな間、ローカルに保存されたオーディオファイルを短いアラートモードで再生する必要があります。

  • Dialogチャネルが非アクティブで、assetsオブジェクトを含むSetAlertディレクティブを受信した場合、クライアントはassetPlayOrderのるassetsを再生する必要があります。

リマインダーの例

この例は、リマインダーをサポートするようにSetAlertディレクティブが拡張された方法を示しています。

クリックして拡大 +

SetAlertディレクティブ

このディレクティブはクライアントに、特定の時間または時刻のタイマー、アラーム、リマインダーをセットするよう指示します。クライアントは、アラートをセットする音声リクエストの結果として、またはAmazon Alexaアプリを使用して以前にセットされていたアラートが再度有効化されたときに、SetAlertディレクティブを受信することがあります。

{
    "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に設定する必要があります。
有効な値は以下のとおりです。TIMERALARMREMINDER
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 各アセットループ間の一時停止時間。例: loopPauseInMilliseconds300で、loopCount3の場合、クライアントは各アセットループ間に300ミリ秒一時停止する必要があります。

: この値が指定されない場合、または0に設定されている場合、アセットループ間に一時停止してはなりません。
long

リソース