在 Docker 上部署 SMS Gateway
遵循以下指示信息针对本地环境在您自己的 Docker 引擎上部署 SMS Gateway。对于云部署,请参阅将 SMS Gateway 部署到 IBM Cloud Kubernetes Service 中的 Kubernetes。
开始之前
-
使用 SMS 功能创建电话号码,并且按照 SMS Gateway 入门中所述创建 IBM Watson™ Assistant 服务。
-
在计划运行网关的主机上安装 Docker。Docker 引擎为 SMS Gateway 容器提供轻量级运行时。
Windows 系统:请注意,Docker for Windows 需要 64 位 Windows 10 Pro。在更低版本的 Windows 上,必须将 Docker 机器安装为 Docker 工具箱的一部分。在 Docker 机器上进行部署略有不同,如以下部署步骤中所述。
-
克隆或下载 sample.voice.gateway GitHub 存储库,其中包含样本 Watson Assistant 对话、配置文件和其他项目来帮助您入门。
-
确保以下任一端口可供连接到您的 SMS 提供程序:
- 受保护连接:端口 9443
- 不受保护连接:端口 9080
部署 SMS Gateway
-
仅 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)"
-
切换到要部署 SMS Gateway 的目录,然后提取最新的 Docker 映像:
docker pull ibmcom/voice-gateway-sms:latest
-
在机器上转至克隆了 sample.voice.gateway 存储库的目录,然后打开
sms/docker
目录,其中包含配置文件样本docker-compose.yml
。样本文件已使用最低配置进行预配置,并指向最新映像。有关所有变量的完整列表,请参阅配置 SMS Gateway 的环境变量。
- 将样本文件复制到已提取 Docker 映像的目录。
-
修改文件以配置 Watson Assistant、SMS 提供程序和租户电话号码。
-
对于 Watson Assistant,请指定服务凭证和工作空间标识。有关如何查找服务凭证的信息,请参阅 Watson 服务的服务凭证。
提示:要查找 Watson Assistant 工作空间标识,请转至 Watson Assistant 工具中的“工作空间”视图。在要集成的工作空间上,单击“操作”图标 (⋮) 并选择查看详细信息。
例如:
environment: - WATSON_CONVERSATION_URL=https://gateway.watsonplatform.net/conversation/api/ - WATSON_CONVERSATION_USERNAME=9h7f54cb-d9ed-46b3-8492-e9a9bf555021 - WATSON_CONVERSATION_PASSWORD=InWtiUpYhF1Z - WATSON_CONVERSATION_WORKSPACE_ID=a23de67h-e527-40d5-a867-5c0ce9e72d0d
-
对于 SMS 提供程序,指定 API URL 和登录凭证。
用户名映射到帐户 SID,密码映射到认证令牌。可以在 SMS 提供程序的控制台上找到这两个值。
例如:
- SMS_PROVIDER_URL=https://api.twilio.com - SMS_PROVIDER_USERNAME=A23de67h0236e5e7c7f1ead4499h7f54cb - SMS_PROVIDER_PASSWORD=9h7f54cb3b1d3736e19ac64aa23de67h
-
对于租户电话号码,从 SMS 提供程序指定完整电话号码。使用 SMS 提供程序所需的确切数字格式。例如,要指定 Twilio 电话号码,请包含加号 (+) 以及国家或地区和区域代码。对于 RestcommONE,请勿包含加号 (+)。
例如:
- TENANT_PHONE_NUMBER=+12345556789
-
可选:如果要允许用户通过向网关发送 SMS 消息来创建 SMS 会话,请将
ALLOW_SESSION_CREATE_VIA_SMS
设置为true
。缺省情况下,只能使用 REST API 来创建 SMS 会话。例如:
- ALLOW_SESSION_CREATE_VIA_SMS=true
-
-
在已修改
docker-compose.yml
文件的目录中,创建.env
文件并设置EXTERNAL_IP
变量。这些命令假设您使用vi
进行编辑,但是您可以使用任何编辑器。对于大多数 Docker 安装,所设置的 IP 地址是本地系统的 IP。对于在虚拟机中运行容器的 Docker 机器,请通过运行
docker-machine ip
命令来确定 VM 的 IP 地址。- 输入以下命令以创建
.env
文件并将其打开进行编辑。touch .env vi .env
-
输入
i
以切换到编辑方式。在.env
文件的顶部,添加以下行:EXTERNAL_IP=<IP address of local system or Docker Machine VM>
- 按 Esc 键以退出编辑方式,然后输入
:wq
以退出编辑器。
- 输入以下命令以创建
-
通过运行以下命令创建并启动容器:
docker-compose up
启动容器后,您将会在 SMS Gateway 服务器部署时看到许多消息。
提示:
- 如果找不到
docker-compose
命令,那么必须安装 Docker Compose。 - 如果您在启动容器时看到
grpc: the connection is unavailable
错误,请重新启动 Docker 守护程序并重试命令。 - 如果您在启动时看到以下错误,那么可能有另一个应用程序正在侦听指定端口。关闭任何冲突的应用程序,并再次尝试该命令。
Bind for 0.0.0.0:9080 failed: port is already allocated
- 如果找不到
后续操作
在 Docker 上部署 SMS Gateway 后,设置 Webhook 并测试部署,如 SMS Gateway 入门中所述。
可以进一步配置 SMS Gateway 部署,方法是编辑 docker-compose.yml
文件以添加或更改配置变量,然后重新部署容器。
重新部署 SMS Gateway
-
停止正在运行的 SMS Gateway 容器。
docker stop
-
移除容器。
docker rm vgw-sms-gateway
-
进行任何配置更新后,再次创建并启动容器。
docker-compose up