Alertsの概要
- 概要
- シナリオ1: 音声でタイマーをセットする
- シナリオ2: Amazon Alexaアプリを使用してアラームをキャンセルする
- シナリオ3: 繰り返しアラームをセットする
- シナリオ4: 鳴っているアラームをスヌーズする
- ライフサイクルイベント
- 次のステップ
- リソース
概要
アラートに関しては、ユーザーは通常Alexa搭載製品との対話を、タイマーのセット、アラームのセット、タイマーまたはアラームの削除/キャンセルの3つの方法のいずれかで行います。ユーザーがタイマーまたはアラームをセットできるようにするには、製品にアクティブなインターネット接続が必要です。インターネット接続は、端末にSetAlert
やDeleteAlert
といったアクションを実行するよう指示するディレクティブの受信や、Alexa Voice Service(AVS)にSetAlertSucceeded
やDeleteAlertSucceeded
といったアクションが実行されたことを通知するイベントの送信のために必要となります。
製品は、インターネット接続が失われた場合でも、あらかじめセットされていたタイマーやアラームを処理できる必要があります。たとえば、ユーザーが午前7:30のアラームを夜就寝前にセットし、製品が夜の間にインターネット接続を失った場合でも、製品は午前7:30にアラームを鳴らすことができる必要があります。インターネット接続を失った後でもタイマーやアラームが実行されることは、ユーザーエクスペリエンスにとってプラスです。
設計どおりにタイマーとアラームを確実に動作させるには、製品の時計管理が重要です。AVSから送信されるすべてのディレクティブは、UTC時間で返されます。ユーザーが製品に「タイマーを3分設定して。」と言うと、AVSはユーザーのタイムゾーンを考慮して、リクエストに対応する正しいUTC時間を判断します。製品の時間がローカルで調整されている場合は、タイマーとアラームが正しく機能しない可能性があります。この理由により、Amazonでは、ネットワークタイムプロトコル(NTP)を使用して時計を同期することを推奨しています。
停電の場合や再起動が必要な場合でも、製品はアラートを継続、復旧させることができる必要があります。アラートが未来の時刻に鳴るよう設定されている場合、製品はローカルでアラートをセットする必要があります。製品は、Alexaにアラートが再設定されたことを通知するイベントを送信する必要はありません。アラートが鳴るよう設定されていた時刻に、製品の電源がオフ、または再起動されている場合は、以下のルールに従う必要があります。
- アラートが直近30分以内に鳴るよう設定されていた場合、製品はアラートを起動し、関連するすべてのイベントを送信する必要があります。
- アラートが鳴るよう設定されていた時刻から30分以上経過していた場合、そのアラートは破棄され、破棄されたアラートごとに、製品からAVSに
AlertStopped
を送信する必要があります。
まとめると、Alexa搭載製品は以下の要件を満たす必要があります。
- インターネット接続が失われていても、あらかじめセットされていたアラートを実行できる。
- ネットワークタイムプロトコルを使用して、製品の時計を管理する。
- 製品の電源がオフまたは再起動しても、あらかじめセットされていたアラートを実行できる。
以下の例を、AVSでのタイマーとアラームの動作の仕組みについて、理解を深めるために利用してください。これらのシナリオでは、以下のように仮定しています。
- 製品が、ユーザーの話した音声を処理し、AVSから受信したディレクティブに従って動作するよう設計されていること。
- 製品が、クラウドで開始されるディレクティブを受信するためのダウンチャネルを確立していること。詳細については、AVSとのHTTP/2接続の管理を参照してください。
- 製品が、イベントの発生時にAVSに通知すること。
- すべてのイベントが個別のイベントストリームで送信されること。
シナリオ1: 音声でタイマーをセットする
ユーザーは5分間のタイマーをセットしようとしています。ユーザーが「タイマーを5分設定して。」と言うと、製品はこの音声をキャプチャし、AVSにRecognize event
を送信します。AVSは、製品に必要なアクションを指示する一連のディレクティブで応答し、製品はそのアクションを実行する必要があります。タイマーやアラームのセットは、製品とAVSとの間の標準の対話モデルに従って行われ行われており、理解しやすいでしょう。(標準の対話モデル:質問またはリクエストをする、応答を受信してアクションを実行する、何らかのイベントが発生したことをAVSに更新する 。)
以下は、タイマーをセットするときのメッセージフローです。
- ユーザーがタイマーをセットするようリクエストすると、AVSは、製品に添付されたオーディオを再生するよう指示する
Speak
ディレクティブを送信します。このシナリオでは、「5分のタイマーを開始します。」と言います。Alexaの音声再生が開始されると、製品はAVSにSpeechStarted
イベントを送信する必要があります。 - Alexaの音声再生が完了すると、製品はAVSに
SpeechFinished
イベントを送信する必要があります。 - また、AVSは、ダウンチャネルストリーム上で
SetAlert
ディレクティブを製品に送信します。製品上のタイマーを5分にセットし、AVSにSetAlertSucceeded
イベントを送信する必要があります。製品には、タイマーのセット、およびタイマーの設定時間が過ぎたときの動作に必要なロジックが必要です。 - 5分が経過すると、製品はユーザーにタイマーの設定時間が過ぎたことを通知し、AVSに
AlertStarted
イベントを送信する必要があります。
ユーザーは、音声、Amazon Alexaアプリ、該当する場合は物理コントロール(ボタンまたはGUI)を使用して、タイマーを停止できる必要があります。
- 音声またはAmazon Alexaアプリを使用して停止をリクエストされた場合、AVSは
DeleteAlert
ディレクティブを製品に送信します。そのディレクティブが処理されたら、製品はAVSにAlertStopped
イベントとDeleteAlertSucceeded
イベントを送信する必要があります。 - ボタンを押すなどの物理操作でタイマーが停止された場合、製品はAVSに
AlertStopped
イベントを送信する必要があります。
実装が正しく行われていれば、製品でタイマーがセットされたとき、インターネット接続がなくても機能するはずですが、AVSにイベントの発生を通知するためには、接続が必要になります。そのため、製品には、インターネット接続が再確立されたときにタイマーのステータスをAVSに通知するためのロジックが必要です。
下のシーケンス図は、タイマーがセットされるときに、製品とAVSとの間で想定される対話を示しています。

