將 Voice Gateway 部署在 Docker 上

這些指示用來在您自己的 Docker 引擎上,針對內部部署安裝架構,設置 IBM® Voice Gateway。若為雲端部署,請參閱將 Voice Gateway 部署到 IBM Cloud Kubernetes Service 中的 Kubernetes

開始之前

部署 Voice Gateway

  1. 僅適用於 Docker Machine:請先從指令行執行這個指令,將 Shell 設為指向「Docker 引擎」,您才能登入 Docker:

    Windows:

    @FOR /f "tokens=*" %i IN ('docker-machine env default --shell cmd') DO @%i
    

    UNIX 和 Mac OS X:

    eval "$(docker-machine env default)"
    
  2. 取出 SIP Orchestrator 和 Media Relay 最新的 Docker 映像檔,分別是 voice-gateway-sovoice-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
```
  1. 輸入 i,以切換至編輯模式。在 .env 檔頂端,加入下列字行:

    EXTERNAL_IP=<本端系統或 Docker Machine VM 的 IP 位址>
    
  2. 按下 Esc 鍵,結束編輯模式,並輸入 :wq,結束編輯器。

  1. 執行下列指令,以建立和啟動儲存器:

     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 整合的服務,您必須採取其他步驟,來維護其資料的安全。