身份验证预构建组件

身份验证 预构建组件 验证其身份信息,以达到所需的身份验证级别。 此组件涵盖金融服务 (FSI) 行业常见的身份验证要求,但不局限于此行业。此组件使用信用卡到期日期收集出生日期收集电话号码收集预构建组件来收集和验证用户详细信息。

身份验证级别

不同的预构建组件需要多级身份验证,级别越高,需要提供的用户信息就越多。通过 Authentication 组件,用户可以向级别 0 (ANI Match)、 如“身份验证级别”表所述,第 1 级(基本)或第 2 级(多重身份验证)。

身份验证级别 使用要求
级别 0:ANI 匹配 可通过调用已注册账号或提供与已注册账号对应的手机号码来对用户进行身份验证。

可以使用 Greeting 预构建组件向级别 0 的用户进行身份验证。
第 1 级:基本 通过验证发送到其电子邮件地址或手机号码的动态密码 (OTP) 代码,对用户进行身份验证。如果动态密码验证失败,用户可以回答 4 个安全问题中的 3 个,从而成功进行身份验证:出生日期 (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 级身份验证

限制

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

  • 动态密码只会发送到用户之前注册的手机号码或电子邮件地址。该组件不会使用动态密码来验证通过未注册在其账号中的备用电话号码致电的客户。当用户使用备用电话号码拨打电话时,系统会使用安全问题来验证来电者。
  • 此组件不会加密任何数据。

示例对话框

以下示例对话框演示了此预构建组件处理的常见场景。示例对话框演示了组件 使用电话进行调用,这会触发“默认欢迎 intent”和第一个 在对话开始时让客服人员回应你。

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

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

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

第一级身份验证成功:安全问题

组件通过收集并验证用户的 提供的手机号码该组件会询问用户三个安全问题(出生日期、用户借记卡号的最后四位数字和最近一次交易金额),并验证用户对这些问题的正确答案。用户已成功通过第 1 级身份验证。

用户输入 代理响应
您是我们银行的客户,还是拥有委托书?请说“是”或“否”进行确认。
好的,我们需要收集您的电话号码,以提取您的账号详细信息。
代理使用 Telephone number collection 预构建组件收集用户的电话号码
Got it.您提到的号码是 1 6502530000,对吗?
太好了,我们已完成电话号码的收集。
好的,出于安全考虑,我们需要更多信息来验证您的身份。
代理使用 Date of birth collection 预构建组件收集用户的出生日期
好的,您的出生日期是 1995 年 2 月 3 日,对吗?
太好了,我们已经收集了您的出生日期。
请告诉我们您借记卡号的后四位数。
是 1234
请告诉我们您上次交易的美元金额。例如,如果您的上次交易金额为 100.30 美元,请输入“100”。
是 500 美元
谢谢,您已成功通过身份验证。

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

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

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

信息否认

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

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

命名规则

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

特征 格式 示例
流程 [组件名称] 身份验证
特定于组件的 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 指定用于对最终用户进行身份验证的身份验证级别。有效值为 012 整数
$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. 选择 Build 标签页。
  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. 配置提供的 灵活的网络钩子, 描述外部服务的配置,请参阅网络钩子 设置。

网络钩子设置

要使用此组件,您需要配置包含的 灵活的网络钩子 从外部服务获取所需的信息

电话验证

prebuilt_components_authentication:telephony_verification webhook 用于 根据提供的电话号码获取用户账号详细信息 数字。

API 请求参数

该组件会将以下参数作为 API 请求的输入提供给 API 请求。

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

API 响应参数

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

参数名称 说明 输出格式
account_count 与已注册的电话号码关联的账号数量。这类账号包括个人账号以及用户拥有委托书的账号。 整数
last_four_digit_of_account_number 如果用户只有一个账号,则返回该账号的最后 4 位数字。如果用户有多个账号,此参数的值为 null 字符串
电子邮件 为该账号注册的电子邮件地址。如果没有为该账号注册的电子邮件地址,此参数的值为 null 字符串

如需为此组件配置电话验证 Webhook,请展开相应部分查看说明。

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

获取信用卡详细信息

prebuilt_components_account_services:get_credit_card_details webhook 用于 来获取用户注册的信用卡的相关信息。

API 请求参数

该组件会将以下参数作为 API 请求的输入提供给 API 请求。

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

API 响应参数

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

参数名称 说明 输出格式
credit_card_count 与注册电话号码相关联的信用卡号码。 整数
last_four_digit_of_credit_card_number 如果用户只有一张信用卡,则返回卡号的最后 4 位数字。如果用户有多张卡,则此参数的值为 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)”Webhook 网址字段中的网址替换为您要集成的服务的端点。在下拉菜单中选择适当的方法
  8. 查看并更新请求正文,为您的网络钩子构成正确的请求格式。
  9. 查看并更新响应配置,以从 webhook 的 响应。请勿修改参数名称,因为组件要访问这些参数名称 所返回的字段值。
  10. 根据需要查看并更新身份验证设置。
  11. 点击保存

发送动态密码

prebuilt_components_authentication:send_otp webhook 用于 向已注册的频道发送动态密码 (OTP) 由最终用户选择的设备

API 请求参数

该组件会将以下参数作为 API 请求的输入提供给 API 请求。

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

API 响应参数

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

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

要为此组件配置“发送动态密码 webhook”,请展开即可查看相关说明。

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

安全问题的答案

该组件使用 prebuilt_components_authentication:security_answers webhook 从最终用户的已注册账号中检索安全问题答案。

API 请求参数

该组件会将以下参数作为 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 用户借记卡号的最后四位数字。 字符串
user_dob 用户的出生日期 (DOB),采用 YYYY-MM-DD 格式。 字符串
cards_exp_date_all 用户注册的所有信用卡的到期日期(格式为 MMYYYY)。 列表(字符串)

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

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

双重验证

该组件使用 prebuilt_components_authentication:2fa_validation Webhook 来验证最终用户为进行双重身份验证而提供的安全密钥。

API 请求参数

该组件会将以下参数作为 API 请求的输入提供给 API 请求。

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

API 响应参数

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

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

如需为此组件配置双重验证网络钩子,请展开相应部分查看说明。

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

完成

现在,您的代理及其 webhook 应该已设置完毕并准备好进行测试。