認証の事前構築済みコンポーネント

認証の事前構築済みコンポーネントは、必要な認証レベルで認証するためにユーザーから情報を収集します。このコンポーネントは、金融サービス(FSI)業界で一般的な(ただし、限定されるものではない)認証要件に対応しています。このコンポーネントでは、 クレジット カードの有効期限収集生年月日の収集および電話番号の収集ユーザーの詳細を収集して検証するための事前構築済みコンポーネントを使用します。

認証レベル

異なる事前構築済みコンポーネントには、複数のレベルの認証が必要です。レベルが高いほど、ユーザーを認証するにはより多くのユーザー情報が必要になります。認証コンポーネントを使用すると、認証レベル表で説明されているように、ユーザーはレベル 0(ANI 一致)、レベル 1(基本)、レベル 2(多要素)で認証を行うことができます。

認証レベル 要件
レベル 0: ANI 一致 ユーザーは、登録済みアカウントに対応する電話番号から電話をかけるか、電話番号を入力して認証されます。

ユーザーは、グリーティングの事前構築済みコンポーネントを使用してレベル 0 で認証することができます。
レベル 1: 基本 ユーザーは、メールアドレスまたは電話番号に送信されたワンタイム パスワード(OTP)コードを検証することで認証されます。OTPの検証に失敗した場合、ユーザーは認証を成功させるために、生年月日(DOB)、ユーザーのデビットカードまたはクレジットカードの有効期限の下 4 桁(アカウントかカード所有者かによって異なる)、前回の取引金額、および直近のクレジット カード請求書のお支払い方法の 4 つのセキュリティ質問のうち 3 つに回答することができます。
レベル 2: 多要素 外部認証システム アプリまたはプッシュ通知によって生成されたセキュリティ キーを検証することで、ユーザーが追加で認証されます。

サポートされているユーザータイプ

認証コンポーネントは、口座所有者、カード所有者、またはその両方である登録済みの銀行のお客様のユーザーをサポートします。このコンポーネントは、銀行に未登録のユーザーで、銀行に登録されている口座の委任状が付与されたユーザーの認証もサポートします。ユーザーは、銀行に 1 つ以上の口座またはカードを登録している場合があります。

認証の種類

このコンポーネントを使用すると、ユーザーを口座所有者、カード所有者、またはその両方として認証するかどうかを構成できます。これらのオプションは、$session.params.account_auth_enabled$session.params.card_auth_enabled入力パラメータを設定して構成します。次の表に、アカウント認証フラグとカード認証フラグの値のさまざまな組み合わせによるコンポーネントの動作を示します。

account_auth_enabled card_auth_enabled 認証タイプ
true false ユーザーは口座所有者として認証され、銀行で 1 つ以上の口座を保有していることが確認されて、登録済みデビットカードの下 4 桁などのセキュリティ保護用の質問が確認されます。
false true ユーザーは、その銀行で 1 枚以上のクレジット カードを保有していることを確認し、登録済みのクレジット カードの有効期限などのセキュリティ保護用の質問に回答することで、カード所有者として認証されます。
true true このコンポーネントは、まずユーザーが登録済みの口座所有者かどうかを確認します。ユーザーが銀行で 1 つ以上の口座を保有している場合、このコンポーネントはアカウント情報を使用してユーザーを認証します。ユーザーがその銀行に口座を保有していない場合、このコンポーネントはカード所有者情報を使用してユーザーの認証を試みます。
false false このコンポーネントは、まずユーザーが登録済みの口座所有者かどうかを確認します。ユーザーがその銀行で 1 つ以上の口座を保有している場合、このコンポーネントはユーザーをレベル 0 認証で認証します。ユーザーがその銀行に口座を保有していない場合、コンポーネントはユーザーがカード所有者かどうかを確認します。ユーザーがその銀行で 1 枚以上のクレジット カードを保有している場合、このコンポーネントはユーザーをレベル 0 認証で認証します。

制限事項

