配置多個服務提供者
您可以使用 JSON 配置內容,來配置 IBM® Voice Gateway,使其相依的每一項 Watson 服務都支援多個服務提供者。藉由多個服務提供者,一旦任何這些支援的服務中發生失敗,Voice Gateway 就可以使用備份服務。唯有使用 JSON 配置,才能支援多提供者配置,且無法透過環境變數來配置。
開始之前
瞭解如何使用 JSON 配置,並建立一個租戶配置 JSON 檔。如需相關資訊,請參閱在多租戶 JSON 配置中配置租戶。
部署多租戶 JSON 配置。請參閱部署多租戶 JSON 配置。
在不同的地理區域中建立多個 Watson 服務實例,以便能進行災難回復。
- Speech to Text
- Text to Speech(僅適用於自助式)
- IBM Watson™ Assistant(僅適用於自助式)
或者,請建立協力廠商語音辨識(語音轉文字)和語音合成(文字轉語音)服務。請參閱整合協力廠商的語音服務
配置多個提供者
您可以針對支援 Voice Gateway 的每一項服務,配置多個提供者。請參閱下列各節,取得每一項服務的配置檔範例。
提供者選擇原則
當通話期間原始服務執行失敗時,Voice Gateway 會使用所配置的提供者作為備份,而您可以使用
providerSelectionPolicy 內容,來定義這些提供者的順序,在 1.0.0.6 版中,只支援
sequential 原則。
sequential:Voice Gateway會從 JSON 配置檔中所列出的第一項服務開始,如果第一項服務失敗,就會移至第二項。Voice Gateway 會依照列出順序來嘗試執行服務提供者,直到抵達清單尾端為止。
配置多個 Watson Assistant 服務提供者
下列程式碼範例顯示啟用了記號鑑別之多項 Watson Assistant 服務的配置,其中一項服務位於 Dallas,且備份位於 Washington DC。
"conversation": {
"providerSelectionPolicy" : "sequential",
"providers": [
{
"name": "dallas",
"providerType": "watson",
"url": "https://gateway.watsonplatform.net/assistant/api",
"password": "Qa55C0s473",
"username": "8yw76lm-n5op-43q2-1098-r7s6tu543457",
"tokenAuthEnabled": true,
"tokenServiceProviderUrl": "https://gateway.watsonplatform.net/authorization/api/v1/token",
"tokenServiceUrl": "https://gateway.watsonplatform.net/assistant/api"
}
{
"name" : "washington-dc",
"providerType": "watson",
"url": "https://gateway.watsonplatform.net/conversation/api",
"workspaceID": "z26hg87f-d456-91a2-k999-1a0bc9d87e6f",
"password": "Pa55C0d345",
"username": "9j8k76lm-n5op-43q2-1098-r7s6tu543210",
"tokenAuthEnabled": true,
"tokenServiceProviderUrl": "https://gateway.watsonplatform.net/authorization/api/v1/token",
"tokenServiceUrl": "https://gateway.watsonplatform.net/conversation/api"
}
]
}
動態配置多項 Watson Assistant 服務
在通話期間,當您切換至新的 Watson Assistant 服務時,您也可以在 vgwActSetConversationConfig 指令中動態配置多個提供者。請參閱
動態配置多項 Watson Assistant 服務,取得有關動態配置多項 Watson Assistant 服務的程式碼範例和相關資訊。
配置多個 Speech to Text 服務提供者
您可以在 provider 層次包含內容,來自訂每一個服務實例。或者,您可以在節點的根層次配置諸如 config 和 broadbandConfig 等內容,以便將定義套用在所有提供者之間。
下列程式碼範例顯示如何為您的 Voice Gateway 配置多個 Speech to Text 服務提供者。每一個提供者將使用相同的 config 和 broadbandConfig 定義。
"stt": {
"config": {
"model": "en-US_NarrowbandModel",
"profanity_filter": true,
"smart_formatting": true,
"x-watson-learning-opt-out": true,
"max_alternatives": 2.0
},
"broadbandConfig": {
"model": "en-US_BroadbandModel",
"profanity_filter": true,
"smart_formatting": true,
"x-watson-learning-opt-out": true,
"max_alternatives": 2.0
},
"providerSelectionPolicy" : "sequential",
"providers" : [
{
"name" : "dallas",
"credentials": {
"url": "https://stream.watsonplatform.net/speech-to-text/api",
"username": "8yw76lm-n5op-43q2-1098-r7s6tu543457",
"password": "Qa55C0s473",
"tokenAuthEnabled": true,
"tokenServiceProviderUrl": "https://stream.watsonplatform.net/authorization/api/v1/token",
"tokenServiceUrl": "https://stream.watsonplatform.net/speech-to-text/api"
},
"config": {
"customization_id": "34a5678-bc90-12d3-ef4g-56hij7k8l90m"
},
"broadbandConfig": {
"customization_id": "34a5678-bc90-12d3-ef4g-56hij7k8l90m"
}
},
{
"name" : "washington-dc",
"credentials": {
"url": "https://stream.watsonplatform.net/speech-to-text/api",
"username": "9j8k76lm-n5op-43q2-1098-r7s6tu543210",
"password": "Pa55C0d345",
"tokenAuthEnabled": true,
"tokenServiceProviderUrl": "https://stream.watsonplatform.net/authorization/api/v1/token",
"tokenServiceUrl": "https://stream.watsonplatform.net/speech-to-text/api"
},
"config": {
"customization_id": "34a5678-bc90-12d3-ef4g-56hij7k8l90m"
},
"broadbandConfig": {
"customization_id": "34a5678-bc90-12d3-ef4g-56hij7k8l90m"
}
}
]
}
與語音轉文字配接器連接
如果您將 Voice Gateway 連接至語音轉文字配接器,您可以在提供者層次設定 thirdPartyCredentials 選項,以便將您的外部服務與 Voice Gateway 整合在一起。
"stt": {
"credentials": {
"url": "https://localhost:4000",
"username": "myUsername",
"password": "myPassword"
},
"config": {
"languageCode": "en-US"
},
"broadbandConfig": {
"languageCode": "en-US"
},
"providerSelectionPolicy" : "sequential",
"providers" : [
{
"name" : "google-south",
"thirdPartyCredentials": {
"type": "service_account",
"project_id": "my_google_project",
"private_key_id": "d2e45f67gh8i90123j4klm565opq7rs8901t1234",
"private_key": "-----BEGIN PRIVATE ... \n-----END PRIVATE KEY-----\n",
"client_email": "developer1@my_google_project.iam.gserviceaccount.com",
"client_id": "100033044440506077880901",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/developer1@my_google_project.iam.gserviceaccount.com"
}
},
{
"name" : "google-west",
"thirdPartyCredentials": {
"type": "service_account",
"project_id": "my_google_project",
"private_key_id": "d2e45f67gh8i90123j4klm565opq7rs8901t1234",
"private_key": "-----BEGIN PRIVATE ... \n-----END PRIVATE KEY-----\n",
"client_email": "developer1@my_google_project.iam.gserviceaccount.com",
"client_id": "100033044440506077880901",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/developer1@my_google_project.iam.gserviceaccount.com"
}
}
]
}
配置多個 Text to Speech 服務提供者
您可以在 provider 層次包含內容,來自訂每一個服務實例。或者,您可以在節點的根層次配置諸如 config 等內容,以便將定義套用在所有提供者之間。
下列程式碼範例顯示如何為您的 Voice Gateway 配置多個 Text to Speech 服務提供者。
{
"tts": {
"config": {
"voice": "en-US_MichaelVoice"
},
"providerSelectionPolicy" : "sequential",
"providers" : [
{
"name" : "dallas",
"credentials": {
"url": "https://stream.watsonplatform.net/text-to-speech/api",
"username": "8yw76lm-n5op-43q2-1098-r7s6tu543457",
"password": "Qa55C0s473",
"tokenAuthEnabled": true,
"tokenServiceProviderUrl": "https://stream.watsonplatform.net/authorization/api/v1/token",
"tokenServiceUrl": "https://stream.watsonplatform.net/text-to-speech/api"
}
},
{
"name" : "washington-dc",
"credentials": {
"url": "https://stream.watsonplatform.net/text-to-speech/api",
"username": "9j8k76lm-n5op-43q2-1098-r7s6tu543210",
"password": "Pa55C0d345",
"tokenAuthEnabled": true,
"tokenServiceProviderUrl": "https://stream.watsonplatform.net/authorization/api/v1/token",
"tokenServiceUrl": "https://stream.watsonplatform.net/text-to-speech/api"
}
}
]
}
}
與文字轉語音配接器連接
如果您將 Voice Gateway 連接至文字轉語音配接器,您可以在提供者層次設定 thirdPartyCredentials 選項,以便將您的外部服務與 Voice Gateway 整合在一起。
{
"tts": {
"credentials": {
"url": "https://localhost:4000",
"username": "myUsername",
"password": "myPassword"
},
"config": {
"voice": "en-US_MichaelVoice"
},
"providerSelectionPolicy" : "sequential",
"providers" : [
{
"thirdPartyCredentials": {
"type": "service_account",
"project_id": "my_google_project",
"private_key_id": "d2e45f67gh8i90123j4klm565opq7rs8901t1234",
"private_key": "-----BEGIN PRIVATE ... \n-----END PRIVATE KEY-----\n",
"client_email": "developer1@my_google_project.iam.gserviceaccount.com",
"client_id": "100033044440506077880901",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/developer1@my_google_project.iam.gserviceaccount.com"
}
},
{
"thirdPartyCredentials": {
"type": "service_account",
"project_id": "my_google_project",
"private_key_id": "d2e45f67gh8i90123j4klm565opq7rs8901t1234",
"private_key": "-----BEGIN PRIVATE ... \n-----END PRIVATE KEY-----\n",
"client_email": "developer1@my_google_project.iam.gserviceaccount.com",
"client_id": "100033044440506077880901",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/developer1@my_google_project.iam.gserviceaccount.com"
}
}
]
}
}
使用「通話詳細記錄」來監視效能
「通話詳細記錄 (CDR)」事件含有在通話期間所使用的提供者。您可以檢查 CDR 事件報告,以查看通話中所使用的提供者,以及其使用順序。
附註:如果只使用文字轉語音快取,則所傳回的 ttsProvidersUsed 欄位可能是空的。
每一筆項目各是通話期間所使用的提供者陣列,會依其使用順序列出。請參閱從 Voice Gateway 報告通話詳細記錄事件。下列範例顯示 CDR 事件報告中如何記錄提供者。
"event": {
"conversationProvidersUsed" : ["dallas"],
"sttProvidersUsed" : ["dallas"],
"ttsProvidersUsed" : ["dallas","washington-dc"]
}