Alexaスキルで音声によるアカウントリンクを使用する(LWA)

Alexaスキルで音声によるアカウントリンクを使用する(LWA)

Alexaスキルでアカウントリンクが必要な場合、識別済みのAlexaユーザーは、AmazonアカウントとAlexaスキルのサービスで使っているアカウントを音声でリンクできます。ユーザーリクエストに応えるためにアカウントリンクが必要な場合、Alexaはユーザーに同意を求め、ワンタイムパスワードでリクエストを認証してから、アカウントをリンクします。ユーザーは、Alexaアプリに移動しなくても、アカウントリンクの手順を完了できます。

以下の例では、ユーザーが音声によって、Amazonアカウントとタクシー予約アカウントをリンクしています。

ユーザー: アレクサ、タクシー予約を開いて。
Alexa: こちらがライドヘイラー株式会社のタクシー予約スキルです。
Alexa(スキル): タクシー予約へようこそ。 タクシーを予約するために、アカウントをリンクしますか? 「アカウントをリンク」または「いいえ」と言ってください。
ユーザー: アカウントをリンク。
Alexa: アカウントをリンクするには、登録されたAlexaプロフィールの情報を一部、共有する必要があります。
Alexa: タクシー予約に、お名前とメールアドレスへのアクセスを許可しますか? 「許可します」または「いいえ」と言ってください。
ユーザー: 許可します。
Alexa: アニーさん、リクエストを認証するために、「私のコードは」に続けて、スマートフォンで受信したコードを言ってください。
ユーザー: アレクサ、私のコードは一、二、三、四、五、六です。
Alexa: アニーさんのAmazonログイン情報でタクシー予約にサインインしました。リンクされたアカウントはAlexaアプリの「スキル」セクションで管理できます。
Alexa(スキル): タクシーの予約ができるようになりました。 どこに行きたいですか?

音声によるアカウントリンクを実装する手順については、チュートリアル: 音声によるアカウントリンクを実装する(LWA)を参照してください。

用語

音声によるアカウントリンクを実装する前に、次の用語を確認しておきましょう。

  • Login with Amazon(LWA) – ユーザーがログインして、自身のユーザープロフィールデータへのアクセス権限を付与できる、OAuth 2.0ベースの認証システムです。サイトにLWAを追加すると、ユーザーはAmazonアカウントを使ってサイトやアプリにログインできるようになります。LWA全般については、Login with Amazonに関するドキュメントを参照してください。LWA SDKについては、Login with Amazon(LWA)SDKを参照してください。
  • Skill Connections – スキルが別のスキルやサービスを使って特定のタスクを実行できる機能です。詳細については、Skill Connectionsとはを参照してください。
  • 音声によるアカウントリンクスキル – 音声によるアカウントリンクフロー中にユーザーと対話し、リンクプロセスが完了したらSkill Connectionsを通じてスキルに制御を渡すというAmazonが所有するAlexaスキルです。
  • サービス – 開発者が提供するサービスです。前の例では、ユーザーがタクシーを呼ぶことのできる、「タクシー予約」というウェブサービスを提供していました。
  • スキル - ユーザーがAlexaでサービスを操作するために使用するAlexaスキルです。このドキュメントは、スキル開発者を対象に記載しています。

前提条件

音声によるアカウントリンクを実装するには、スキルとサービスが特定の要件を満たす必要があります。音声によるアカウントリンクを使用する場合、ユーザーも特定の要件を満たす必要があります。

スキルとウェブサイトの要件

音声によるアカウントリンクを実装するには、次の要件を満たす必要があります。

  • カスタムスキルであること。カスタムスキルの詳細については、カスタムスキルとはを参照してください。
  • スキルが、Authorization code grant種別を使ったアカウントリンクをサポートしていること。アカウントリンクの詳細については、Alexaスキルにアカウントリンクを追加するを参照してください。
  • サービスが、ユーザー認証にLWAを使用していること。LWAの詳細については、Login with Amazonを参照してください。
  • スキルが、スキルで必要なユーザー情報に対するアクセス権限を有効にしていること。サポートされているアクセス権限には、ユーザー名、電話番号、Eメールアドレス、国/地域と郵便番号などがあります。スキルを初めて使うユーザーの名前を取得するには、開発者コンソールで、少なくとも姓名名前のいずれかのアクセス権限を有効にする必要があります。アクセス権限の設定方法については、スキルで使用するためにユーザーの連絡先情報をリクエストするを参照してください。
  • スキルがパーソナライズをサポートしていないこと。つまり、開発者コンソールで、ツール > アクセス権限 > スキルのパーソナライズを無効にする必要があります。

