更新时间:2024-11-26 GMT+08:00

智能交互驱动WebSocket接口

终端节点获取方式

智能交互驱动WebSocket接口终端节点的获取方式,如表1所示。

表1 终端节点获取方式

场景

获取方式

未通过WEB SDK调用场景

终端节点地址从接口StartSmartChatJob.xml的响应参数chat_access_address中获取。

通过WEB SDK调用场景

终端节点地址从智能交互SDK的通知jobInfoChangejobInfoChange的参数websocketAddr中获取。

功能介绍

该接口用于创建用户与数字人对话的WebSocket连接,驱动数字人对话。

调用方法

可选用下述一种方法,调用本接口:

URI

/v1/{project_id}/digital-human-chat/chat-command/{job_id}

表2表3表4是WebSocket建连时携带的参数。

表2 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,获取方法请参考获取项目ID

job_id

String

任务ID。在Web SDK的create接口入参eventListeners中,监听jobInfoChange事件通知,用于获取任务ID。

表3 Query参数

参数

是否必选

参数类型

描述

token

String

一次性token,获取方法请参考创建一次性鉴权码

须知:

使用JavaScript开发时,请使用一次性鉴权码认证方式。

表4 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。通过调用IAM服务获取用户Token接口获取,响应消息头中X-Subject-Token的值。

请求参数

表5表6表7中的请求参数为WebSocket建连成功后,用户与数字人对话的请求参数。

表5 请求Message参数

参数

是否必选

参数类型

描述

request_id

String

请求ID。

payload

RequestPayloadInfo object

请求负载信息。

表6 RequestPayloadInfo

参数

是否必选

参数类型

描述

job_id

String

任务ID。获取方法请参考获取任务ID

robot_id

String

应用ID。从数字人互动页面URL中获取,URL的获取方式,请参见《用户指南》的“创建智能交互数字人”章节。

chat_id

String

对话ID。

command

String

操作命令。

包含如下命令:

  • TEXT_DRIVE:文本驱动
  • INTERRUPT_CHAT:中断对话
  • STOP_CHAT:停止对话

data

ChatReqDataInfo object

对话请求数据信息。

表7 ChatReqDataInfo

参数

是否必选

参数类型

描述

text

String

文本信息。

seq

Integer

数据包序号。

is_last

Boolean

判断是否为最后一个文本。

响应参数

状态码: 101

表8 响应Header参数

参数

参数类型

描述

X-Request-Id

String

请求ID。

表9 响应Message参数

参数

参数类型

描述

error_code

String

错误码。

error_msg

String

错误描述。

request_id

String

请求ID。

payload

ResponsePayloadInfo object

响应负载信息。

表10 ResponsePayloadInfo

参数

参数类型

描述

job_id

String

任务ID。

chat_id

String

对话ID。

command

String

操作命令。

包含如下命令:

  • START_CHAT:开始对话
  • TEXT_DRIVE_RSP:文本驱动响应
  • START_SPEAKING:开始讲话
  • STOP_SPEAKING:结束讲话
  • INTERRUPT_CHAT_RSP:中断对话响应
  • STOP_CHAT_RSP:停止对话响应
  • JOB_FINISHED:结束任务
  • PING:心跳请求
  • PONG:心跳响应

请求示例

  1. 用户请求建立与数字人对话的WebSocket连接。

    代码示例如下所示:

    wss://metastudio-api.cn-north-4.myhuaweicloud.com/v1/70b76xxxxxx34253880af501cdxxxxxx/digital-human-chat/chat-command/e37a28485f684769aa537466e719629d
  2. 等MetaStudio返回可以发送启动对话的消息时,如2所示。用户发送文本驱动消息。
    代码示例如下所示:
    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "job_id": "e37a28485f684769aa537466e719629d",
            "robot_id": "2c9d60818b365847018b365f40320000",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
            "command": "TEXT_DRIVE",
            "data": {
                "text": "您好,我是您的分身数字人",
                "seq": 1,
                "is_last": true
            }
        }
    }

响应示例

状态码:101

  1. MetaStudio接收WebSocket建立连接的请求后,如1所示,返回响应消息。
    代码示例如下所示:
    {
        "error_code": "MSS.00000000",
        "error_msg": "success",
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf"
    }
  2. MetaStudio发送启动对话的消息。
    代码示例如下所示:
    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "START_CHAT",
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
        }
    }
  3. MetaStudio收到用户发送的文本驱动消息时,如请求示例-2所示。MetaStudio返回文本驱动的响应消息。
    代码示例如下所示:
    {
        "error_code": "MSS.00000000",
        "error_msg": "success",
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "TEXT_DRIVE_RSP",
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
        }
    }

状态码

状态码

描述

101

连接成功。

错误码

请参见错误码