Alexaリマインダーの概要



Alexaリマインダーの概要

RESTful APIのセットであるAlexaリマインダーAPIを使用すると、ユーザー向けのリマインダーを作成および管理できます。スキルでリマインダーを作成するには、ユーザーの明示的な許可が必要です。また、そのユーザーがそのスキルで作成したリマインダーのみを管理(変更、編集、削除)できます。詳しくはAlexaリマインダーAPIリファレンスおよびAlexaリマインダーのガイドラインを参照してください。

リマインダーのユーザーエクスペリエンス

ユーザーの許可を得ると、スキルはあらかじめ決められた時間にリマインダーを設定できます。その時間にリマインダーが配信されると、Alexaがウェイクアップしてユーザーに対してリマインダーを読み上げます。

ユーザーがAlexaと対話していた場合は、それに「割り込み」ます。ユーザーがこのリマインダーを聞きたくない場合は、対話の妨げになります。不要な割り込みをしないように、リマインダーの作成には、2つの段階でユーザーの許可を得る必要があります。

  • グローバルなリマインダー読み取り/書き込みアクセス権限(スキルの有効化時に取得)
  • リマインダーを設定するたびに、ユーザーに明示的に許可を求める必要があります。スキルがユーザーに対して示すダイアログの一部として、明示的な許可を得てください。たとえば、ユーザーに対して「リマインダーを作成してよいですか?」や「これをリマインドしますか?」などとたずねます。 スキルの応答では、リマインダーの時刻や、そのリマインダーを繰り返すかどうかをユーザーに明示する必要があります。

リマインダーを開始する時間になると、Alexa搭載デバイスから短い音が鳴り、次にAlexaが「リマインダーです…」と言い、続けて内容を読み上げます。リマインダーは、ユーザーが「止めて」と言わない限り2回繰り返されます。

停止されない場合のリマインダーの流れは次の例のようになります。

  • Alexaはリマインダーの時刻に短い音を再生します。
  • Alexaは次のように読み上げます。「リマインダーです。本日午後8時にレストランを予約しています。本日午後8時にレストランを予約しています。」

リマインダーの音声配信をカスタマイズすることはできません。ただし、携帯電話への通知を有効にするかどうかはスキルで設定できます。

ユーザーは完了から3日間リマインダーをAlexaアプリで確認できます。その後は自動的に削除されます。

ユーザーがスキルにリマインダーのアクセス権限を付与していない場合、スキルがユーザーにアクセス権限の付与方法を詳しく説明し、スキルのアクセス権限ページへのリンクを提供するホームカードを送信するようにしてください。

リマインダーの種類

スキルは1回限りまたは定期的なリマインダーを作成できます。定期的なリマインダーの場合、スキルは毎週または特定の日に設定することができます。

リマインダーの時刻は絶対的または相対的に指定することができ、特定のイベントの一定時間後に設定するようなこともできます。

スキルにリマインダーを追加する方法

既存または新規のAlexaカスタムスキルに、次の手順に従ってAlexaリマインダーを簡単に組み込むことができます。

  • 開発者コンソールでスキルを作成した場合は、[ ビルド ]ページに移動し、左下の[ アクセス権限 ]を選択します。 リマインダー の権限をオンに切り替えます。これにより、スキルがユーザーにリマインダーの権限を求められるようになりました。
  • スキルのコードにリマインダー機能を実装します。
  • スキルは、以前に設定したリマインダーをユーザーが削除または編集した場合などに通知を受け取れるよう、リマインダーイベントにサブスクライブしてください。
    • 新しいリマインダースキルを作成する場合や既存のカスタムスキルを更新してリマインダーイベントをサブスクリプションする場合は、Alexaスキル管理API(SMAPI)を使用します。
    • ユーザーにリマインダーのアクセス権限をリクエストし、APIを使用してリマインダーの読み取りと更新を行います。スキルは、そのスキルで作成したリマインダーにのみアクセスできます。
    • スキルサービスでイベントを使用するための前提条件の手順に従って、skill.jsonマニフェストファイルを設定します。詳細については、リマインダーイベントのサブスクリプションを参照してください。
    • リマインダーイベントを処理して応答するハンドラーを実装します。
  • ユーザーはAlexaアプリでリマインダーが配信されたことを示すカードを受信します。カードは次の形式に従う必要があります。
Alexaアプリのリマインダーカードの形式

スキルのマニフェストを直接編集する場合は、マニフェストにalexa::alerts:reminders:skill:readwrite permissionが含まれていることを確認してください。

apiAccessTokenを使用したアクセス権限の管理

スキルがAlexaリマインダーAPIを使用してリマインダーを作成する場合、スキルは明示的なユーザーアクセス権限が付与されたセッション内IDを提供する必要があります。スキルがアクセス権限ポリシーに違反している場合は、スキルでのリマインダーのアクセスは取り消されます。セッション外トークンはリマインダーの作成には使用できませんが、リマインダーの編集または削除には使用できます。

スキルの初回起動時など、スキルに明示的な権限がない場合は、ユーザーに権限カードを送信するか、音声によるアクセス許可により、リマインダーの作成権限を取得する必要があります。音声による権限付与を設定するには、 音声によるリマインダーの権限付与を設定するを参照してください。ユーザーの許可をリクエストする権限カードについては、ユーザー同意をリクエストする権限カードを参照してください。リマインダーのスコープはalexa::alerts:reminders:skill:readwriteです。

スキルに送信される各リクエストには、スキルに与える権限をカプセル化するAPIアクセストークン(apiAccessToken)が含まれています。スキルサービスは、APIを呼び出してリマインダーを作成する際に使用するためにこのトークンを取得する必要があります。

apiAccessTokenSystemオブジェクトに含まれ、Systemオブジェクトはcontextオブジェクトに含まれます。リクエストの本文全体を見るには、リクエストの形式を参照してください。

{
  "context": {
    "System": {
      "apiAccessToken": "AxThk...",
      "apiEndpoint": "https://api.fe.amazonalexa.com",
      "device": {
        "deviceId": "string-identifying-the-device",
        "supportedInterfaces": {}
      },
      "application": {
        "applicationId": "string"
      },
      "user": {}
    }
  }
}

アクセストークンは次の形式でAuthorizationヘッダーに含めてください: Bearer ACCESS_TOKEN。ここでACCESS_TOKENは、AlexaリクエストメッセージのapiAccessTokenフィールドの値です。以下に例を示します。

Authorization: Bearer AxThk...6fnLok

Node.jsの場合は次のようになります。

accessToken = this.event.context.System.apiAccessToken

詳細については、Alexaから送信されたリクエストを処理するを参照してください。

        </div>
    </div><!--/.container-->
</div><!--/.page-container-->

</body>

</html>