一般的な事前構築済みコンポーネントの制限に加えて、この事前構築済みコンポーネントには次の制限があります。

  • OTP は、以前にユーザーに登録された携帯電話番号またはメールアドレスにのみ送信されます。このコンポーネントは、自身のアカウントに登録していない別の電話番号から発信した顧客を OTP を使用して認証することはありません。ユーザーが別の電話番号から電話をかけてきた場合は、セキュリティ保護用の質問を使用して発信者を認証します。
  • このコンポーネントはデータを暗号化しません。

サンプル ダイアログ

次のサンプル ダイアログは、この事前構築されたコンポーネントによって処理される一般的なシナリオを示しています。サンプル ダイアログは、コンポーネントがテレフォニーを使用して呼び出されたときの動作を示しています。呼び出しにより、Default Welcome Intent と会話開始時の最初のエージェント レスポンスがトリガーされます。

レベル 1 の認証の成功: OTP

ユーザーが以前にレベル 0 認証で認証されている場合。このコンポーネントは、ユーザーが選択したチャネルに OTP を送信して確認を求めます。ユーザーは有効な OTP を提供でき、レベル 1 で正常に認証されます。

ユーザー入力 エージェントの応答
セキュリティ上の理由から、本人確認が必要なため、コードを送信します。コードを電話とメールのどちらで受け取ることをご希望ですか?
Phone
末尾が 0000 のご登録電話番号にコードを送信しました。この処理には数秒かかることがあります。コードを確認してください。
コードは 123457 です
ありがとうございます。認証が完了しました。

レベル 1 の認証成功: セキュリティ保護用の質問

このコンポーネントは、指定された電話番号を収集して確認することで、ユーザーのレベル 0 認証を確認します。コンポーネントは、生年月日、ユーザーのデビットカード番号の下 4 桁、最後の取引金額という 3 つのセキュリティ保護用の質問に対するユーザーの正しい回答を求め、検証します。ユーザーはレベル 1 で正常に認証されます。

ユーザー入力 エージェントの応答
Google の銀行のお客様ですか、または委任状がありますか?「はい」か「いいえ」のいずれかを言ってください。
口座の詳細を取得するために、お客様の電話番号を収集する必要があります。
エージェントは、電話番号の収集の事前構築済みコンポーネントを使用してユーザーの電話番号を収集します
承知しました。番号は 1 6502530000 で間違いないでしょうか?
電話番号の収集が完了しました。
セキュリティ上の理由から、本人確認のための追加情報が必要になります。
エージェントは、生年月日の収集の事前構築済みコンポーネントを使用して、ユーザーの生年月日を収集します。
生年月日は 1995 年 2 月 3 日ですね。
生年月日を収集しました。
お客様のデビットカード番号の下 4 桁をお知らせください。
1234 です
直近の取引のドル金額をお知らせください。たとえば、直近のトランザクション金額が $100.30 だった場合は、「100」とします。
500 ドルでした
ありがとうございます。認証が完了しました。

レベル 2 の認証の成功: 2 要素認証

ユーザーが以前にレベル 1 認証で認証されている場合。コンポーネントは、銀行または認証システム アプリを使用してセキュリティ キーを生成するようユーザーに求めます。ユーザーが、生成されたセキュリティ キーを正常に確認すると、レベル 2 で認証されます。

ユーザー入力 エージェントの応答
セキュリティ キーを共有してください。
銀行アプリまたは認証システム アプリで 6 桁のセキュリティ キーを生成してください。その後数字を言うかまたは入力します。
232425
ありがとうございます。認証が完了しました。

情報の拒否

ユーザーは認証に必要な情報の提供を拒否しています。エラー メッセージが表示され、コンポーネントは終了します。