シナリオ2: Amazon Alexaアプリを使用してアラームをキャンセルする
このシナリオでは、アラームが正常にセットされ、ユーザーがアラームをキャンセルしようとしていると仮定します。
ユーザーはAmazon Alexaアプリを開きます。アプリから、製品上で設定したすべてのアラーム(アクティブおよび非アクティブ)にアクセスできます。ユーザーはアラームに移動し、午前7:30にセットされたアラームをキャンセルします。
-
DeleteAlert
ディレクティブは、ダウンチャネルストリーム上で製品に送信されます。ここまでのすべてのユーザーアクションは、Amazon Alexaアプリで実行されています。 -
DeleteAlert
を受信したら、製品はディレクティブに従って、午前7:30にセットされたアラームをキャンセルできる必要があります。これには、アラームが削除された後にAVSに送信されるDeleteAlertSucceededイベントも含まれます。
このシーケンス図は、Amazon Alexaアプリを使用してアラームをキャンセルするときに、製品とAVSとの間で想定される対話を示しています。

シナリオ3: 繰り返しアラームをセットする
製品上で繰り返しアラームをセットするプロセスは、タイマーのセットに似ています。ディレクティブとイベントのフローはシナリオ1とほぼ同じですが、繰り返しアラームがキャンセルされるまでAVSが製品に毎日SetAlert
ディレクティブを送信する点のみが異なります。
このシーケンス図は、繰り返しアラームがセットされるときに、製品とAVSとの間で想定される対話を示しています。

シナリオ4: 鳴っているアラームをスヌーズする
このシナリオでは、アラームが正常にセットされ、現在鳴っていると仮定します。
アラームが鳴っているときにユーザーが「アレクサ、スヌーズ。」と言うと、いくつかのイベントが発生します。ユーザーが話した音声はAVSにストリーミングされ、scheduledTime
が更新された新しいSetAlert
ディレクティブが製品に送信されます。製品は、鳴っているアラームのtoken
と新しいSetAlert
ディレクティブが一致しているかどうかを確認する必要があります。トークンが一致すると、製品は鳴っているアラームをキャンセルし、SetAlert
ディレクティブのペイロードに含まれるscheduledTime
で、新しいアラームをセットする必要があります。
このシーケンス図は、アラームがスヌーズされるときに、製品とAVSとの間で想定される対話を示しています。

ライフサイクルイベント
この表は、4つのユーザーアクションとAVSに送信する必要があるライフサイクルイベントを示しています。
DeleteAlertSucceeded
またはDeleteAlertFailed
は、DeleteAlert
ディレクティブへの応答でのみ送信されます。ローカルで実行されるアクションに対しては、これらのイベントを送信しないでください。ユーザーアクション | サーバーの動作 | アラートはアクティブか(鳴動するか) | AlertStartedは送信されるか | AlertStoppedは送信されるか | DeleteAlertSucceeded/DeleteAlertFailedは送信されるか |
---|---|---|---|---|---|
ユーザーが「アラームを止めて。」と言う | DeleteAlert がダウンチャネルストリーム上で送信される |
Y | Y | Y | Y |
ユーザーがアクティブなアラートをローカルで、物理コントロール(ボタンまたはGUI)で停止する | なし | Y | Y | Y | N |
ユーザーが音声リクエストまたはAmazon Alexaアプリを使用して非アクティブなアラートをキャンセルする | DeleteAlert ディレクティブがダウンチャネルストリーム上で送信される |
N | N | N | Y |
アラームが鳴動することなく時間切れになる(設定時刻の時点で端末の電源がオフだった場合など) | なし | N | N | Y | N |
次のステップ
タイマーとアラームの実装に必要なディレクティブとイベントの全リストについては、以下を参照してください。