驗證預先建構元件

驗證預先建構元件會收集使用者資訊,將驗證層級提升至所需等級。這個元件涵蓋金融服務 (FSI) 業常見的驗證需求,但不限於此。這個元件會使用「信用卡到期日收集」、「出生日期收集」和「電話號碼收集」預先建構的元件,收集及驗證使用者詳細資料。

驗證等級

不同的預先建構元件需要多個驗證層級,層級越高,驗證使用者時需要的使用者資訊就越多。使用者可透過驗證元件,驗證至驗證等級表中所述的等級 0 (ANI 比對)、等級 1 (基本) 或等級 2 (多重驗證)。

驗證等級 需求條件
第 0 級:ANI 比對 使用者撥打電話或提供與已註冊帳戶相符的電話號碼,即可通過驗證。

使用者可以透過問候語預先建構元件,驗證至第 0 級。
第 1 級:基礎 使用者會驗證傳送至電子郵件地址或電話號碼的動態密碼 (OTP) 碼,藉此完成驗證。如果 OTP 驗證失敗,使用者可以回答四個安全問題中的三個,即可成功通過驗證:出生日期、簽帳金融卡或信用卡末四碼/有效期限 (視使用者為帳戶持有人或卡片持有人而定)、上次交易金額,以及上次信用卡帳單付款方式。
第 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 級驗證成功:動態密碼

使用者先前已通過第 0 級驗證。元件會傳送 OTP,並要求使用者確認已將 OTP 傳送至所選管道。使用者可以提供有效的動態密碼,並成功通過第 1 級驗證。

使用者輸入內容 代理回覆
為確保安全,我們需要驗證您的身分,因此會傳送驗證碼給您。你偏好透過電話還是電子郵件接收驗證碼?
電話
我們已將驗證碼傳送至您登錄的電話號碼 (末四碼為 0000)。請稍候片刻。請確認代碼。
驗證碼為 123457
謝謝,您已順利完成驗證。

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

元件會收集並驗證提供的電話號碼,確認使用者已完成第 0 級驗證。元件會要求使用者回答三道安全問題,並驗證答案是否正確,問題包括出生日期、簽帳卡號末四碼和最後一筆交易金額。使用者已成功通過第 1 級驗證。

使用者輸入內容 代理回覆
您是本行的客戶,還是持有授權書?請說「是」或「否」來確認。
是
好的,我們需要收集你的電話號碼,才能擷取帳戶詳細資料。
代理程式使用電話號碼收集預先建構的元件收集使用者的電話號碼
好的,你提到的號碼是 +1 6502530000,對嗎?
是
太好了,我們已收集電話號碼。
為了安全起見,我們需要更多資訊來驗證您的身分。
代理程式使用出生日期收集預先建構的元件,收集使用者的出生日期
好的,你的生日是 1995 年 2 月 3 日,對嗎?
是
好的,我們已收集您的生日。
請提供簽帳金融卡號碼的末四碼。
是 1234
請告訴我們你最近一筆交易的金額。舉例來說,如果上次交易金額為 $100.30 美元,請說出「100」。
當時是 500 美元
謝謝,您已順利完成驗證。

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

使用者先前已通過第 1 級驗證。這個元件會要求使用者透過銀行或驗證器應用程式產生安全金鑰。使用者成功確認產生的安全金鑰,並通過第 2 級驗證。

使用者輸入內容 代理回覆
請提供安全金鑰。
在銀行應用程式或驗證器應用程式中產生 6 位數安全金鑰,然後說出或輸入這些數字。
232425
謝謝,您已順利完成驗證。

拒絕提供資訊

使用者拒絕提供驗證所需的資訊。元件會結束並顯示失敗訊息。

使用者輸入內容 代理回覆
為確保安全,我們需要驗證您的身分,因此會傳送驗證碼給您。你偏好透過電話還是電子郵件接收驗證碼?
否,我不想分享
好的,為確保安全,我們需要更多資訊來驗證您的身分。
代理程式使用出生日期收集預先建構的元件,收集使用者的出生日期
好的,你的生日是 1995 年 2 月 3 日,對嗎?
是
好的,我們已收集您的生日。
請提供簽帳金融卡號碼的末四碼。
是 1234
請告訴我們你最近一筆交易的金額 (以美元計價)。舉例來說,如果上次交易金額為 $100.30 美元,請說出「100」。
我不想分享詳細資料
我們無法驗證您的身分,因此無法完成這項操作。不便之處,敬請見諒。

命名慣例

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

功能 格式 範例
Flow [元件名稱] 驗證
元件專屬意圖 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 指定未收到動態密碼時允許的重試次數。預設值為 1。 整數
$flow.max_retry_otp_count 指定收集動態密碼時允許的重試次數。預設值為 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 級驗證的動態密碼有效長度。預設值為 6。 整數

如要設定這個元件的輸入參數,請展開查看操作說明。

  1. 開啟 Dialogflow CX 控制台。
  2. 選擇 Google Cloud 雲端專案。
  3. 選取代理程式。
  4. 選取「Build」(建構) 分頁標籤。
  5. 在「流程」部分中,按一下匯入的元件。
  6. 按一下「頁面」部分中的「開始頁面」。
  7. 在「開始頁面」中,按一下「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 網路鉤子,根據提供的電話號碼擷取使用者帳戶詳細資料。

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 URL」欄位中的 Webhook 網址,換成要整合的服務端點。在下拉式選單中選取適當的「方法」。
  8. 查看並更新要求主體,為 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 網路鉤子。
  7. 將 Dialogflow CX「Webhook URL」欄位中的 Webhook 網址,換成要整合的服務端點。在下拉式選單中選取適當的「方法」。
  8. 查看並更新要求主體,為 Webhook 建立正確的要求格式。
  9. 查看並更新「回應設定」,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件必須使用這些名稱才能存取傳回的欄位值。
  10. 視需要檢查並更新「驗證」設定。
  11. 按一下「儲存」。

傳送動態密碼

元件會使用 prebuilt_components_authentication:send_otp Webhook,將動態密碼傳送至使用者選取的已註冊管道。

API 要求參數

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

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

API 回應參數

系統會從 API 回應中擷取下列參數,供元件使用。

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

如要為這個元件設定傳送 OTP 網路鉤子,請展開查看操作說明。

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

安全問題答案

prebuilt_components_authentication:security_answers 網路鉤子會由元件使用,從註冊帳戶中擷取使用者的安全問題答案。

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 網路鉤子。
  7. 將 Dialogflow CX「Webhook URL」欄位中的 Webhook 網址,換成要整合的服務端點。在下拉式選單中選取適當的「方法」。
  8. 查看並更新要求主體,為 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 網路鉤子。
  7. 將 Dialogflow CX「Webhook URL」欄位中的 Webhook 網址,換成要整合的服務端點。在下拉式選單中選取適當的「方法」。
  8. 查看並更新要求主體,為 Webhook 建立正確的要求格式。
  9. 查看並更新「回應設定」,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件必須使用這些名稱才能存取傳回的欄位值。
  10. 視需要檢查並更新「驗證」設定。
  11. 按一下「儲存」。

完成

代理程式和 Webhook 現在應已設定完成,可供測試。