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

智能交互驱动流程

流程图示例

用户与数字人进行智能交互的流程图示例,如下所示,对应流程的详细说明,如流程图总体说明所示。

  • 智能交互非流式驱动流程图,如图1所示。
  • 智能交互流式驱动流程图,如图2所示。
  • 智能交互驱动打断对话流程图,如图3所示。
  • 智能交互驱动停止对话流程图,如图4所示。
  • 智能交互驱动心跳保活流程图,如图 智能交互驱动心跳保活流程图所示。
  • 智能交互驱动超时流程图,如图6所示。
  • 智能交互驱动任务结束流程图,如图7所示。

智能交互驱动WebSocket接口说明,如智能交互驱动WebSocket接口所示。

图1 智能交互非流式驱动流程图
图2 智能交互流式驱动流程图
图3 智能交互驱动打断对话流程图
图4 智能交互驱动停止对话流程图
图5 智能交互驱动心跳保活流程图
图6 智能交互驱动超时流程图
图7 智能交互驱动任务结束流程图

用户请求建立WebSocket连接

用户请求建立WebSocket连接时,会调用接口智能交互驱动WebSocket接口创建与MetaStudio智能交互服务之间的Websocket连接。

连接建立成功后,MetaStudio智能交互服务已准备就绪,会发送START_CHAT命令给第三方应用。第三方应用接收到START_CHAT命令后,用户开始发送文本驱动命令。

详细交互流程如下所示:

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

    代码示例如下所示:

    wss://metastudio-api.cn-north-4.myhuaweicloud.com/v1/70b76xxxxxx34253880af501cdxxxxxx/digital-human-chat/chat-command/e37a28485f684769aa537466e719629d
  2. MetaStudio接收WebSocket建立连接的请求后,返回响应消息。
    代码示例如下所示:
    {
        "error_code": "MSS.00000000",
        "error_msg": "success",
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf"
    }
  1. MetaStudio发送启动对话的消息。

    代码示例如下所示:

    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "START_CHAT",
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
        }
    }

用户发送文本驱动消息

第三方应用使用TEXT_DRIVE命令,发送文本驱动消息,给MetaStudio智能交互服务。

  • MetaStudio发送的启动会话消息START_CHAT,会返回chat_id字段。用户发送文本驱动消息TEXT_DRIVE、中断对话消息INTERRUPT_CHAT或结束对话消息STOP_CHAT时,都需要携带该chat_id。
  • 支持流式文本消息。seq为流式文本序号,从1开始计数;is_last用于判断流式文本的最后一包数据。如果不使用流式文本消息,seq设置为“1”,is_last设置为“true”。

    建议每个分包数据长度大于6个字,否则可能会导致数字人说话卡顿。

详细交互流程如下所示:

  1. 用户发送文本驱动消息。

    代码示例如下所示:

    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "job_id": "e37a28485f684769aa537466e719629d",
            "robot_id": "2c9d60818b365847018b365f40320000",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
            "command": "TEXT_DRIVE",
            "data": {
                "text": "您好,我是您的数字人",
                "seq": 1,
                "is_last": true
            }
        }
    }
  2. MetaStudio收到用户发送的文本驱动消息后,返回响应消息。
    代码示例如下所示:
    {
        "error_code": "MSS.00000000",
        "error_msg": "success",
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "TEXT_DRIVE_RSP",
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
        }
    }
  3. MetaStudio响应成功后,数字人开始讲话。MetaStudio对应发送开始讲话的消息。
    代码示例如下所示:
    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "START_SPEAKING",
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
        }
    }
  4. 数字人讲话完成后,MetaStudio对应发送结束讲话的消息。
    代码示例如下所示:
    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "STOP_SPEAKING",
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
        }
    }

用户发送中断对话的消息

文本驱动数字人讲话过程中,支持使用INTERRUPT_CHAT命令,中断数字人与用户的对话。对话被打断后,数字人将停止说话,并发送下一次对话的START_CHAT消息给用户。

详细交互流程如下所示:

  1. 用户发送中断对话的消息。
    代码示例如下所示:
    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
            "command": "INTERRUPT_CHAT"
        }
    }
  2. MetaStudio接收到用户发送的中断对话消息后,返回响应消息。
    代码示例如下所示:
    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "INTERRUPT_CHAT_RSP",
            "job_id": "e37a28485f684769aa537466e719629d,
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
        }
    }
  3. MetaStudio返回结束对话的消息给用户。
    代码示例如下所示:
    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "STOP_SPEAKING",
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
        }
    }
  4. MetaStudio发送接收下一次开始对话的消息。
    代码示例如下所示:
    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "START_CHAT",
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "00f1c200389e434485260777a2ad57bc",
        }
    }

用户发送结束对话的消息

文本驱动数字人讲话过程中,支持通过STOP_CHAT命令停止对话。对话停止后,数字人将停止说话,并不会再发送下一次对话的START_CHAT消息。

详细交互流程如下所示:

  1. 用户发送停止对话消息。

    代码示例如下所示:

    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
            "command": "STOP_CHAT"
        }
    }
  2. MetaStudio接收用户发送的停止对话消息后,返回响应消息。

    代码示例如下所示:

    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "STOP_CHAT_RSP",
            "job_id": "e37a28485f684769aa537466e719629d,
            "chat_id": "ac71c539395b4446865074589ffa2c6c"
        }
    }
  3. MetaStudio返回结束讲话的消息给用户。
    代码示例如下所示:
    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "STOP_SPEAKING",
            "job_id": "e37a28485f684769aa537466e719629d",
            "chat_id": "ac71c539395b4446865074589ffa2c6c",
        }
    }

用户发送心跳请求消息

文本驱动数字人讲话过程中,支持通过PING命令发送心跳请求,用于对WebSocket链路进行保活。

详细交互流程如下所示:

  1. 用户发送心跳请求消息。

    代码示例如下所示:

    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "job_id": "e37a28485f684769aa537466e719629d",
            "command": "PING"
        }
    }
  2. MetaStudio接收用户发送的心跳请求消息后,返回心跳响应消息。

    代码示例如下所示:

    {
        "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
        "payload": {
            "command": "PONG",
            "job_id": "e37a28485f684769aa537466e719629d
        }
    }

用户与数字人对话超时断连

用户与MetaStudio服务建立WebSocket连接后, 如果用户超过30秒未发送对话消息或心跳请求消息,即MetaStudio超过30秒未收到第三方应用的TEXT_DRIVE命令或PING命令,MetaStudio将主动关闭WebSocket连接。

会话任务结束

MetaStudio智能对话服务结束时,如:应用或其对话页面关闭。MetaStudio将发送JOB_FINISHED命令给第三方应用,并关闭WebSocket连接。

MetaStudio发送结束任务的消息。

代码示例如下所示:

{
    "request_id": "d7aa08da33dd4a662ad5be508c5b77cf",
    "payload": {
        "command": "JOB_FINISHED",
        "job_id": "e37a28485f684769aa537466e719629d
    }
}