驗證預建元件會收集使用者資訊,並根據所需驗證層級驗證使用者。這項元件涵蓋金融服務 (FSI) 產業常見 (但非專屬) 的驗證規定。這個元件會使用信用卡到期日收集、出生日期收集和電話號碼收集預先建構元件,收集及驗證使用者詳細資料。
驗證等級
不同的預建元件需要多個驗證層級,層級越高,需要的使用者資訊越多,才能驗證使用者。使用者可透過驗證元件,驗證至第 0 級 (ANI 比對)、第 1 級 (基本) 或第 2 級 (多重驗證),詳情請參閱「驗證等級」表格。
| 驗證等級 | 需求條件 |
|---|---|
| 等級 0:ANI 比對 | 使用者透過與註冊帳戶對應的電話號碼撥打電話或提供該電話號碼,即可通過驗證。 使用者可以使用預先建構的問候語元件通過第 0 級驗證。 |
| 第 1 級:基本 | 系統會將動態密碼傳送至使用者的電子郵件地址或電話號碼,並在驗證後完成使用者驗證程序。如果動態密碼驗證失敗,使用者可以回答四個安全性問題中的三個,以便成功驗證:出生日期、簽帳金融卡末四碼或信用卡到期日 (取決於他們是帳戶或持卡人)、上次交易金額,以及上次信用卡帳單付款方式。 |
| 第 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 級驗證。元件會傳送動態密碼至使用者選擇的管道,並要求使用者確認。使用者能提供有效的動態密碼,並成功通過第 1 等級驗證。
| 使用者輸入內容 | 代理回覆 |
|---|---|
| 基於安全考量,我們需要驗證你的身分,因此會傳送驗證碼給你。您希望透過電話還是電子郵件接收驗證碼? | |
| 電話 | |
| 我們已將驗證碼傳送至你註冊的電話號碼 (末四碼為 0000)。這可能需要幾秒鐘。可以請您確認代碼嗎? | |
| 驗證碼為 123457 | |
| 謝謝,您已成功通過驗證。 |
第 1 級驗證成功:安全性問題
元件會收集並驗證使用者提供的電話號碼,確認使用者是否通過第 0 級驗證。元件會要求使用者正確回答三個安全性問題 (出生日期、簽帳金融卡卡號末四碼和最後一筆交易金額),並驗證答案。使用者已成功通過第 1 級驗證。
| 使用者輸入內容 | 代理回覆 |
|---|---|
| 您是本行客戶,還是持有委託書?請回答「是」或「否」 | |
| 是 | |
| 好的,我們需要收集你的電話號碼,才能擷取帳戶詳細資料。 | |
| 虛擬服務專員使用電話號碼收集預先建構元件收集使用者的電話號碼 | |
| 好的,你剛才說的號碼是 +1 6502530000,對嗎? | |
| 是 | |
| 太好了,我們已收集到電話號碼。 好的,基於安全考量,我們需要更多資訊來驗證你的身分。 |
|
| 服務專員使用「收集出生日期」預建元件收集使用者的出生日期 | |
| 好的,你的出生日期是 1995 年 2 月 3 日,對嗎? | |
| 是 | |
| 好的,我們已收集你的出生日期。 請提供簽帳金融卡號碼的末四碼。 |
|
| 1234 | |
| 請告訴我們你最後一筆交易的金額。舉例來說,如果最近一筆交易金額為 $100.30 美元,請說「100」。 | |
| 500 美元 | |
| 謝謝,您已成功通過驗證。 |
第 2 級驗證成功:雙重驗證
使用者先前已通過第 1 級驗證。元件會要求使用者透過銀行或驗證器應用程式產生安全金鑰。使用者成功確認產生的安全金鑰,並通過第 2 級驗證。
| 使用者輸入內容 | 代理回覆 |
|---|---|
| 請提供安全金鑰。 請在銀行應用程式或驗證器應用程式中產生 6 位數安全金鑰,然後說出或輸入這些數字。 |
|
| 232425 | |
| 謝謝,您已成功通過驗證。 |
拒絕提供資訊
使用者拒絕提供驗證所需資訊。元件會結束並顯示失敗訊息。
命名慣例
這個預建元件採用下列命名慣例:
| 功能 | 格式 | 範例 |
|---|---|---|
| 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。 |
整數 |
如要設定這個元件的輸入參數,請展開查看操作說明。
- 開啟 Dialogflow CX 控制台。
- 選擇 Google Cloud 雲端專案。
- 選取代理。
- 選取「Build」(建構) 分頁標籤。
- 在「Flows」(流程) 部分,點選匯入的元件。
- 按一下「Pages」部分中的「Start Page」。
- 在「Start Page」中,點選「true」路徑。
- 在「Route」視窗中,視需要編輯「Parameter Presets」值。
- 按一下「儲存」。
輸出參數
輸出參數是工作階段參數,在退出元件後仍會保持有效。這些參數包含元件收集的重要資訊。這個預建元件會提供下列輸出參數的值:
| 參數名稱 | 說明 | 輸出格式 |
|---|---|---|
| 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 內建事件」。 |
字串 |
基本設定
如要設定這項預建元件,請按照下列步驟操作:
- 匯入預先建構的元件。
- 使用描述外部服務的設定,設定提供的彈性 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,請展開查看操作說明。
- 開啟 Dialogflow CX 控制台。
- 選擇 Google Cloud 雲端專案。
- 選取代理。
- 選取「管理」分頁標籤。
- 按一下「Webhooks」。
- 選取 prebuilt_components_authentication:telephony_verification Webhook。
- 將 Dialogflow CX「Webhook 網址」欄位中的網址,替換成要整合的服務端點。在下拉式選單中選取適當的「Method」。
- 查看並更新要求主體,為 Webhook 建立適當的要求格式。
- 查看並更新回應設定,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件需要這些名稱才能存取傳回的欄位值。
- 視需要查看及更新「驗證」設定。
- 按一下「儲存」。
取得信用卡詳細資料
元件會使用 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,請展開查看操作說明。
- 開啟 Dialogflow CX 控制台。
- 選擇 Google Cloud 雲端專案。
- 選取代理。
- 選取「管理」分頁標籤。
- 按一下「Webhooks」。
- 選取 prebuilt_components_account_services:get_credit_card_details Webhook。
- 將 Dialogflow CX「Webhook 網址」欄位中的網址,替換成要整合的服務端點。在下拉式選單中選取適當的「Method」。
- 查看並更新要求主體,為 Webhook 建立適當的要求格式。
- 查看並更新回應設定,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件需要這些名稱才能存取傳回的欄位值。
- 視需要查看及更新「驗證」設定。
- 按一下「儲存」。
傳送動態密碼
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,請展開查看操作說明。
- 開啟 Dialogflow CX 控制台。
- 選擇 Google Cloud 雲端專案。
- 選取代理。
- 選取「管理」分頁標籤。
- 按一下「Webhooks」。
- 選取 prebuilt_components_authentication:send_otp Webhook。
- 將 Dialogflow CX「Webhook 網址」欄位中的網址,替換成要整合的服務端點。在下拉式選單中選取適當的「Method」。
- 查看並更新要求主體,為 Webhook 建立適當的要求格式。
- 查看並更新回應設定,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件需要這些名稱才能存取傳回的欄位值。
- 視需要查看及更新「驗證」設定。
- 按一下「儲存」。
安全性問題答案
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,請展開查看操作說明。
- 開啟 Dialogflow CX 控制台。
- 選擇 Google Cloud 雲端專案。
- 選取代理。
- 選取「管理」分頁標籤。
- 按一下「Webhooks」。
- 選取 prebuilt_components_authentication:security_answers Webhook。
- 將 Dialogflow CX「Webhook 網址」欄位中的網址,替換成要整合的服務端點。在下拉式選單中選取適當的「Method」。
- 查看並更新要求主體,為 Webhook 建立適當的要求格式。
- 查看並更新回應設定,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件需要這些名稱才能存取傳回的欄位值。
- 視需要查看及更新「驗證」設定。
- 按一下「儲存」。
雙重驗證
元件會使用 prebuilt_components_authentication:2fa_validation Webhook,驗證使用者提供的雙重驗證安全金鑰。
API 要求參數
元件會提供下列參數,做為 API 要求的輸入內容。
| 參數名稱 | 說明 | 輸入格式 |
|---|---|---|
| $session.params.phone_number | 使用者的當地電話號碼 (不含國家/地區代碼),用於識別使用者。 | 字串 |
| $flow.security_key | 使用者提供的安全金鑰,使用銀行應用程式或驗證器應用程式產生。 | 字串 |
API 回應參數
系統會從 API 回應中擷取下列參數,供元件使用。
| 參數名稱 | 說明 | 輸出格式 |
|---|---|---|
| security_key_verified | 指出使用者提供的安全金鑰是否有效。true 表示提供的安全金鑰有效。false 表示提供的安全金鑰無效。 |
布林值 |
如要為這個元件設定雙重驗證用 Webhook,請展開查看操作說明。
- 開啟 Dialogflow CX 控制台。
- 選擇 Google Cloud 雲端專案。
- 選取代理。
- 選取「管理」分頁標籤。
- 按一下「Webhooks」。
- 選取 prebuilt_components_authentication:2fa_validation Webhook。
- 將 Dialogflow CX「Webhook 網址」欄位中的網址,替換成要整合的服務端點。在下拉式選單中選取適當的「Method」。
- 查看並更新要求主體,為 Webhook 建立適當的要求格式。
- 查看並更新回應設定,從 Webhook 的回應中擷取特定欄位。請勿修改參數名稱,因為元件需要這些名稱才能存取傳回的欄位值。
- 視需要查看及更新「驗證」設定。
- 按一下「儲存」。
完成
代理和 Webhook 應已設定完成,可以開始測試。