將 Voice Gateway 部署在 Docker 上
這些指示用來在您自己的 Docker 引擎上,針對內部部署安裝架構,設置 IBM® Voice Gateway。若為雲端部署,請參閱將 Voice Gateway 部署到 IBM Cloud Kubernetes Service 中的 Kubernetes。
開始之前
-
將 Docker 安裝在您打算執行閘道的主機上。「Docker 引擎」可為構成 Voice Gateway 的儲存器(SIP Orchestrator 和 Media Relay),提供一個小型執行時期。支援 Docker Community Edition 和 Enterprise Edition 1.13 版或更新版本。
Windows 系統:請注意,Docker for Windows 需要 64 位元 Windows 10 專業版。在舊版 Windows 上,您必須安裝 Docker Machine 而成為「Docker 工具箱」的一部分。如部署步驟中所述,部署在 Docker Machine 上會略有不同。
-
複製或下載 sample.voice.gateway GitHub 儲存庫,其中含有範例 Watson Assistant 對話、配置檔以及其他項目,有助於您著手進行。
-
註冊取得 IBMid 和 IBM Cloud 帳戶,並建立下列 Watson 服務:
- Speech to Text
- Text to Speech(僅適用於自助式)
- Watson Assistant(僅適用於自助式)
請記下您建立的每一個服務的認證。您需要在 Voice Gateway 配置中指定認證。
重要事項:對於 Watson Assistant,您需要新增一個具有對話的工作區。若要快速著手進行,可從您複製的 sample.voice.gateway GitHub 儲存庫,匯入 conversation/sample-conversation-en.json 檔。若想進一步瞭解如何匯入 JSON 檔案,請參閱 Watson Assistant 說明文件中的建立工作區。如果您建置自己的對話,而不使用範例,請確定您的對話包含具有
conversation_start條件的節點以及具有預設回應的節點。 -
如果您打算在防火牆保護下部署 Voice Gateway,並且想透過位於防火牆外的 SIP 幹線或 SIP 用戶端連接該閘道,請確定所有必要埠都已開啟。如需相關資訊,請參閱防火牆的埠設定。
部署 Voice Gateway
-
僅適用於 Docker Machine:請先從指令行執行這個指令,將 Shell 設為指向「Docker 引擎」,您才能登入 Docker:
Windows:
@FOR /f "tokens=*" %i IN ('docker-machine env default --shell cmd') DO @%iUNIX 和 Mac OS X:
eval "$(docker-machine env default)" -
取出 SIP Orchestrator 和 Media Relay 最新的 Docker 映像檔,分別是
voice-gateway-so和voice-gateway-mr:```bash docker pull ibmcom/voice-gateway-so:latest
docker pull ibmcom/voice-gateway-mr:latest
1. 在您的機器上,移至您所複製之 sample.voice.gateway 儲存庫所在的目錄,並開啟 `docker` 目錄,其中含有下列的範例配置檔:
* `docker-compose-self-service.yml`
* `docker-compose-agent-assist.yml`
這些範例檔已預先配置,其中含有每一項實作的最低配置,並指向 Voice Gateway 最新的映像檔。您需要針對您的實作類型修改檔案,以便包含您的 [Watson 服務認證](https://cloud.ibm.com/docs/services/watson?topic=watson-creating-credentials)。對於代理程式助理,另請配置[轉錄報告事件](rttconfig.md)。
1. 將您實作類型相關的檔案複製到名為 `docker-compose.yml` 的新檔案。將該檔案保留在相同目錄中。
1. 在新的 `docker-compose.yml` 檔中,填寫任何空白的環境變數,例如:您 Watson 服務的認證。
```yml
...
# Creds for IBM Cloud STT Example
#If you have a username and password specified in your service use
- WATSON_STT_USERNAME=9h7f54cb-5epb-80d6-45c3-da41d2bf7a71
- WATSON_STT_PASSWORD=asxNzDLpIJ6F
- WATSON_STT_URL=https://stream.watsonplatform.net/speech-to-text/api
#Otherwise if you have an apikey associated with your service use
- WATSON_STT_APIKEY=MssmPWlXKeXkOeeZ1o93va5kSAzlqMSligZkso_FSopY
- WATSON_STT_TOKEN_SERVICE_PROVIDER_URL=https://iam.cloud.ibm.com/identity/token
- WATSON_STT_URL=https://stream.watsonplatform.net/speech-to-text/api
...
如需含有所有變數的完整清單,請參閱[配置環境變數](config.md)。
**提示:**如果要尋找 Watson Assistant 工作區 ID,請移至 Watson Assistant 工具內的「工作區」視圖。在您想整合的技能上,按一下「動作」圖示 (**⋮**),選取**檢視詳細資料**。
**附註:**對於 `docker-compose.yml` 檔中的 `WATSON_CONVERSATION_URL` 配置參數,請只使用 URI 部分,最多包含 `api` 層次。例如:
```yml
- WATSON_CONVERSATION_URL=https://gateway.watsonplatform.net/conversation/api
```
**重要事項:**如果您正在部署至公用雲端,也務必要定義白名單變數,以阻止阻斷式服務 (DOS) 攻擊和發自外部來源之其他不樂見的階段作業,因為這些可能產生不必要的 Watson 服務費用,並影響 Voice Gateway 效能。依預設,在 Compose 檔案中會註銷這些變數。
```yml
- WHITELIST_TO_URI=2345556789
如需相關資訊,請參閱[將發話端和受話端列在白名單中](security.md#whitelisting-callers-and-callees)
1. 在您修改了 `docker-compose.yml` 檔的目錄中,建立 `.env` 檔,並設定 `EXTERNAL_IP` 變數。這些指令會假設您是使用 `vi` 來編輯,但是您可以使用任何編輯器。
對於大部分的 Docker 安裝架構,您所設定的 IP 位址會是您本端系統的 IP。若為在虛擬機器中執行儲存器的 Docker Machine,請執行 `docker-machine ip` 指令,以判斷 VM 的 IP 位址。
1. 請輸入下列指令,以建立 `.env` 檔,並開啟這個檔案來編輯。
touch .env
vi .env
```
-
輸入
i,以切換至編輯模式。在.env檔頂端,加入下列字行:EXTERNAL_IP=<本端系統或 Docker Machine VM 的 IP 位址> -
按下 Esc 鍵,結束編輯模式,並輸入
:wq,結束編輯器。
-
執行下列指令,以建立和啟動儲存器:
docker-compose up提示:
- 如果找不到
docker-compose指令,您必須安裝 Docker Compose。 - 如果在啟動儲存器時看到
grpc: the connection is unavailable錯誤,請重新啟動 Docker 常駐程式並重試指令。 - 如果您在啟動時看到下列錯誤,可能是另有應用程式正在埠 5060 接聽。請關閉任何衝突的應用程式,並重試該指令。
Bind for 0.0.0.0:5060 failed: port is already allocated
- 如果找不到
下一步
將 Voice Gateway 部署在「Docker 引擎」上之後,請依照 Voice Gateway 入門中的說明,測試您的部署。
您可編輯 docker-compose.yml 檔來新增或變更配置變數以進一步配置 Voice Gateway 部署,然後重新部署儲存器。您可以設定 USE_OPTIMAL_CONFIGURATION 環境變數,以使用最新版本隨附的最佳配置設定。請參閱使用最佳配置設定。
保護機密性資訊:依預設,Text to Speech 快取和錄音收集都是停用的。如果您啟用這些特性,在您部署 Voice Gateway 時,請採取適當的措施來保護機密資料和減輕風險。建議您將 Voice Gateway 部署所在的磁碟加密。硬碟加密可保護檔案系統中所快取的任何錄音或文字轉語音回應,因為它們可能包含機密性資訊。將硬碟加密時,只會加密儲存在 Voice Gateway 中的資料。對於與 Voice Gateway 整合的服務,您必須採取其他步驟,來維護其資料的安全。