ユーザー入力 エージェントの応答
セキュリティ上の理由から、本人確認が必要なため、コードを送信します。コードを電話とメールのどちらで受け取ることをご希望ですか?
いいえ、共有しません
セキュリティ上の理由から、本人確認のための追加情報が必要になります。
エージェントは、生年月日の収集の事前構築済みコンポーネントを使用して、ユーザーの生年月日を収集します。
生年月日は 1995 年 2 月 3 日ですね。
生年月日を収集しました。
お客様のデビットカード番号の下 4 桁をお知らせください。
1234 です
直近の取引のドル金額をお知らせください。たとえば、直近のトランザクション金額が $100.30 だった場合は、「100」とします。
詳細を共有しません
お客様の認証が完了しなかったため、この操作を完了できません。ご不便をおかけしますが、ご了承ください。

命名規則

この事前構築済みコンポーネントでは、次の命名規則が使用されています。

機能 形式
フロー [コンポーネント名] 認証
コンポーネントに固有のインテント prebuilt_components_[component_name]_[intent_name] prebuilt_components_authentication_power_of_attorney
エンティティ タイプ prebuilt_components_[component_name]_[entity_type] prebuilt_components_authentication_payment_mode
Webhook prebuilt_components_[component_name]:[webhook_action] prebuilt_components_authentication:telephony_verification

入力パラメータ

入力パラメータは、コンポーネントの特定の動作を構成するために使用されるパラメータです。このパラメータは、コンポーネントの動作を決定するためにフロー内の 1 つ以上の条件によって使用されます。フロースコープのパラメータは、後述するように、コンポーネントのスタートページで設定する必要があります。セッション スコープのパラメータは、呼び出しフローまたはこのコンポーネントのスタートページで設定できます。

この事前構築済みコンポーネントは、次の入力パラメータを受け入れます。

パラメータ名 説明 入力形式
$session.params.auth_level (省略可)エンドユーザーの現在の認証レベルを示します。 整数
$session.params.auth_level_req エンドユーザーが認証される認証レベルを定義します。有効な値は 012 です。 integer
$session.params.account_auth_enabled ユーザーを口座所有者として認証する必要があるかどうかを示します。このコンポーネントの動作は、認証レベルで説明されているように、この値と $session.params.card_auth_enabled の値に依存します。 ブール値
$session.params.card_auth_enabled ユーザーをカード所有者として認証する必要があるかどうかを示します。このコンポーネントの動作は、認証レベルで説明されているように、この値と $session.params.account_auth_enabled の値に依存します。 ブール値
$session.params.phone_number (省略可)エンドユーザーの電話番号。このパラメータを指定しない場合、このコンポーネントはエンドユーザーから電話番号を収集します。 文字列
$flow.max_retry_telephone_counter ユーザーの電話番号を収集する際に許可する再試行回数を指定します。デフォルト値は 1 です。 整数
$flow.max_retry_security_ans_count セキュリティ応答の収集時に許可する再試行回数を指定します。デフォルト値は 3 です。 整数
$flow.max_retry_security_key セキュリティ キーの収集時に許可する再試行回数を指定します。デフォルト値は 3 です。 整数
$flow.max_retry_otp_not_received ワンタイム パスワード(OTP)が受信されない場合に許可する再試行回数を指定します。デフォルト値は 1 です。 integer
$flow.max_retry_otp_count ワンタイム パスワード(OTP)の収集時に許可する再試行回数を指定します。デフォルト値は 3 です。 整数
$flow.security_ans_denial_count ユーザーがリクエストされた情報を提供することを拒否した場合に許可される再試行回数を指定します。デフォルト値は 1 です。 整数
$flow.security_ans_mid_count ユーザーが回答できるセキュリティに関する誤回答の数を指定します。デフォルト値は 2 です。つまり、発信者が 2 つの異なる質問に正しく回答しなかった場合、コンポーネントは失敗して終了します。 整数
$flow.max_retry_card_counter エンドユーザーのデビットカードの下 4 桁を収集する際に再試行できる回数を指定します。デフォルト値は 2 です。 整数
$flow.security_key_length レベル 2 認証用に認証システム アプリから提供されるセキュリティ キーの有効な長さを指定します。デフォルト値は 6 です。 integer
$flow.otp_length レベル 1 認証のためのワンタイム パスワード(OTP)の有効な長さを指定します。デフォルト値は 6 です。 integer

