通过编程方式创建语音 Watson 服务的实例

安装 Watson 语音服务后,您必须在操作项目中创建至少一个 Watson 语音服务服务实例。 如果您是用户 IBM® Software Hub ,则可通过 REST API /v3/service_instances 调用以编程方式创建服务实例。

谁需要完成这项任务?
要通过调用 /v3/service_instances REST API 程序化地创建服务实例,您必须在 中拥有创建服务实例 IBM Software Hub (can_provision) 权限。
你需要在什么时候完成这项任务?
仅当您希望通过调用 /v3/service_instances REST API 程序化地创建服务实例时,才执行此任务。
创建服务实例的替代方法
  • 来自网页客户端。 有关更多信息,请阅从 Web 客户端创建语音服务实例 Watson。
  • 通过使用该 cpd-cli service-instance create 命令。 有关详细信息,请阅使用 cpd-cli service-instance create 命令为 Watson 语音服务创建服务实例。

完成此任务所需的信息

在创建 Watson 语音服务的服务实例之前,请先查看以下信息:

版本需求

与实例 IBM Software Hub 相关的所有组件必须在同一版本中安装或创建。 例如,如果在版本上安装了 Watson5.3.1 语音服务,则必须在版本上创建服务 5.3.1 实例。

重要提示: Watson 语音服务采用与 IBM Software Hub.不同的版本号。 本主题包含一张表格,显示每次刷新时对应的 Watson 语音 IBM Software Hub服务版本。 请根据已 IBM Software Hub 安装的版本,通过此表查找对应的正确版本。
环境变量

本任务中的命令使用环境变量,因此您可以完全按照所写的命令运行。

  • 若您尚未拥有定义环境变量的脚本,请参阅 《设置安装环境变量》
  • 要使用脚本中的环境变量,必须在本任务中运行命令之前加载这些环境变量。 例如,运行以下命令:
    source ./cpd_vars.sh

开始之前

此任务要求满足以下先决条件:

预备条件 在何处查找更多信息
Watson 语音服务已安装。 如果此任务尚未完成,请参阅安装 Watson 语音服务
您已生成一个 API 密钥。

API密钥必须关联到在 中拥有创建服务实例 IBM Software Hub(can_provision) 权限的用户。

如果此任务尚未完成,请参阅生成 API 授权令牌

过程

完成以下任务以创建服务实例:

  1. 创建服务实例
  2. 验证服务实例是否已创建
  3. 下一步该做什么

创建服务实例

