Alexaリマインダーの概要



Alexaリマインダーの概要

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

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

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

ユーザーがAlexaと対話していた場合は、それに「割り込み」ます。ユーザーがこのリマインダーを聞きたくない場合は、対話の妨げになります。不要な割り込みをしないように、リマインダーの作成には、2セットのアクセス権限を取得する必要があります。a)共通リマインダー読み取り/書き込みアクセス権限(スキルの有効化時に取得)と、b)個別のリマインダーを設定するためのユーザーの明示的な許可です。明示的な許可は、スキルがユーザーに対して示すダイアログの一部として取得する必要があります。たとえば、ユーザーに対して「リマインダーを作成してよろしいですか?」や「これをリマインドしますか?」などとたずねます。 スキルの応答では、リマインダーの時刻や、そのリマインダーを繰り返すかどうかをユーザーに明示する必要があります。

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

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

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

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

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

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

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

Alexaカスタムスキルがすでにある場合や新規作成する場合、次の手順に従ってAlexaリマインダーを簡単に組み込むことができます。

  • Alexa開発者コンソールのアクセス権限セクションでスキルを作成し、Alexaリマインダーのアクセス権限が必要なことを示します。
  • スキルサービスコードに、リマインダー機能を実装します。
  • スキルで以前に設定されたリマインダーをユーザーが削除または編集するなどのリマインダーイベントを、スキルがサブスクリプションするようにします。
    • 新しいリマインダースキルを作成する場合や既存のカスタムスキルを更新してリマインダーイベントをサブスクリプションする場合は、Alexaスキル管理API(SMAPI)を使用します。
    • ユーザーからのAlexaリマインダーアクセス権限をリクエストし、APIを使用してAlexaリマインダーを読み取って更新します。スキルがアクセスできるのはそのスキルによって作成されたリマインダーのみです。
    • スキルサービスでのイベントの使用の手順に従って、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.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から送信されたリクエストを処理する