このコンポーネントの入力パラメータを構成するには、開いて手順を確認します。

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Build] タブを選択します。
  5. [Flows] セクションでインポートされたコンポーネントをクリックします。
  6. [Pages] セクションで [Start Page] をクリックします。
  7. スタートページで true ルートをクリックします。
  8. [Route] ウィンドウで、必要に応じて [Parameter Presets] 値を編集します。
  9. [Save] をクリックします。

出力パラメータ

出力パラメータは、コンポーネントを終了した後もアクティブな状態を継続するセッション パラメータです。これらのパラメータには、コンポーネントによって収集される重要な情報が含まれます。この事前構築されたコンポーネントは、次の出力パラメータの値を提供します。

パラメータ名 説明 出力形式
auth_level エンドユーザーの現在の認証レベルを示します。 整数
phone_number ユーザーの識別に使用されるユーザーの電話番号(国コードなし)。 文字列
transfer_reason このパラメータは、フローが失敗した場合に終了した理由を示します。戻り値は次のいずれかです。

agent: エンドユーザーが会話中のいずれかの時点で人間のエージェントをリクエストした。

denial_of_information: エンドユーザーが、コンポーネントによってリクエストされた情報を共有することを拒否した。

max_no_input: 会話が回答なしイベントの再試行の最大回数に達した。回答なし組み込みイベントをご覧ください。

max_no_match: 会話が一致なしイベントの再試行の最大回数に達しました。一致なし組み込みイベントをご覧ください。

webhook_error: Webhook エラーが発生しました。webhook.error の組み込みイベントをご覧ください。

webhook_not_found: Webhook URL にアクセスできませんでした。webhook.error.not-found の組み込みイベントをご覧ください。
文字列

基本設定

この事前構築済みコンポーネントを設定するには:

  1. 事前構築済みコンポーネントをインポートします。
  2. 外部サービスを記述する構成を使用して、付属の柔軟な Webhook を構成します。下記の Webhook の設定をご覧ください。

Webhook の設定

このコンポーネントを使用するには、付属の柔軟な Webhook を構成して外部サービスから必要な情報を取得する必要があります。

電話検証

prebuilt_components_authentication:telephony_verification Webhook は、指定された電話番号に基づいてユーザー アカウントの詳細情報を取得するためにコンポーネントによって使用されます。

API リクエスト パラメータ

以下のパラメータは、コンポーネントによって API リクエストへの入力として提供されます。

パラメータ名 説明 入力形式
$session.params.phone_number ユーザーの識別に使用されるユーザーの電話番号(国コードなし)。 文字列

API レスポンス パラメータ

以下のパラメータは、コンポーネントで使用される API レスポンスから取得されます。

パラメータ名 説明 出力形式
account_count 登録されている電話番号に関連付けられているアカウントの数。これらのアカウントには、自分のアカウントとユーザーが委任状を保有するアカウントが含まれます。 integer
last_four_digit_of_account_number ユーザーが 1 つのアカウントを持っている場合は、アカウント番号の末尾 4 桁が返されます。ユーザーが複数の口座を保有している場合、このパラメータの値は null です。 文字列
メール 口座に登録されているメールアドレス。口座に登録されているメールアドレスがない場合、このパラメータの値は null です。 文字列

このコンポーネントの電話検証 Webhook を構成するには、展開して手順をご覧ください。

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Webhooks] をクリックします。
  6. prebuilt_components_authentication:telephony_verification Webhook を選択します。
  7. Dialogflow CX Webhook URL フィールドの URL を、統合するサービスのエンドポイントに置き換えます。プルダウンで適切なメソッドを選択します。
  8. Webhook に適したリクエスト形式になるように、リクエスト本文を確認して更新します。
  9. レスポンス構成を確認して更新し、Webhook のレスポンスから特定のフィールドを抽出します。パラメータ名は、コンポーネントが返されたフィールド値にアクセスするために必要であるため、変更しないでください。
  10. 必要に応じて [Authentication] の設定を確認し、更新します。
  11. [Save] をクリックします。