ユーザーの要件

音声によるアカウントリンクを利用するユーザーは、次の要件を満たす必要があります。

  • ユーザーがAlexaアプリに音声プロフィールを設定していること。詳細については、スキルのパーソナライズをスキルユーザーとして管理するを参照してください。
  • ユーザーが音声プロフィールでスキルをパーソナライズを有効にしていること。
  • ユーザーが音声プロフィールに電話番号を登録していること。
  • ユーザーがデバイスを登録したAmazonアカウントの所有者であること。

音声によるアカウントリンクのユーザーエクスペリエンス

以下の例は、ユーザーが、音声を使ってアカウントリンクに同意または拒否をする場合と、音声によるアカウントリンクが利用できない場合のユーザーエクスペリエンスです。

ユーザーがアカウントリンクに同意する場合

以下は、ユーザーが、音声を使ってAmazonアカウントとタクシー予約アカウントのリンクに同意する場合のフロー例です。

ユーザーがアカウントリンクを拒否する場合

以下は、ユーザーがアカウントリンクを拒否する場合のフロー例です。この結果、アカウントリンクはAlexaアプリを使う方法に戻ります。

ユーザーが答えない場合

以下は、ユーザーがアカウントリンクを許可するかどうかの質問に答えない場合のフロー例です。この結果、アカウントリンクはAlexaアプリを使う方法に戻ります。

Alexaがユーザーを識別できない場合

以下は、Alexaがユーザーを識別できないため、音声によるアカウントリンクを選択できない場合のフロー例です。この結果、アカウントリンクはAlexaアプリを使う方法に戻ります。

ユーザーが利用要件を満たしていない場合

以下は、ユーザーがデバイスを登録したAmazonアカウントを持っていないため、音声によるアカウントリンクを選択できない場合のフロー例です。この結果、アカウントリンクはAlexaアプリを使う方法に戻ります。

ユーザーがプロフィールに電話番号を登録していない場合

以下は、ユーザーがプロフィールに電話番号を登録していないため、音声によるアカウントリンクフローが終了する場合のフロー例です。電話番号は、ワンタイムパスワードの検証に必要です。この結果、アカウントリンクはAlexaアプリを使う方法に戻ります。

ユーザーが過去に権限を付与していた場合

以下は、ユーザーが過去に権限を付与していたため、音声によるアカウントリンクフローが不要だった場合のフロー例です。

ユーザーが最近アカウントリンクリクエストを拒否していた場合

以下は、ユーザーが最近このスキルのアカウントリンクリクエストを拒否していたために、音声によるアカウントリンクフローが終了する場合のフロー例です。

音声によるアカウントリンクフロー

バックエンド側では次の処理をします。

  1. スキルが、音声によるアカウントリンクフローを開始するタイミングを判断します
  2. スキルが音声によるアカウントリンクを開始し、Alexaがユーザーの同意を求めます
  3. Alexaがアカウントリンクフローを完了し、ユーザーに通知して、スキルに制御を戻します

ステップ1: スキルが、音声によるアカウントリンクフローを開始するタイミングを判断する

