身份验证预构建组件

身份验证预建组件会收集用户的信息,以将用户身份验证到所需的身份验证级别。 此组件涵盖金融服务行业 (FSI) 常见但并非独有的身份验证要求。此组件使用信用卡失效日期收集、出生日期收集和电话号码收集预构建组件来收集和验证用户详细信息。

身份验证级别

不同的预构建组件需要多个级别的身份验证,级别越高,需要更多用户信息才能验证用户身份。身份验证组件允许用户根据“身份验证级别”表中的说明,以级别 0(ANI 匹配)、级别 1(基本)或级别 2(多重身份验证)进行身份验证。

身份验证级别 要求
Level 0:ANI 匹配 用户通过拨打电话或提供与注册账号对应的手机号码进行身份验证。

用户可以使用问候语预建组件将身份验证级别设为 0。
级别 1:基本 通过验证发送到用户电子邮件地址或手机号码的动态密码 (OTP) 代码来对用户进行身份验证。如果 OTP 验证失败,用户可以回答四道安全问题中的三道,以便成功通过身份验证:出生日期 (DOB)、用户借记卡或信用卡(取决于用户是账号持有人还是卡持有人)的最后四位数或到期日期、上次交易金额以及上次信用卡账单付款方式。
第 2 级:多重身份验证 通过验证由外部身份验证器应用或推送通知生成的安全密钥,对用户进行额外身份验证。

支持的用户类型

身份验证组件为已注册银行客户(即账号持有人、持卡人或同时是账号持有人和持卡人)提供支持。该组件还支持对非银行客户但拥有银行注册账户授权书的用户进行身份验证。用户可能向银行注册了一个或多个账号或卡。

身份验证类型

借助此组件,您可以配置用户应以账号持有人身份、卡持有人身份还是同时以这两种身份进行身份验证。这些选项通过设置 $session.params.account_auth_enabled 和 $session.params.card_auth_enabled 输入参数进行配置。下表介绍了在账号身份验证和卡片身份验证标志的不同值组合下,组件的行为。

account_auth_enabled card_auth_enabled 身份验证类型
true false 系统将对用户进行身份验证,确认用户是银行的一个或多个账户的持有人,并验证安全问题,包括注册的借记卡的最后四位数。
false true 系统将对用户进行持卡人身份验证,验证用户是否持有银行的一张或多张信用卡,并确认安全问题,包括已注册信用卡的到期日期。
true true 该组件首先会检查用户是否为注册账号持有人。如果用户在该银行持有一个或多个账号,该组件会使用账号信息对用户进行身份验证。如果用户没有该银行的任何账号,该组件会尝试使用持卡人信息对用户进行身份验证。
false false 该组件首先会检查用户是否为注册账号持有人。如果用户在银行持有至少一个账号,该组件会将用户身份验证为 0 级身份验证。如果用户未在银行开设任何账号,该组件会检查用户是否为持卡人。如果用户持有该银行的一张或多张信用卡,该组件会将用户身份验证为 0 级身份验证。

限制

除了常见的预构建组件限制之外,此预构建组件还存在以下限制:

  • 动态密码只会发送到之前已向用户注册的手机号码或电子邮件地址。该组件不会使用 OTP 来验证客户的身份,如果客户来电所用的备用手机号码未注册到其账号中,则无法验证客户的身份。 当用户使用备用手机号码来电时,系统会使用安全问题来验证来电者的身份。
  • 此组件不会加密任何数据。

对话示例

以下示例对话展示了此预构建组件处理的常见场景。示例对话展示了使用电话调用组件时的行为,该行为会在对话开始时触发默认欢迎意图和第一个代理响应。

第 1 级身份验证成功:动态密码

用户之前已通过 0 级身份验证。组件会发送 OTP 并要求用户确认已发送到用户所选渠道的 OTP。 用户能够提供有效的 OTP,并成功通过 1 级身份验证。