要创建服务实例:

  1. 切换到工作站上您希望创建定义服务实例有效负载的 JSON 文件的目录。
  2. 设置用于填充服务实例 JSON 负载的环境变量:
    1. INSTANCE_NAME 环境变量设置为要用作服务实例显示名称的唯一名称:
      export INSTANCE_NAME="<display-name>"

      此名称显示在 Web IBM Software Hub 客户端的实例页面上。

      显示名称是一个字符串 string ,可以包含字母数字字符(a-z、A-Z、0-9)、连字符(-)和句点(.)。

      显示名称最多可包含10个字符。

    2. INSTANCE_VERSION 环境变量设置 IBM Software Hub 为与集群中版本对应的版本:
      export INSTANCE_VERSION=<version>

      请使用下表确定相应的数值:

      IBM Software Hub 版本 服务实例版本
      5.3.1 5.3.1
      5.3.0 5.3.0
    3. SPEECH_CR 环境变量设置为 Watson Speech services 自定义资源的名称:
      export SPEECH_CR=<resource-name>

      默认名称为 speech-cr。 不过,根据您是从较旧版本升级而来还是直接安装的新版本,您的名称可能会有所不同。 要检查自定义资源的名称,请运行:

      oc get WatsonSpeech --namespace=${PROJECT_CPD_INST_OPERANDS}
  3. 创建有效 speech-services-instance.json 负载文件:
    cat << EOF > ./speech-services-instance.json
    { 
        "addon_type": "speech-to-text",
        "namespace": "${PROJECT_CPD_INST_OPERANDS}",
        "addon_version": "${INSTANCE_VERSION}",
        "display_name": "${INSTANCE_NAME}",
        "create_arguments": {
            "deployment_id": "${PROJECT_CPD_INST_OPERANDS}-${SPEECH_CR}",
            "parameters" : {
                "serviceId": "speech-to-text",
                "url": "https://${SPEECH_CR}-gdpr-data-deletion.${PROJECT_CPD_INST_OPERANDS}.svc.cluster.local:443/v3/service_instances",
                "watson": true
        }
      },
    }
    EOF
    以下环境变量将使用您安装环境变量脚本中已定义的值:
    • ${PROJECT_CPD_INST_OPERANDS}
  4. PAYLOAD_FILE 环境变量设置为工作站上 JSON 有效负载文件的完全限定名称:
    export PAYLOAD_FILE=<fully-qualified-JSON-file-name>
  5. 设置用于连接目标 IBM Software Hub 服务实例所在实例的环境变量:
    1. 设置 CPD_ROUTE 环境变量:
      export CPD_ROUTE=$(oc get route cpd -n ${PROJECT_CPD_INST_OPERANDS} -o jsonpath={".spec.host"})

      该命令使用了已在您的安装环境变量脚本中定义的变量 PROJECT_CPD_INST_OPERANDS

    2. API_KEY 环境变量设置为您创建的 API 密钥:
      export API_KEY=<your_api_key>
  6. 从有效负载文件创建服务实例。

    您执行的命令取决于您要创建服务实例的实例所在位置 IBM Software Hub 所使用的证书类型——是自签名证书还是由受信任的证书颁发机构签发的证书。


    该实例使用由可信证书颁发机构签名的证书
    curl --request POST \
    --url "https://${CPD_ROUTE}/zen-data/v3/service_instances" \
    --header "Authorization: ZenApiKey ${API_KEY}" \
    --header 'Content-Type: application/json' \
    --data @${PAYLOAD_FILE}

    该实例使用自签名证书(默认)
    curl -k --request POST \
    --url "https://${CPD_ROUTE}/zen-data/v3/service_instances" \
    --header "Authorization: ZenApiKey ${API_KEY}" \
    --header 'Content-Type: application/json' \
    --data @${PAYLOAD_FILE}

    如果请求成功,该命令将返回以下 HTTP 响应代码之一:
    • 200 - 请求已成功完成,服务实例已配置完毕。
    • 202 - 请求已成功提交。 正在为服务实例分配资源。

    如果请求未成功,请使用响应 HTTP 代码确定原因。

验证服务实例是否已创建

验证服务实例是否已创建:

  1. INSTANCE_ID 环境变量设置为由命令 POSTcURL 返回的ID:
    export INSTANCE_ID=<ID-from-response>
  2. 获取服务实例的状态。

    您执行的命令取决于您要创建服务实例的实例所在位置 IBM Software Hub 所使用的证书类型——是自签名证书还是由受信任的证书颁发机构签发的证书。


    该实例使用由可信证书颁发机构签名的证书
    curl --request GET \
      --url "https://${CPD_ROUTE}/zen-data/v3/service_instances/${INSTANCE_ID}" \
      --header "Authorization: ZenApiKey ${API_KEY}" \
      --header 'Content-Type: application/json'

    该实例使用自签名证书(默认)
    curl -k --request GET \
      --url "https://${CPD_ROUTE}/zen-data/v3/service_instances/${INSTANCE_ID}" \
      --header "Authorization: ZenApiKey ${API_KEY}" \
      --header 'Content-Type: application/json'

    • 如果请求成功,该命令将返回以下 HTTP 响应代码: 200
      在 JSON 响应中查找该 provision_status 参数。
      • 如果值为 PROVISIONED,则服务实例创建成功。
      • 如果该 PROVISION_IN_PROGRESS值为,请等待几分钟后重新运行该命令。
      • 如果该 FAILED值为,请检查 和 zen-watcher Pod zen-core-api 的日志以排查可能原因。
    • 如果请求未成功,请使用响应 HTTP 代码确定原因。

下一步操作

服务实例已准备就绪,可供使用。 要开始使用 Watson 语音服务 ,请参阅 Watson 语音服务在 Cloud Pak for Data 上的说明。