このステップでは、Alexaがスキルを起動します。ユーザーとの対話中に、スキルはアカウントリンクが必要なタイミングを判断します。

  1. Alexaがスキルを起動します。
  2. ユーザーが、アカウントリンクの必要なリクエストを行います。
  3. スキルは、ユーザーが既にアカウントをリンクしているかどうかを確認します。つまり、スキルは、トークンがcontextオブジェクトにあるuserオブジェクトのaccessTokenプロパティで取得できるかどうかを確認します。ユーザーのアクセストークンがuserオブジェクトにない場合にのみ、音声によるアカウントリンクフローを開始します。
  4. 前のステップの結果により音声によるアカウントリンクフローを開始すべきと判断した場合、スキルはユーザーにアカウントリンクのメリットを説明します。シームレスにアカウントリンクを進められるように、次の例を使ってユーザーにアカウントリンクの価値を説明できます。 「ところで、アカウントをリンクすると、タクシー予約アカウントを使ってタクシーを予約できます。タクシーを予約するために、アカウントをリンクしますか? 「アカウントをリンク」または「いいえ」と言ってください。
  5. ユーザーが「アカウントをリンク」と言った場合、スキルはSkill Connectionsを使って、音声によるアカウントリンクフローを開始するConnections.StartConnectionディレクティブを送信します。詳細については、音声によるアカウントリンク開始タスクをリクエストするハンドラーを実装するを参照してください。

ステップ2: スキルが音声によるアカウントリンクを開始し、Alexaがユーザーの同意を求める

ステップ1の結果により、Alexaが音声によるアカウントリンクフローを実行してもよいとわかった場合、Alexaがユーザーに同意を求め、ユーザーの同意を保存する次のステップに進みます。

  1. Alexaは、ユーザーがAlexaアプリの設定でパーソナライズを有効にしていたかどうか、そしてデバイスを登録したAmazonアカウントの所有者かどうかを確認します。これらの必須設定の一覧については、ユーザーの要件を参照してください。ユーザーがパーソナライズを有効にしていない場合やAmazonアカウントの所有者でない場合は、音声によるアカウントリンクが終了し、Alexaは制御をスキルに戻します。ユーザーがパーソナライズを有効にする方法については、スキルのパーソナライズをスキルユーザーとして管理するを参照してください。
  2. Alexaは、以下の条件すべてに該当することを確認して、音声によるアカウントリンクフローを開始するかどうかを判断します。
    • ユーザーがスキルをまだリンクしていない。
    • スキルのマニフェストで、スキルがアカウントリンク全般、特に音声によるアカウントリンクをサポートするよう指定されている。
    • ユーザーが、設定したすべての権限スコープへのアクセスを許可している。
  3. ユーザーが、設定したすべての権限スコープへのアクセスを許可していない場合、また最近アカウントリンクを拒否していない場合、音声によるアカウントリンクスキルは同意が得られていない権限スコープに対するアクセスを求めます。ユーザーが同意を拒否した場合、AlexaはユーザーにAlexaアプリを使ってアカウントをリンクできることを説明し、スキルに制御を戻します。

これまでのステップが問題なく完了していれば、Alexaはアカウントをリンクし、リンク結果をユーザーに報告して、スキルに制御を戻します。

  1. 音声によるアカウントリンクスキルは、LWAを呼び出して、システムにあるユーザーの認可コードをリクエストします。
  2. 音声によるアカウントリンクスキルは、LWAを呼び出して、アクセストークンと更新トークンの認可コードを交換します。
  3. アカウントリンクが成功したか失敗したかに応じて、Alexaは結果をユーザーに報告します。
    • 成功メッセージの例: 「アニーさんのAmazonログイン情報でタクシー予約にサインインしました。リンクされたアカウントはAlexaアプリの「スキル」セクションで管理できます。」
    • エラーメッセージの例: 「すみません、アカウントをリンクできませんでした。Alexaアプリの「スキル」セクションでいつでもアカウントをリンクできます。
  4. その後、Alexaはスキルセッションを再開し、Tasks.CompleteTaskディレクティブの形式でアカウントリンクのステータスについての応答を、スキルに送信します。詳細については、音声によるアカウントリンクを開始するタスクの応答を取得するハンドラーを実装するを参照してください。

音声によるアカウントリンクを実装する手順については、チュートリアル: 音声によるアカウントリンクを実装する(LWA)を参照してください。

フロー図

以下の図は、音声によるアカウントリンクフロー中にバックエンドで何が起きているかを示しています。詳細を表示するには、図をクリックして拡大してください。

音声による同意フロー