身份验证预构建组件会从用户那里收集信息,以对用户进行身份验证以达到所需的身份验证级别。此组件涵盖了金融服务 (FSI) 行业常见但并非专有的身份验证要求。此组件使用信用卡失效日期收集、出生日期收集和电话号码收集预构建组件来收集和验证用户详细信息。
身份验证级别
不同的预构建组件需要多个级别的身份验证,而更高级别需要更多用户信息才能对用户进行身份验证。如“身份验证级别”表中所述,借助 Authentication 组件,用户可以向级别 0(ANI 匹配)、级别 1(基本)或级别 2(多重身份验证)进行身份验证。
身份验证级别 | 使用要求 |
---|---|
级别 0:ANI 匹配 | 用户可通过拨打电话或提供与已注册帐号对应的手机号码来进行身份验证。 用户可以使用 Greeting 预构建组件对用户进行身份验证,成为 0 级用户。 |
级别 1:基本 | 系统会验证发送到用户电子邮件地址或手机号码的动态密码 (OTP) 代码,以便对用户进行身份验证。如果动态密码验证失败,用户可以回答以下四个安全问题中的三个,从而成功进行身份验证:出生日期 (DOB)、用户借记卡或信用卡失效日期的最后四位数(取决于用户是账号还是信用卡持有人)、上次交易金额以及上次信用卡账单付款方式。 |
级别 2:多重身份验证 | 验证由外部身份验证器应用或推送通知生成的安全密钥,对用户额外进行身份验证。 |
支持的用户类型
身份验证组件支持符合以下条件的已注册银行客户:账号持有人和/或持卡人。该组件还支持未注册银行客户但拥有在银行注册的帐号的委托书的用户的身份验证。用户可能拥有已在银行注册的一个或多个帐号或卡。
身份验证类型
利用此组件,您可以配置是否应对用户进行身份验证(帐号持有人和/或持卡人)。您可以通过设置 $session.params.account_auth_enabled
和 $session.params.card_auth_enabled
输入参数来配置这些选项。下表介绍了帐号身份验证和卡身份验证标志的值的不同组合的组件行为。
account_auth_enabled | card_auth_enabled | Authentication type(身份验证类型) |
---|---|---|
true |
false |
系统会以帐号持有人的身份对用户进行身份验证,验证用户持有银行的一个或多个帐号,并确认存在安全问题(包括注册借记卡的最后 4 位数字)。 |
false |
true |
系统会以持卡人的身份对用户进行身份验证,验证用户持有银行的一张或多张信用卡,并确认存在安全问题(包括所注册信用卡的信用卡失效日期)。 |
true |
true |
该组件首先会检查用户是否为已注册的帐号持有人。如果用户持有一个或多个银行账户,则组件会使用账户信息对用户进行身份验证。如果用户未持有任何银行账户,该组件会尝试使用持卡人信息对用户进行身份验证。 |
false |
false |
该组件首先会检查用户是否为已注册的帐号持有人。如果用户持有一个或多个银行帐号,该组件会对用户进行身份验证,以便进行 0 级身份验证。如果用户未持有任何银行账户,则组件会检查用户是否为持卡人。如果用户持有银行的一张或多张信用卡,该组件会对用户进行身份验证以接受 0 级身份验证。 |
限制
除了常见的预构建组件限制之外,此预构建组件还具有以下限制:
- 动态密码只会发送到之前向用户注册的手机号码或电子邮件地址。该组件不会使用动态密码对通过未在其帐号中注册的备用手机号码拨打电话的客户进行身份验证。当用户通过备用手机号码拨打电话时,系统将使用安全问题来验证来电者的身份。
- 此组件不会对任何数据进行加密。
示例对话框
以下示例对话框演示了此预构建组件处理的常见场景。这些示例对话框演示了使用电话调用组件时的行为,该行为会在对话开始时触发“默认欢迎意图”和第一个代理响应。
1 级身份验证成功:动态密码
用户之前已通过身份验证,可获得 0 级身份验证。组件发送并要求用户确认发送到用户所选渠道的动态密码。用户能够提供有效的动态密码,并成功通过了 1 级身份验证。
用户输入 | 代理响应 |
---|---|
出于安全考虑,我们需要验证您的身份,因此将向您发送一个验证码。您更喜欢通过手机还是电子邮件接收验证码? | |
Phone | |
我们已向您尾号为 0000 的注册手机号码发送验证码。这可能需要几秒钟的时间。您可以确认一下该代码吗? | |
代码为 123457 | |
谢谢,您已成功通过身份验证。 |
1 级身份验证成功:安全问题
组件通过收集并验证所提供的手机号码来确认用户的 0 级身份验证。该组件会询问并验证用户对以下三个安全问题的正确答案:出生日期、用户借记卡号码的最后 4 位数字和上一笔交易金额。用户已成功通过了 1 级身份验证。
用户输入 | 代理响应 |
---|---|
您是我们银行的客户,或者您是否有委托书?请说是或否进行确认。 | |
是 | |
好的,我们需要收集您的手机号码以获取您的帐号详细信息。 | |
代理使用电话号码收集预构建组件收集用户的电话号码 | |
知道了。您提到的数字是 +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”。 | |
我不想分享详细信息 | |
我们无法验证您的身份,因此无法完成此操作。对于由此给您带来的任何不便,我们深表歉意。 |
命名惯例
此预构建组件使用以下命名惯例:
特征 | 形式 | 示例 |
---|---|---|
流 | [组件名称] | Authentication |
组件专用 intent | 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 |
输入参数
输入参数是用于配置组件某些行为的参数。流中的一个或多个条件将使用这些参数来确定组件的行为方式。流范围的参数必须在组件的初始页上设置,如下所述。会话级范围的参数可以通过调用流程设置,也可以在此组件的初始页上设置。
此预构建组件接受以下输入参数:
参数名称 | 说明 | 输入格式 |
---|---|---|
$session.params.auth_level | (可选)表示最终用户当前的身份验证级别。 | 整数 |
$session.params.auth_level_req | 定义对最终用户进行身份验证的身份验证级别。有效值为 0 、1 或 2 。 |
整数 |
$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 。 |
整数 |
$flow.max_retry_otp_count | 指定收集动态密码 (OTP) 时允许的重试次数。默认值为 3 。 |
整数 |
$flow.security_ans_denial_count | 指定当用户拒绝提供请求的信息时允许的重试次数。默认值为 1 。 |
整数 |
$flow.security_ans_mid_count | 指定用户可以提供的错误安全答案的数量。默认值为 2 ,表示如果调用方对两个不同的问题都提供了不正确的答案,该组件会以失败的形式退出。 |
整数 |
$flow.max_retry_card_counter | 指定收集最终用户借记卡的最后 4 位数字时允许的重试次数。默认值为 2 。 |
整数 |
$flow.security_key_length | 用于指定身份验证器应用为第 2 级身份验证提供的安全密钥的有效长度。默认值为 6 。 |
整数 |
$flow.otp_length | 指定用于第 1 级身份验证的动态密码 (OTP) 的有效长度。默认值为 6 。 |
整数 |
如需配置此组件的输入参数,请展开查看相关说明。
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择 Build 标签页。
- 在流部分中,点击导入的组件。
- 点击网页部分中的初始页。
- 点击初始页中的 true 路由。
- 在“路由”窗口中,根据需要修改参数预设值。
- 点击保存。
输出参数
输出参数是退出组件后将保持有效的会话参数。这些参数包含该组件收集的重要信息。此预构建组件提供了以下输出参数的值:
参数名称 | 说明 | 输出格式 |
---|---|---|
auth_level | 表示最终用户当前的身份验证级别。 | 整数 |
phone_number | 用户的本地手机号码(不含国家/地区代码),用于识别用户。 | 字符串 |
transfer_reason | 此参数表示流程退出的原因(如果失败的话)。返回值为以下值之一:agent :最终用户在对话期间的某个时刻请求人工客服。denial_of_information :最终用户拒绝分享该组件请求的信息。max_no_input :对话已达到无输入事件的重试次数上限。请参阅无输入内置事件。max_no_match :对话已达到非匹配事件的重试次数上限。请参阅无匹配的内置事件。webhook_error :发生网络钩子错误。请参阅 webhook.error 内置事件。webhook_not_found :某个网络钩子网址无法访问。请参阅 webhook.error.not-found 事件。 |
字符串 |
基本设置
如需设置此预构建组件,请执行以下操作:
- 导入预构建组件。
- 使用描述 Dialogflow 外部服务的配置来配置所提供的灵活 webhook,请参阅下面的网络钩子设置。
网络钩子设置
为了使用此组件,您需要配置所包含的灵活 webhook,以从外部服务中检索所需信息。
电话验证
该组件会使用 prebuilt_components_authentication:telephony_verification
网络钩子,根据提供的电话号码获取用户帐号详细信息。
API 请求参数
以下参数由组件提供,作为 API 请求的输入。
参数名称 | 说明 | 输入格式 |
---|---|---|
$session.params.phone_number | 用户的本地手机号码(不含国家/地区代码),用于识别用户。 | 字符串 |
API 响应参数
以下参数是从 API 响应中提取的,供组件使用。
参数名称 | 说明 | 输出格式 |
---|---|---|
account_count | 与注册的电话号码相关联的帐号数量。这些账号包括个人账号以及用户拥有委托书的账号。 | 整数 |
last_four_digit_of_account_number | 如果用户只有一个帐号,系统会返回帐号的最后四位数。如果用户有多个帐号,则此参数的值为 null 。 |
字符串 |
电子邮件 | 在该帐号中注册的电子邮件地址。如果没有为该账号注册的电子邮件地址,则此参数的值为 null 。 |
字符串 |
如需为此组件配置电话验证网络钩子,请展开查看相关说明。
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击网络钩子。
- 选择预构建_组件身份验证:telephony_verification 网络钩子。
- 将 Dialogflow 网络钩子网址字段中的网址替换为您要集成的服务的端点。从下拉菜单中选择合适的方法。
- 查看并更新请求正文,为网络钩子构建正确的请求格式。
- 查看并更新响应配置,以从 webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
- 查看并视需要更新 Authentication 设置。
- 点击保存。
获取信用卡详细信息
该组件使用 prebuilt_components_account_services:get_credit_card_details
网络钩子来获取有关向用户注册的信用卡的信息。
API 请求参数
以下参数由组件提供,作为 API 请求的输入。
参数名称 | 说明 | 输入格式 |
---|---|---|
$session.params.phone_number | 用户的本地手机号码(不含国家/地区代码),用于识别用户。 | 字符串 |
API 响应参数
以下参数是从 API 响应中提取的,供组件使用。
参数名称 | 说明 | 输出格式 |
---|---|---|
credit_card_count | 与注册电话号码相关联的信用卡的数量。 | 整数 |
last_four_digit_of_credit_card_number | 如果用户有单张信用卡,则返回卡号的最后 4 位数字。如果用户有多张卡片,则此参数的值为 null 。 |
字符串 |
电子邮件 | 在该帐号中注册的电子邮件地址。如果没有为该账号注册的电子邮件地址,则此参数的值为 null 。 |
字符串 |
如需为此组件配置“获取信用卡详情”网络钩子,请展开查看相关说明。
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击网络钩子。
- 选择 preview_components_account_services:get_credit_card_details 网络钩子。
- 将 Dialogflow 网络钩子网址字段中的网址替换为您要集成的服务的端点。从下拉菜单中选择合适的方法。
- 查看并更新请求正文,为网络钩子构建正确的请求格式。
- 查看并更新响应配置,以从 webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
- 查看并视需要更新 Authentication 设置。
- 点击保存。
发送动态密码
该组件会使用 prebuilt_components_authentication:send_otp
网络钩子向最终用户选择的已注册频道发送动态密码 (OTP)。
API 请求参数
以下参数由组件提供,作为 API 请求的输入。
参数名称 | 说明 | 输入格式 |
---|---|---|
$session.params.phone_number | 用户的本地手机号码(不含国家/地区代码),用于识别用户。 | 字符串 |
$flow.channel | 用户选择用来接收动态密码的频道。有效值由 prebuilt_components_authentication_channel 自定义实体定义。默认情况下,支持 email 和 mobile 。 |
字符串 |
API 响应参数
以下参数是从 API 响应中提取的,供组件使用。
参数名称 | 说明 | 输出格式 |
---|---|---|
generated_otp | 使用所选渠道生成并发送给用户的动态密码值。 | 字符串 |
若要为此组件配置“发送动态密码”网络钩子,请展开查看相关说明。
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击网络钩子。
- 选择预构建的组件身份验证:send_otp 网络钩子。
- 将 Dialogflow 网络钩子网址字段中的网址替换为您要集成的服务的端点。从下拉菜单中选择合适的方法。
- 查看并更新请求正文,为网络钩子构建正确的请求格式。
- 查看并更新响应配置,以从 webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
- 查看并视需要更新 Authentication 设置。
- 点击保存。
安全性问题解答
该组件使用 prebuilt_components_authentication:security_answers
网络钩子从最终用户的注册帐号中检索最终用户的安全应答。
API 请求参数
以下参数由组件提供,作为 API 请求的输入。
参数名称 | 说明 | 输入格式 |
---|---|---|
$session.params.phone_number | 用户的本地手机号码(不含国家/地区代码),用于识别用户。 | 字符串 |
API 响应参数
以下参数是从 API 响应中提取的,供组件使用。
参数名称 | 说明 | 输出格式 |
---|---|---|
security_last_trans_amount | 表示用户上一笔交易的总金额,不带货币符号。例如,如果用户的上一笔交易金额为 $100.30 USD,则此字段的预期值为 "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 格式。 | 列表(字符串) |
如需为此组件配置安全答案网络钩子,请展开查看相关说明。
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击网络钩子。
- 选择预构建_组件身份验证:security_answers 网络钩子。
- 将 Dialogflow 网络钩子网址字段中的网址替换为您要集成的服务的端点。从下拉菜单中选择合适的方法。
- 查看并更新请求正文,为网络钩子构建正确的请求格式。
- 查看并更新响应配置,以从 webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
- 查看并视需要更新 Authentication 设置。
- 点击保存。
双重验证
该组件会使用 prebuilt_components_authentication:2fa_validation
网络钩子来验证最终用户提供的用于双重身份验证的安全密钥。
API 请求参数
以下参数由组件提供,作为 API 请求的输入。
参数名称 | 说明 | 输入格式 |
---|---|---|
$session.params.phone_number | 用户的本地手机号码(不含国家/地区代码),用于识别用户。 | 字符串 |
$flow.security_key | 由最终用户提供的安全密钥,使用银行应用或身份验证器应用生成。 | 字符串 |
API 响应参数
以下参数是从 API 响应中提取的,供组件使用。
参数名称 | 说明 | 输出格式 |
---|---|---|
security_key_verified | 用于指明最终用户提供的安全密钥是否有效。true 表示提供的安全密钥有效。false 表示提供的安全密钥无效。 |
boolean |
如需为此组件配置双重验证 webhook,请展开查看相关说明。
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 选择管理标签页。
- 点击网络钩子。
- 选择 preview_components_authentication:2fa_validation 网络钩子。
- 将 Dialogflow 网络钩子网址字段中的网址替换为您要集成的服务的端点。从下拉菜单中选择合适的方法。
- 查看并更新请求正文,为网络钩子构建正确的请求格式。
- 查看并更新响应配置,以从 webhook 的响应中提取特定字段。请勿修改参数名称,因为组件需要这些名称才能访问返回的字段值。
- 查看并视需要更新 Authentication 设置。
- 点击保存。
完成
现在,您的代理及其 webhook 应该已设置完毕,可以进行测试了。