logo
当前页

智能体实例 SDK 端回调

AI Agent 提供了丰富的状态信息。这些状态信息可通过 ZEGO Express SDK 的试验性 API 回调获取,使得在客户端上可以方便地实现状态切换 UI 效果,例如"聆听中"、"思考中"、“说话中”等状态。

详细使用说明建议参考展示用户和智能体实例状态 > 在客户端监听 ZEGO Express SDK 试验性 API 回调

功能特点

  • 实时性:状态变化可以实时传递给所有参与者。 -灵活性:使用自定义消息格式,便于集成和扩展。
  • 多状态支持:包括聆听、思考、说话和被打断等多种状态。

消息格式

状态回调自定义消息使用 JSON 格式,状态信息包含在 params.msg_content 字段中,其内容如下:

参数类型描述
Timestampint64秒级时间戳。
TimestampMsint64毫秒级时间戳。
Seqldint64包序列号,保证有序性,不保证连续性
Roundint64对话轮次,每次用户主动说话,轮次增加。保证有序性,不保证连续性
CmdInt1: 用户说话状态
3: 识别的 ASR 文本
4: LLM 回答文本(增量下发)
6: 智能体实例状态
DataObject具体内容。见Data
{
    "method": "liveroom.room.on_recive_room_channel_message",
    "params": {
        "msg_content": "{\"Timestamp\":1765510379,\"TimestampMs\":1765510379113,\"SeqId\":278800715,\"Round\":510359002,\"Cmd\":1,\"Legacy\":false,\"Data\":{\"SpeakStatus\":1,\"UserId\":\"38475\"}}",
        "msg_type": 1,
        "roomid": "ir_20p158E0",
        "send_idname": "@RBT#38475_xiaozhi-sx_174722027",
        "send_nickname": ""
    }
}

Data

Cmd 不同对应的 Data 也不同,具体如下:

Cmd=1,用户说话状态
参数类型描述
SpeakStatusint1:说话开始,2: 说话结束
UserIdstring说话用户的 UserID
{
    "method": "liveroom.room.on_recive_room_channel_message",
    "params": {
        "msg_content": "{\"Timestamp\":1765510379,\"TimestampMs\":1765510379113,\"SeqId\":278800715,\"Round\":510359002,\"Cmd\":1,\"Legacy\":false,\"Data\":{\"SpeakStatus\":1,\"UserId\":\"38475\"}}",
        "msg_type": 1,
        "roomid": "ir_20p158E0",
        "send_idname": "@RBT#38475_xiaozhi-sx_174722027",
        "send_nickname": ""
    }
}
Cmd=3,识别的ASR(用户说话)文本
参数类型描述
Textstring用户语音识别结果文本
每次下发识别到的全量文本(整句是否结束,由EndFlag标志决定),支持文本纠正
MessageIdstring消息 id。每轮 ASR 文本消息 id 唯一
UserIdstring说话用户的 UserID
StartFlagbool开始标识。true 表示本轮 ASR 文本已开始发送
EndFlagbool结束标识。true 表示本轮 ASR 文本已发送结束,false表示后续还会有识别数据
{
    "method": "liveroom.room.on_recive_room_channel_message",
    "params": {
        "msg_content": "{\"Timestamp\":1765510386,\"TimestampMs\":1765510386723,\"SeqId\":278820712,\"Round\":510359003,\"Cmd\":3,\"Legacy\":false,\"Data\":{\"MessageId\":\"2051951657\",\"UserId\":\"38475\",\"Text\":\"你在哪里?\",\"StartFlag\":false,\"EndFlag\":true}}",
        "msg_type": 1,
        "roomid": "ir_20p158E0",
        "send_idname": "@RBT#38475_xiaozhi-sx_174722027",
        "send_nickname": ""
    }
}
Cmd=4,智能体应答文本
参数类型描述
Textstring应答文本,每次下发增量文本答案
MessageIdstring消息 id。每轮应答文本消息 id 唯一
EndFlagbool结束标识。true 表示本轮 llm 文本已发送结束。
{
    "method": "liveroom.room.on_recive_room_channel_message",
    "params": {
        "msg_content": "{\"Timestamp\":1765510387,\"TimestampMs\":1765510387545,\"SeqId\":278828066,\"Round\":510359003,\"Cmd\":4,\"Legacy\":false,\"Data\":{\"MessageId\":\"2052097919\",\"UserId\":\"@RBT#38475_xiaozhi-sx_174722027\",\"Text\":\"我在数字世界随时等你哦 无论你想谈天说\",\"StartFlag\":true,\"EndFlag\":false}}",
        "msg_type": 1,
        "roomid": "ir_20p158E0",
        "send_idname": "@RBT#38475_xiaozhi-sx_174722027",
        "send_nickname": ""
    }
}
Cmd=6,智能体状态
参数类型描述
Statusint智能体实例状态。0:空闲;1:正在听;2: 正在想;3: 正在说
OldStatusint上一次智能体实例状态。值的含义同 Status
Reasonstring切换状态原因。
{
    "method": "liveroom.room.on_recive_room_channel_message",
    "params": {
        "msg_content": "{\"Timestamp\":1765510398,\"TimestampMs\":1765510398029,\"SeqId\":278800725,\"Round\":0,\"Cmd\":6,\"Legacy\":false,\"Data\":{\"OldStatus\":3,\"Status\":0,\"Reason\":\"tts_all_played\"}}",
        "msg_type": 1,
        "roomid": "ir_20p158E0",
        "send_idname": "@RBT#38475_xiaozhi-sx_174722027",
        "send_nickname": ""
    }
}

上一篇

展示字幕

当前页

返回到顶部