クレジット カード情報の確認

prebuilt_components_account_services:get_credit_card_details Webhook は、コンポーネントによって、ユーザーに登録されたクレジット カードに関する情報を取得するために使用されます。

API リクエスト パラメータ

以下のパラメータは、コンポーネントによって API リクエストへの入力として提供されます。

パラメータ名 説明 入力形式
$session.params.phone_number ユーザーの識別に使用されるユーザーの電話番号(国コードなし)。 文字列

API レスポンス パラメータ

以下のパラメータは、コンポーネントで使用される API レスポンスから取得されます。

パラメータ名 説明 出力形式
credit_card_count 登録されている電話番号に関連付けられているクレジット カードの数。 整数
last_four_digit_of_credit_card_number ユーザーが 1 枚のクレジット カードを持っている場合は、カード番号の末尾 4 桁が返されます。ユーザーが複数のカードを持っている場合、このパラメータの値は null です。 文字列
メール 口座に登録されているメールアドレス。口座に登録されているメールアドレスがない場合、このパラメータの値は null です。 文字列

このコンポーネントの [クレジット カードの詳細を取得] Webhook を構成するには、開いて手順を確認してください。

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Webhooks] をクリックします。
  6. prebuilt_components_account_services:get_credit_card_details webhook を選択します。
  7. Dialogflow CX Webhook URL フィールドの URL を、統合するサービスのエンドポイントに置き換えます。プルダウンで適切なメソッドを選択します。
  8. Webhook に適したリクエスト形式になるように、リクエスト本文を確認して更新します。
  9. レスポンス構成を確認して更新し、Webhook のレスポンスから特定のフィールドを抽出します。パラメータ名は、コンポーネントが返されたフィールド値にアクセスするために必要であるため、変更しないでください。
  10. 必要に応じて [Authentication] の設定を確認し、更新します。
  11. [Save] をクリックします。

OTP を送信

prebuilt_components_authentication:send_otp Webhook は、エンドユーザーが選択した登録済みチャネルにワンタイム パスワード(OTP)を送信するためにコンポーネントによって使用されます。

API リクエスト パラメータ

以下のパラメータは、コンポーネントによって API リクエストへの入力として提供されます。

パラメータ名 説明 入力形式
$session.params.phone_number ユーザーの識別に使用されるユーザーの電話番号(国コードなし)。 文字列
$flow.channel OTP を受信するためにユーザーが選択したチャネル。有効な値は、prebuilt_components_authentication_channel カスタム エンティティによって定義されます。デフォルトでは、emailmobile がサポートされています。 文字列

API レスポンス パラメータ

以下のパラメータは、コンポーネントで使用される API レスポンスから取得されます。

パラメータ名 説明 出力形式
generated_otp 選択したチャネルを使用して生成され、ユーザーに送信された OTP の値。 文字列

このコンポーネントの [OTP を送信] Webhook を構成するには、展開して手順を確認してください。

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Webhooks] をクリックします。
  6. prebuilt_components_authentication:send_otp Webhook を選択します。
  7. Dialogflow CX Webhook URL フィールドの URL を、統合するサービスのエンドポイントに置き換えます。プルダウンで適切なメソッドを選択します。
  8. Webhook に適したリクエスト形式になるように、リクエスト本文を確認して更新します。
  9. レスポンス構成を確認して更新し、Webhook のレスポンスから特定のフィールドを抽出します。パラメータ名は、コンポーネントが返されたフィールド値にアクセスするために必要であるため、変更しないでください。
  10. 必要に応じて [Authentication] の設定を確認し、更新します。
  11. [Save] をクリックします。

セキュリティ保護用の質問への回答

prebuilt_components_authentication:security_answers Webhook は、登録済みのアカウントからエンドユーザーのセキュリティ保護用の質問への回答を取得するために、コンポーネントによって使用されます。

API リクエスト パラメータ

以下のパラメータは、コンポーネントによって API リクエストへの入力として提供されます。