用户输入 智能体回答
出于安全考虑,我们需要验证您的身份,因此会向您发送验证码。您希望通过手机还是电子邮件接收验证码?
电话
我们已向您注册的手机号码(尾号为 0000)发送验证码。这可能需要几秒钟的时间。您能否确认一下此代码?
验证码为 123457
谢谢,您已成功通过身份验证。

级别 1 身份验证成功:安全问题

组件通过收集和验证所提供的手机号码来确认用户的 0 级身份验证。该组件会要求用户回答三个安全问题(出生日期、借记卡号的后四位和上次交易金额),并验证用户回答是否正确。用户已成功通过 Level 1 身份验证。

用户输入 智能体回答
您是本行的客户,还是持有委托书?请说“是”或“否”以确认。
是
好的,我们需要收集您的手机号码,以便获取您的账号详细信息。
代理使用电话号码收集预构建组件收集用户的电话号码
知道了。您提及的号码是 +1 6502530000,对吗?
是
太棒了,我们已完成电话号码收集。
好的,出于安全考虑,我们需要您提供更多信息来验证您的身份。
代理使用出生日期收集预构建组件收集用户的出生日期
好的,您的出生日期是 1995 年 2 月 3 日,对吗?
是
太棒了,我们已收集您的出生日期。
请告知我们您的借记卡号的后四位数字。
是 1234
请告知我们您上次交易的金额(以美元为单位)。例如,如果您的上笔交易金额为 100.30 美元,请说“100”。
500 美元
谢谢,您已成功通过身份验证。

第 2 级身份验证成功:双重身份验证

用户之前已通过 1 级身份验证。该组件会要求用户使用银行或身份验证器应用生成安全密钥。用户成功确认生成的安全密钥,并通过了 2 级身份验证。

用户输入 智能体回答
请分享您的安全密钥。
在银行应用或身份验证器应用中生成 6 位数安全密钥,然后说出或输入这些数字。
232425
谢谢,您已成功通过身份验证。

拒绝提供信息

用户拒绝提供身份验证所需的信息。组件退出并显示失败消息。

用户输入 智能体回答
出于安全考虑,我们需要验证您的身份,因此会向您发送验证码。您希望通过手机还是电子邮件接收验证码?
否,我不想分享
好的,出于安全考虑,我们需要您提供更多信息来验证您的身份。
代理使用出生日期收集预建组件收集用户的出生日期
好的,您的出生日期是 1995 年 2 月 3 日,对吗?
是
太棒了,我们已收集您的出生日期。
请告知我们您的借记卡号的后四位数字。
是 1234
请告知我们您上次交易的金额(以美元为单位)。例如,如果您的上笔交易金额为 100.30 美元,请说“100”。
我不想分享详细信息
我们无法验证您的身份,因此无法完成此操作。对于由此给您带来的任何不便,我们深表歉意。

命名规则

此预构建组件使用以下命名惯例:

功能 格式 示例
Flow [组件名称] 身份验证
特定于组件的 intent prebuilt_components_[component_name]_[intent_name] prebuilt_components_authentication_power_of_attorney
实体类型 prebuilt_components_[component_name]_[entity_type] prebuilt_components_authentication_payment_mode
网络钩子 prebuilt_components_[component_name]:[webhook_action] prebuilt_components_authentication:telephony_verification

输入参数

输入参数是用于配置组件某些行为的参数。流程中的一个或多个条件将使用这些参数来确定组件应如何运行。必须在组件的起始页上设置流程范围的参数,如下所述。会话级范围的参数可以通过调用流程设置,也可以在此组件的起始页面上设置。

此预构建组件接受以下输入参数:

