在 Docker 上部署 Voice Gateway

这些指示信息用于在您自己的 Docker 引擎上设置 IBM® Voice Gateway 以进行本地安装。对于云部署,请参阅将 Voice Gateway 部署到 IBM Cloud Kubernetes Service 中的 Kubernetes

开始之前

部署 Voice Gateway

  1. 仅 Docker 机器:要登录到 Docker,请首先从命令行运行该命令以将 shell 设置为指向 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 (voice-gateway-so) 和 Media Relay (voice-gateway-mr) 的最新 Docker 映像:

    ```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 工作空间标识,请转至 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 机器,通过运行 `docker-machine ip` 命令确定 VM 的 IP 地址。

   1. 输入以下命令以创建 `.env` 文件并将其打开进行编辑。
touch .env
vi .env
```
  1. 输入 i 以切换到编辑方式。在 .env 文件的顶部,添加以下行:

    EXTERNAL_IP=<IP address of local system or Docker Machine VM>
    
  2. Esc 键以退出编辑方式,然后输入 :wq 以退出编辑器。

  1. 通过运行以下命令创建并启动容器:

     docker-compose up
    

    提示:

    • 如果找不到 docker-compose 命令,那么必须安装 Docker Compose
    • 如果启动容器时看到 grpc:连接不可用错误,请重新启动 Docker 守护程序并重试命令。
    • 如果在启动时看到以下错误,说明您可能有另一个应用程序正在侦听端口 5060。关闭任何冲突的应用程序,并再次尝试该命令。
      Bind for 0.0.0.0:5060 failed: port is already allocated
      

后续操作

在 Docker 引擎上部署 Voice Gateway 之后,按 Voice Gateway 入门中的描述测试部署。

可以进一步配置 Voice Gateway 部署,方法是编辑 docker-compose.yml 文件以添加或更改配置变量,然后重新部署容器。可以通过设置 USE_OPTIMAL_CONFIGURATION 环境变量来使用最新发行版中包含的最佳配置设置。请参阅使用最佳配置设置

保护敏感信息:缺省情况下 Text to Speech 高速缓存和音频录制集合均已禁用。如果启用这些功能,请采取相应的措施以在部署 Voice Gateway 时保护和缓解敏感数据。建议对 Voice Gateway 部署所在的磁盘进行加密。硬盘加密可以保护文件系统中高速缓存的任何录制或文字转语音响应,因为它们可能包含敏感信息。加密硬盘仅会加密 Voice Gateway 中存储的数据。您必须采取其他步骤来保护与 Voice Gateway 集成的服务中的数据。