配置多個服務提供者

您可以使用 JSON 配置內容,來配置 IBM® Voice Gateway,使其相依的每一項 Watson 服務都支援多個服務提供者。藉由多個服務提供者,一旦任何這些支援的服務中發生失敗,Voice Gateway 就可以使用備份服務。唯有使用 JSON 配置,才能支援多提供者配置,且無法透過環境變數來配置。

開始之前

瞭解如何使用 JSON 配置,並建立一個租戶配置 JSON 檔。如需相關資訊,請參閱在多租戶 JSON 配置中配置租戶

部署多租戶 JSON 配置。請參閱部署多租戶 JSON 配置

在不同的地理區域中建立多個 Watson 服務實例,以便能進行災難回復。

或者,請建立協力廠商語音辨識(語音轉文字)和語音合成(文字轉語音)服務。請參閱整合協力廠商的語音服務

配置多個提供者

您可以針對支援 Voice Gateway 的每一項服務,配置多個提供者。請參閱下列各節,取得每一項服務的配置檔範例。

提供者選擇原則

當通話期間原始服務執行失敗時,Voice Gateway 會使用所配置的提供者作為備份,而您可以使用 providerSelectionPolicy 內容,來定義這些提供者的順序,在 1.0.0.6 版中,只支援 sequential 原則。

配置多個 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 層次包含內容,來自訂每一個服務實例。或者,您可以在節點的根層次配置諸如 configbroadbandConfig 等內容,以便將定義套用在所有提供者之間。

下列程式碼範例顯示如何為您的 Voice Gateway 配置多個 Speech to Text 服務提供者。每一個提供者將使用相同的 configbroadbandConfig 定義。

"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"]
}