参数名称 说明 输入格式
$session.params.auth_level (可选)表示最终用户的当前身份验证级别。 整数
$session.params.auth_level_req 定义最终用户将通过的身份验证级别。有效值为 0、1 或 2。 整数
$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。 整数
$flow.max_retry_otp_count 指定在收集动态密码 (OTP) 时允许的重试次数。默认值为 3。 整数
$flow.security_ans_denial_count 指定用户拒绝提供所请求的信息时允许的重试次数。默认值为 1。 整数
$flow.security_ans_mid_count 指定用户可以提供的错误安全问题答案的数量。默认值为 2,这意味着如果调用方对两个不同的问题给出了错误答案,该组件将以失败状态退出。 整数
$flow.max_retry_card_counter 指定在收集最终用户的借记卡后四位数字时允许的重试次数。默认值为 2。 整数
$flow.security_key_length 指定身份验证器应用为 2 级身份验证提供的安全密钥的有效长度。默认值为 6。 整数
$flow.otp_length 指定第 1 级身份验证的动态密码 (OTP) 的有效长度。默认值为 6。 整数

如需配置此组件的输入参数,请展开即可查看相关说明。

  1. 打开 Dialogflow CX 控制台。
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择构建标签页。
  5. 点击流部分中导入的组件。
  6. 点击页面部分中的“起始页”。
  7. 点击“开始”页面中的 true 路线。
  8. 在“路线”窗口中,根据需要修改参数预设值。
  9. 点击保存。

输出参数

输出参数是会话参数,在退出组件后仍会保持有效状态。这些参数包含组件收集的重要信息。此预构建组件可为以下输出参数提供值:

参数名称 说明 输出格式
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.error.not-found 内置事件。
字符串

基本设置

如需设置此预建组件,请执行以下操作:

  1. 导入预构建组件。
  2. 使用描述外部服务的配置来配置所提供的灵活的 webhook,请参阅下文中的“Webhook 设置”。

网络钩子设置

如需使用此组件,您需要配置随附的灵活的 Webhook,以便从外部服务检索所需的信息。

电话验证

组件使用 prebuilt_components_authentication:telephony_verification webhook 根据提供的电话号码提取用户账号详细信息。

API 请求参数

以下参数由组件提供,作为 API 请求的输入。

参数名称 说明 输入格式
$session.params.phone_number 用户的本地手机号码(不含国家/地区代码),用于标识用户。 字符串

API 响应参数

以下参数会从 API 响应中提取,供组件使用。

参数名称 说明 输出格式
account_count 与注册的电话号码相关联的账号数量。这些账号包括用户本人的账号以及用户拥有代理权的账号。 整数
last_four_digit_of_account_number 如果用户只有一个账号,则返回账号的后四位。如果用户有多个账号,此参数的值为 null。 字符串
电子邮件 与账号关联的电子邮件地址。如果相应账号未注册任何电子邮件地址,则此参数的值为 null。 字符串

如需为此组件配置电话验证 Webhook,请展开即可查看相关说明。

  1. 打开 Dialogflow CX 控制台。
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击网络钩子。
  6. 选择 prebuilt_components_authentication:telephony_verification webhook。
  7. 将 Dialogflow CX 网络钩子网址字段中的网址替换为您要集成的服务的端点。在下拉菜单中选择合适的方法。
  8. 检查并更新请求正文,以形成适合您网络钩子的正确请求格式。
  9. 查看并更新响应配置,以从 Webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
  10. 根据需要查看并更新身份验证设置。
  11. 点击保存。

获取信用卡详细信息

该组件使用 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 如果用户只有一张信用卡,则返回该卡号的后四位数字。如果用户有多张卡,此参数的值为 null。 字符串
电子邮件 与账号关联的电子邮件地址。如果相应账号未注册任何电子邮件地址,则此参数的值为 null。 字符串

如需为此组件配置“获取信用卡详细信息”Webhook,请展开即可查看相关说明。

  1. 打开 Dialogflow CX 控制台。
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击网络钩子。
  6. 选择 prebuilt_components_account_services:get_credit_card_details webhook。
  7. 将 Dialogflow CX 网络钩子网址字段中的网址替换为您要集成的服务的端点。在下拉菜单中选择合适的方法。
  8. 检查并更新请求正文,以形成适合您网络钩子的正确请求格式。
  9. 查看并更新响应配置,以从 Webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
  10. 根据需要查看并更新身份验证设置。
  11. 点击保存。

