在 Docker 上部署 Voice Gateway
这些指示信息用于在您自己的 Docker 引擎上设置 IBM® Voice Gateway 以进行本地安装。对于云部署,请参阅将 Voice Gateway 部署到 IBM Cloud Kubernetes Service 中的 Kubernetes。
开始之前
-
在计划运行网关的主机上安装 Docker。Docker 引擎为构成 Voice Gateway 的容器(SIP Orchestrator 和 Media Relay 提供轻量级运行时。支持 Docker Community Edition 和 Enterprise Edition V1.13 或更高版本。
Windows 系统:请注意,Docker for Windows 需要 64 位 Windows 10 Pro。在更低版本的 Windows 上,必须将 Docker 机器安装为 Docker 工具箱的一部分。在 Docker 机器上进行部署略有不同,如以下部署步骤中所述。
-
克隆或下载 sample.voice.gateway GitHub 存储库,其中包含样本 Watson Assistant 对话、配置文件和其他项目来帮助您入门。
-
注册 IBM 标识和 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 机器:要登录到 Docker,请首先从命令行运行该命令以将 shell 设置为指向 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 (
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
```
-
输入
i以切换到编辑方式。在.env文件的顶部,添加以下行:EXTERNAL_IP=<IP address of local system or Docker Machine VM> -
按 Esc 键以退出编辑方式,然后输入
:wq以退出编辑器。
-
通过运行以下命令创建并启动容器:
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 集成的服务中的数据。