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

認証の事前構築済みコンポーネントは、必要な認証レベルで認証するためにユーザーから情報を収集します。このコンポーネントは、金融サービス(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 Authentication type
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 で正常に認証されます。

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

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

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

ユーザー入力 エージェントの応答
Google の銀行のお客様ですか、または委任状がありますか?「はい」か「いいえ」のいずれかを言ってください。
はい
アカウントの詳細を取得するには、電話番号を収集する必要があります。
エージェントは、電話番号の収集の事前構築済みコンポーネントを使用してユーザーの電話番号を収集します
OK。番号は 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」とします。
詳細を共有したくない
認証できなかったため、この操作を完了できません。ご不便をおかけしますが、ご了承ください。

命名規則

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

特徴 形式
フロー [コンポーネント名] Authentication
コンポーネントに固有のインテント 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 の値によって異なります。 boolean
$session.params.card_auth_enabled ユーザーをカード所有者として認証する必要があるかどうかを示します。コンポーネントの動作は、この値と、認証レベルで説明されている $session.params.account_auth_enabled の値によって異なります。 boolean
$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 ユーザーの識別に使用されるユーザーの電話番号(国コードなし)。 string
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 の組み込みイベントをご覧ください。
string

基本設定

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

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

Webhook の設定

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

電話検証

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

API リクエスト パラメータ

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

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

API レスポンス パラメータ

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

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

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

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

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

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

API リクエストのパラメータ

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

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

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 Webhook URL フィールドの URL を、統合するサービスのエンドポイントに置き換えます。プルダウンで適切なメソッドを選択します。
  8. Webhook に適したリクエスト形式になるように、リクエスト本文を確認して更新します。
  9. レスポンス構成を確認して更新し、Webhook のレスポンスから特定のフィールドを抽出します。パラメータ名は、コンポーネントが返されたフィールド値にアクセスするために必要であるため、変更しないでください。
  10. 必要に応じて [Authentication] の設定を確認し、更新します。
  11. [保存] をクリックします。

OTP を送信

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

API リクエスト パラメータ

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

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

API レスポンス パラメータ

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

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

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

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

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

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

API リクエスト パラメータ

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

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

API レスポンス パラメータ

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

パラメータ名 説明 出力形式
security_last_trans_amount ユーザーの直近のトランザクションの合計金額を示します(通貨記号なし)。たとえば、ユーザーの直近のトランザクション金額が 100.30 米ドルの場合、このフィールドの期待値は "100.30" です。 string
last_payment_mode ユーザーの直近のトランザクションに使用された、prebuilt_components_authentication_payment_mode カスタム エンティティによって定義された有効な値を持つお支払い方法。デフォルトでは、これらの値には mobileupionlinedebitcreditaccount などがあります。 string
security_card_number ユーザーのデビットカード番号の下 4 桁。 文字列
user_dob ユーザーの生年月日(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 Webhook URL フィールドの URL を、統合するサービスのエンドポイントに置き換えます。プルダウンで適切なメソッドを選択します。
  8. Webhook に適したリクエスト形式になるように、リクエスト本文を確認して更新します。
  9. レスポンス構成を確認して更新し、Webhook のレスポンスから特定のフィールドを抽出します。パラメータ名は、コンポーネントが返されたフィールド値にアクセスするために必要であるため、変更しないでください。
  10. 必要に応じて [Authentication] の設定を確認し、更新します。
  11. [保存] をクリックします。

2 要素検証

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

API リクエスト パラメータ

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

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

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 Webhook URL フィールドの URL を、統合するサービスのエンドポイントに置き換えます。プルダウンで適切なメソッドを選択します。
  8. Webhook に適したリクエスト形式になるように、リクエスト本文を確認して更新します。
  9. レスポンス構成を確認して更新し、Webhook のレスポンスから特定のフィールドを抽出します。パラメータ名は、コンポーネントが返されたフィールド値にアクセスするために必要であるため、変更しないでください。
  10. 必要に応じて [Authentication] の設定を確認し、更新します。
  11. [Save] をクリックします。

完了

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