发送动态密码

该组件使用 prebuilt_components_authentication:send_otp webhook 向最终用户选择的已注册渠道发送动态密码 (OTP)。

API 请求参数

以下参数由组件提供,作为 API 请求的输入。

参数名称 说明 输入格式
$session.params.phone_number 用户的本地手机号码(不含国家/地区代码),用于标识用户。 字符串
$flow.channel 用户选择接收 OTP 的渠道。有效值由 prebuilt_components_authentication_channel 自定义实体定义。默认情况下,支持 email 和 mobile。 字符串

API 响应参数

以下参数会从 API 响应中提取,供组件使用。

参数名称 说明 输出格式
generated_otp 通过所选渠道生成并发送给用户的动态密码的值。 字符串

如需为此组件配置“发送 OTP”Webhook,请展开本部分以查看相关说明。

  1. 打开 Dialogflow CX 控制台。
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击网络钩子。
  6. 选择 prebuilt_components_authentication:send_otp webhook。
  7. 将 Dialogflow CX 网络钩子网址字段中的网址替换为您要集成的服务的端点。在下拉菜单中选择合适的方法。
  8. 检查并更新请求正文,以形成适合您网络钩子的正确请求格式。
  9. 查看并更新响应配置,以从 Webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
  10. 根据需要查看并更新身份验证设置。
  11. 点击保存。

安全问题的答案

该组件使用 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 自定义实体定义。默认情况下,这些值包括 mobile、upi、online、debit、credit 和 account。 字符串
security_card_number 用户的借记卡号的后四位数字。 字符串
user_dob 用户的出生日期 (DOB),格式为 YYYY-MM-DD。 字符串
cards_exp_date_all 用户注册的所有信用卡的到期日期,采用 MMYYYY 格式。 列表(字符串)

如需为此组件配置“安全问题”网络钩子,请展开即可查看相关说明。

  1. 打开 Dialogflow CX 控制台。
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击网络钩子。
  6. 选择 prebuilt_components_authentication:security_answers webhook。
  7. 将 Dialogflow CX 网络钩子网址字段中的网址替换为您要集成的服务的端点。在下拉菜单中选择合适的方法。
  8. 检查并更新请求正文,以形成适合您网络钩子的正确请求格式。
  9. 查看并更新响应配置,以从 Webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
  10. 根据需要查看并更新身份验证设置。
  11. 点击保存。

双重验证

该组件使用 prebuilt_components_authentication:2fa_validation 网络钩子来验证最终用户为双重身份验证提供的安全密钥。

API 请求参数

以下参数由组件提供,作为 API 请求的输入。

参数名称 说明 输入格式
$session.params.phone_number 用户的本地手机号码(不含国家/地区代码),用于标识用户。 字符串
$flow.security_key 最终用户提供的安全密钥,使用银行应用或身份验证器应用生成。 字符串

API 响应参数

以下参数会从 API 响应中提取,供组件使用。

参数名称 说明 输出格式
security_key_verified 指示最终用户提供的安全密钥是否有效。true 表示所提供的安全密钥有效。false 表示提供的安全密钥无效。 布尔值

如需为此组件配置双重身份验证 Webhook,请展开即可查看相关说明。

  1. 打开 Dialogflow CX 控制台。
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击网络钩子。
  6. 选择 prebuilt_components_authentication:2fa_validation webhook。
  7. 将 Dialogflow CX 网络钩子网址字段中的网址替换为您要集成的服务的端点。在下拉菜单中选择合适的方法。
  8. 检查并更新请求正文,以形成适合您网络钩子的正确请求格式。
  9. 查看并更新响应配置,以从 Webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
  10. 根据需要查看并更新身份验证设置。
  11. 点击保存。

完成

您的代理及其 webhook 现在应已设置完毕,可以进行测试了。