驗證預先建構元件

驗證預建元件會向使用者收集資訊,以達到必要的驗證層級。這項元件涵蓋金融服務 (FSI) 產業常見 (但非專屬) 的驗證規定。這個代理會使用信用卡到期日收集、出生日期收集和電話號碼收集預先建構元件,收集並驗證使用者詳細資料。

驗證等級

不同的預建元件需要多個驗證層級,層級越高,需要的使用者資訊越多。

使用者可透過驗證元件,驗證至第 0 級 (ANI 比對)、第 1 級 (基本) 或第 2 級 (多重驗證),如下表所示:

驗證等級 需求條件
等級 0:ANI 比對 透過撥打或提供與註冊帳戶對應的電話號碼,驗證使用者身分。

使用者可以使用預先建構的問候語元件,驗證至第 0 級。
第 1 級:基本 驗證傳送至使用者電子郵件或電話號碼的動態密碼 (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 級驗證。

限制

除了常見的預建元件限制外,這項預建元件還有下列限制:

  • 動態密碼只會傳送至先前註冊帳戶時提供的手機號碼或電子郵件地址。如果客戶使用未在帳戶中註冊的其他電話號碼來電,該元件不會使用動態密碼驗證客戶身分。如果使用者透過備用電話號碼撥打電話,系統會透過安全性問題驗證使用者身分。
  • 這個元件不會加密資料。

對話範例

以下對話範例示範了這個預建元件處理的常見情境。對話方塊會顯示電話服務呼叫元件時的行為,這會觸發預設歡迎意圖,並在對話開始時觸發第一個代理回覆。

第 1 級驗證成功:動態密碼

  1. 元件會驗證使用者是否已通過第 0 級驗證。
  2. 元件會將動態密碼傳送至使用者選擇的管道。
  3. 元件會要求使用者確認動態密碼。
  4. 使用者提供有效的動態密碼,即可通過第 1 級驗證。
使用者輸入內容 代理回覆
基於安全考量,我們需要驗證你的身分,因此會傳送驗證碼給你。您希望透過電話還是電子郵件接收驗證碼?
電話
我們已將驗證碼傳送至你註冊的電話號碼 (末四碼為 0000)。請稍候片刻。可以請您確認代碼嗎?
驗證碼為 123457
謝謝,您已成功通過驗證。

第 1 級驗證成功:安全性問題

  1. 元件會收集並驗證使用者提供的電話號碼,確認使用者是否通過第 0 級驗證。
  2. 該元件會要求使用者正確回答三個安全性問題,並驗證答案,包括出生日期、簽帳金融卡卡號末四碼,以及最後一筆交易金額。
  3. 使用者成功通過第 1 級驗證。
使用者輸入內容 代理回覆
您是本銀行的客戶,還是持有委託書?請回答「是」或「否」來確認。
是
好的,我們需要收集你的電話號碼,才能擷取帳戶詳細資料。
代理使用電話號碼收集預建元件收集使用者的電話號碼。
好的,你剛才說的號碼是 +1 6502530000,對嗎?
是
太好了,電話號碼收集完畢。
好的,基於安全考量,我們需要更多資訊來驗證你的身分。
代理使用出生日期收集預建元件收集使用者的出生日期。
好的,你的出生日期是 1995 年 2 月 3 日,對嗎?
是
好的,我們已收集你的出生日期。
請提供簽帳金融卡號碼的末四碼。
1234
請提供最近一筆交易的金額。舉例來說,如果最後一筆交易金額為 $100.30 美元,請說「100」。
500 美元
謝謝,您已成功通過驗證。

第 2 級驗證成功:雙重驗證

  1. 使用者先前已通過第 1 級驗證。
  2. 使用者透過銀行應用程式或驗證器應用程式產生安全金鑰。
  3. 使用者向元件提供安全金鑰,以驗證至第 2 級。
使用者輸入內容 代理回覆
請提供安全金鑰。
請在銀行應用程式或驗證器應用程式中,產生 6 位數安全金鑰,然後說出或輸入這些數字。
232425
謝謝,您已成功通過驗證。

拒絕提供資訊

  1. 使用者拒絕提供驗證所需的資訊。
  2. 元件會結束並顯示失敗訊息。
使用者輸入內容 代理回覆
基於安全考量,我們需要驗證你的身分,因此會傳送驗證碼給你。您希望透過電話還是電子郵件接收驗證碼?
否,我不想分享
好的,基於安全考量,我們需要更多資訊來驗證你的身分。
代理使用出生日期收集預建元件收集使用者的出生日期。
好的,你的出生日期是 1995 年 2 月 3 日,對嗎?
是
好的,我們已收集你的出生日期。
請提供簽帳金融卡號碼的末四碼。
1234
請提供最近一筆交易的金額。舉例來說,如果最後一筆交易金額為 $100.30 美元,請說「100」。
我不想分享詳細資料
我們無法驗證你的身分,因此無法完成這項操作。不便之處,敬請見諒。

命名慣例

這個預建元件採用下列命名慣例:

功能 格式 範例
Flow [Component Name] 驗證
元件專屬意圖 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 的值,詳情請參閱「驗證層級」。 布林值
$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. 在「Flows」(流程) 部分,按一下匯入的元件。
  6. 按一下「Pages」部分中的「Start Page」。
  7. 在「Start Page」中,點選「true」路徑。
  8. 在「Route」視窗中,視需要編輯「Parameter Presets」值。
  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 網址。請參閱「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 與註冊電話號碼相關聯的帳戶數量。這類帳戶包括個人帳戶,以及使用者擁有委託書的帳戶。 整數
last_four_digit_of_account_number 如果使用者只有一個帳戶,系統會傳回帳號的末四碼。如果使用者有多個帳戶,這個參數的值會是 null。 字串
電子郵件 帳戶註冊的電子郵件地址。如果帳戶未註冊電子郵件地址,這個參數的值會是 null。 字串

如要為這個元件設定電話驗證 Webhook,請展開查看操作說明。

  1. 開啟 Dialogflow CX 控制台。
  2. 選擇 Google Cloud 雲端專案。
  3. 選取代理。
  4. 選取「管理」分頁標籤。
  5. 按一下「Webhooks」。
  6. 選取 prebuilt_components_authentication:telephony_verification Webhook。
  7. 將 Dialogflow CX「Webhook 網址」欄位中的網址,替換為要整合的服務端點。在下拉式選單中選取適當的「Method」。
  8. 查看並更新「Request body」(要求主體),為 Webhook 建立適當的要求格式。
  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. 按一下「Webhooks」。
  6. 選取 prebuilt_components_account_services:get_credit_card_details Webhook。
  7. 將 Dialogflow CX「Webhook 網址」欄位中的網址,替換為要整合的服務端點。在下拉式選單中選取適當的「Method」。
  8. 查看並更新「Request body」(要求主體),為 Webhook 建立適當的要求格式。
  9. 查看並更新回應設定,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件需要這些名稱才能存取傳回的欄位值。
  10. 視需要查看及更新「驗證」設定。
  11. 按一下「儲存」。

傳送動態密碼

prebuilt_components_authentication:send_otp Webhook 會將動態密碼 (OTP) 傳送至您選取的已註冊管道。

API 要求參數

元件會提供下列參數,做為 API 要求的輸入內容:

參數名稱 說明 輸入格式
$session.params.phone_number 使用者的當地電話號碼 (不含國家/地區代碼)。 字串
$flow.channel 使用者選擇接收動態密碼的管道。有效值由 prebuilt_components_authentication_channel 自訂實體定義。系統預設支援 email 和 mobile。 字串

API 回應參數

元件會從 API 回應中提取下列參數:

參數名稱 說明 輸出格式
generated_otp 系統產生並透過所選管道傳送給使用者的動態密碼值。 字串

如要為這個元件設定傳送動態密碼 Webhook,請展開查看操作說明。

  1. 開啟 Dialogflow CX 控制台。
  2. 選擇 Google Cloud 雲端專案。
  3. 選取代理。
  4. 選取「管理」分頁標籤。
  5. 按一下「Webhooks」。
  6. 選取 prebuilt_components_authentication:send_otp Webhook。
  7. 將 Dialogflow CX「Webhook 網址」欄位中的網址,替換為要整合的服務端點。在下拉式選單中選取適當的「Method」。
  8. 查看並更新「Request body」(要求主體),為 Webhook 建立適當的要求格式。
  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 使用者的出生日期,格式為 YYYY-MM-DD。 字串
cards_exp_date_all 使用者註冊的所有信用卡到期日,格式為 MMYYYY。 清單 (字串)

如要為這個元件設定安全性答案 Webhook,請展開查看操作說明。

  1. 開啟 Dialogflow CX 控制台。
  2. 選擇 Google Cloud 雲端專案。
  3. 選取代理。
  4. 選取「管理」分頁標籤。
  5. 按一下「Webhooks」。
  6. 選取 prebuilt_components_authentication:security_answers Webhook。
  7. 將 Dialogflow CX「Webhook URL」欄位中的網址,替換為要整合的服務端點。在下拉式選單中選取適當的「Method」。
  8. 查看並更新「Request body」(要求主體),為 Webhook 建立適當的要求格式。
  9. 查看並更新回應設定,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件需要這些名稱才能存取傳回的欄位值。
  10. 視需要查看及更新「驗證」設定。
  11. 按一下「儲存」。

雙重驗證

prebuilt_components_authentication:2fa_validation Webhook 可讓元件驗證使用者提供的雙重驗證安全金鑰。

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. 按一下「Webhooks」。
  6. 選取 prebuilt_components_authentication:2fa_validation Webhook。
  7. 將 Dialogflow CX「Webhook 網址」欄位中的網址,替換為要整合的服務端點。在下拉式選單中選取適當的「Method」。
  8. 查看並更新「Request body」(要求主體),為 Webhook 建立適當的要求格式。
  9. 查看並更新回應設定,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件需要這些名稱才能存取傳回的欄位值。
  10. 視需要查看及更新「驗證」設定。
  11. 按一下「儲存」。

完成

預建元件和其 Webhook 已設定完成,可以開始測試。