logo
当前页

智能体实例 SDK 端回调

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

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

功能特点

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

消息格式

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

参数类型描述
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": "onRecvRoomChannelMessage",
    "content": {
        "roomID": "wr_1765790410771",
        "sendIDName": "38597_xiaozhi_437354554567",
        "sendNickName": "小智",
        "msgType": 1,
        "msgContent": "{\"Timestamp\":1765790413,\"TimestampMs\":1765790413102,\"SeqId\":558853066,\"Round\":790411001,\"Cmd\":1,\"Legacy\":false,\"Data\":{\"SpeakStatus\":1,\"UserId\":\"38597\"}}"
    }
}
Cmd=3,识别的ASR(用户说话)文本
参数类型描述
Textstring用户语音识别结果文本
每次下发识别到的全量文本(整句是否结束,由EndFlag标志决定),支持文本纠正
MessageIdstring消息 id。每轮 ASR 文本消息 id 唯一
UserIdstring说话用户的 UserID
StartFlagbool开始标识。true 表示本轮 ASR 文本已开始发送
EndFlagbool结束标识。true 表示本轮 ASR 文本已发送结束,false表示后续还会有识别数据
{
    "method": "onRecvRoomChannelMessage",
    "content": {
        "roomID": "wr_1765790410771",
        "sendIDName": "38597_xiaozhi_437354554567",
        "sendNickName": "小智",
        "msgType": 1,
        "msgContent": "{\"Timestamp\":1765790414,\"TimestampMs\":1765790414021,\"SeqId\":558853290,\"Round\":790411001,\"Cmd\":3,\"Legacy\":false,\"Data\":{\"MessageId\":\"1036791849\",\"UserId\":\"38597\",\"Text\":\"你好。\",\"StartFlag\":false,\"EndFlag\":true}}"
    }
}
Cmd=4,智能体应答文本
参数类型描述
Textstring应答文本,每次下发增量文本答案
MessageIdstring消息 id。每轮应答文本消息 id 唯一
EndFlagbool结束标识。true 表示本轮 llm 文本已发送结束。
{
    "method": "onRecvRoomChannelMessage",
    "content": {
        "roomID": "wr_1765790410771",
        "sendIDName": "38597_xiaozhi_437354554567",
        "sendNickName": "小智",
        "msgType": 1,
        "msgContent": "{\"Timestamp\":1765790415,\"TimestampMs\":1765790415245,\"SeqId\":558855367,\"Round\":790411001,\"Cmd\":4,\"Legacy\":false,\"Data\":{\"MessageId\":\"1037244923\",\"UserId\":\"38597_xiaozhi_437354554567\",\"Text\":\"你好呀!\",\"StartFlag\":true,\"EndFlag\":false}}"
    }
}
Cmd=6,智能体状态
参数类型描述
Statusint智能体实例状态。0:空闲;1:正在听;2: 正在想;3: 正在说
OldStatusint上一次智能体实例状态。值的含义同 Status
Reasonstring切换状态原因。
{
    "method": "onRecvRoomChannelMessage",
    "content": {
        "roomID": "wr_1765790410771",
        "sendIDName": "38597_xiaozhi_437354554567",
        "sendNickName": "小智",
        "msgType": 1,
        "msgContent": "{\"Timestamp\":1765790414,\"TimestampMs\":1765790414022,\"SeqId\":558853069,\"Round\":0,\"Cmd\":6,\"Legacy\":false,\"Data\":{\"OldStatus\":1,\"Status\":2,\"Reason\":\"llm_begin\"}}"
    }
}

上一篇

展示字幕

当前页

返回到顶部