在 Docker 上部署 SMS Gateway

遵循以下指示信息针对本地环境在您自己的 Docker 引擎上部署 SMS Gateway。对于云部署,请参阅将 SMS Gateway 部署到 IBM Cloud Kubernetes Service 中的 Kubernetes

开始之前

部署 SMS 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. 切换到要部署 SMS Gateway 的目录,然后提取最新的 Docker 映像:

    docker pull ibmcom/voice-gateway-sms:latest
    
  3. 在机器上转至克隆了 sample.voice.gateway 存储库的目录,然后打开 sms/docker 目录,其中包含配置文件样本 docker-compose.yml

    样本文件已使用最低配置进行预配置,并指向最新映像。有关所有变量的完整列表,请参阅配置 SMS Gateway 的环境变量

  4. 将样本文件复制到已提取 Docker 映像的目录。
  5. 修改文件以配置 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
      
  6. 在已修改 docker-compose.yml 文件的目录中,创建 .env 文件并设置 EXTERNAL_IP 变量。这些命令假设您使用 vi 进行编辑,但是您可以使用任何编辑器。

    对于大多数 Docker 安装,所设置的 IP 地址是本地系统的 IP。对于在虚拟机中运行容器的 Docker 机器,请通过运行 docker-machine ip 命令来确定 VM 的 IP 地址。

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

      EXTERNAL_IP=<IP address of local system or Docker Machine VM>
      
    3. Esc 键以退出编辑方式,然后输入 :wq 以退出编辑器。
  7. 通过运行以下命令创建并启动容器:

    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

  1. 停止正在运行的 SMS Gateway 容器。

    docker stop
    
  2. 移除容器。

    docker rm vgw-sms-gateway
    
  3. 进行任何配置更新后,再次创建并启动容器。

    docker-compose up