パラメータ名 説明 入力形式
$session.params.phone_number ユーザーの識別に使用されるユーザーの電話番号(国コードなし)。 文字列

API レスポンス パラメータ

以下のパラメータは、コンポーネントで使用される API レスポンスから取得されます。

パラメータ名 説明 出力形式
security_last_trans_amount ユーザーの直近のトランザクションの合計金額を示します(通貨記号なし)。たとえば、ユーザーの直近のトランザクション金額が 100.30 米ドルの場合、このフィールドの期待値は "100.30" です。 文字列
last_payment_mode ユーザーの直近のトランザクションに使用された、prebuilt_components_authentication_payment_mode カスタム エンティティによって定義された有効な値を持つお支払い方法。デフォルトでは、これらの値には mobileupionlinedebitcreditaccount が含まれます。 文字列
security_card_number ユーザーのデビットカード番号の下 4 桁。 文字列
user_dob ユーザーの生年月日(YYYY-MM-DD 形式)。 文字列
cards_exp_date_all ユーザーに登録されているすべてのクレジット カードの有効期限(MMYYYY 形式)。 リスト(文字列)

このコンポーネントのセキュリティ保護用の質問への回答の Webhook を構成するには、展開して手順をご覧ください。

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Webhooks] をクリックします。
  6. prebuilt_components_authentication:security_answers Webhook を選択します。
  7. Dialogflow CX Webhook URL フィールドの URL を、統合するサービスのエンドポイントに置き換えます。プルダウンで適切なメソッドを選択します。
  8. Webhook に適したリクエスト形式になるように、リクエスト本文を確認して更新します。
  9. レスポンス構成を確認して更新し、Webhook のレスポンスから特定のフィールドを抽出します。パラメータ名は、コンポーネントが返されたフィールド値にアクセスするために必要であるため、変更しないでください。
  10. 必要に応じて [Authentication] の設定を確認し、更新します。
  11. [Save] をクリックします。

2 要素検証

prebuilt_components_authentication:2fa_validation Webhook は、コンポーネントが 2 要素認証用にエンドユーザーが提供するセキュリティ キーの検証に使用します。

API リクエスト パラメータ

以下のパラメータは、コンポーネントによって API リクエストへの入力として提供されます。

パラメータ名 説明 入力形式
$session.params.phone_number ユーザーの識別に使用されるユーザーの電話番号(国コードなし)。 文字列
$flow.security_key 銀行アプリまたは認証システム アプリを使用して生成されるエンドユーザーが提供するセキュリティ キー。 文字列

API レスポンス パラメータ

以下のパラメータは、コンポーネントで使用される API レスポンスから取得されます。

パラメータ名 説明 出力形式
security_key_verified エンドユーザーが指定したセキュリティ キーが有効かどうかを示します。true は、指定されたセキュリティ キーが有効であることを示します。false は、指定されたセキュリティ キーが無効であることを示します。 ブール値

このコンポーネントの 2 要素検証 Webhook を構成するには、展開して手順をご覧ください。

  1. Dialogflow CX Console を開きます。
  2. ご自身の Google Cloud プロジェクトを選択します。
  3. エージェントを選択します。
  4. [Manage] タブを選択します。
  5. [Webhooks] をクリックします。
  6. prebuilt_components_authentication:2fa_validation Webhook を選択します。
  7. Dialogflow CX Webhook URL フィールドの URL を、統合するサービスのエンドポイントに置き換えます。プルダウンで適切なメソッドを選択します。
  8. Webhook に適したリクエスト形式になるように、リクエスト本文を確認して更新します。
  9. レスポンス構成を確認して更新し、Webhook のレスポンスから特定のフィールドを抽出します。パラメータ名は、コンポーネントが返されたフィールド値にアクセスするために必要であるため、変更しないでください。
  10. 必要に応じて [Authentication] の設定を確認し、更新します。
  11. [Save] をクリックします。

完了

これで、エージェントとその Webhook が設定され、テストの準備が整いました。