功能概述
TRTC AI 实时对话 2.0 提供了丰富的状态回调功能。这些状态回调通过 TRTC 的自定义消息发送,使得在客户端上可以方便地实现丰富的状态切换,例如"聆听中"、"思考中"、“说话中”等状态。
状态接收
连接机器人
TRTCCloud.callExperimentalAPI:{"api": "aiConversation","params": {"command": "connect","robotid": "ai_bot_001"}}
robotid 是通过 REST API CreateVoiceConversation 创建任务时填入的 AgentConfig.UserId。连接结果通过
TRTCCloudListener.onExperimentalEvent 回调,eventName 为 onAIConversationEvent,params 为:{"event": "onCommand","robotid": "ai_bot_001","command": "connect","errCode": 0,"errMsg": "ok"}
errCode | 含义 |
0 | 连接成功。 |
-2 | 参数错误,缺少 robotid。 |
2001 | 任务不存在或已结束。 |
2002 | SDK 版本过低。 |
监听状态
完成连接之后,机器人状态会通过
onExperimentalEvent 实时回调,eventName 为 onAIConversationEvent。params.event 为 agentState。消息格式
{"event": "agentState","robotid": "ai_bot_001","data": {"type": 10102,"robotid": "ai_bot_001","sender": "tts_bot_001","payload": {"taskid": "task-id","state": {"code": 2,"desc": "thinking"},"timestamp": 1751196060800}}}
字段 | 类型 | 说明 |
event | String | 固定为 agentState。 |
robotid | String | 当前连接的 AI 机器人 UserId。 |
data.type | Number | 消息类型,机器人状态为 10102。 |
data.robotid | String | AI 对话机器人 UserId( AgentConfig.UserId)。 |
data.sender | String | 实际发送方 UserId,状态消息为对应的 TTS 机器人。 |
data.payload.taskid | String | AI 对话任务 ID。 |
data.payload.state.code | Number | 当前状态码,见下表。 |
data.payload.state.desc | String | 状态描述。 |
data.payload.timestamp | Number | 状态切换的 UTC 时间戳,单位毫秒。 |
说明:
data.payload(类型:Object,说明:状态负载)与 data.payload.state(类型:Object,说明:状态对象)为嵌套对象。state.code | 含义 |
0 | 空闲 |
1 | 聆听中 |
2 | 思考中 |
3 | 说话中 |
4 | 被打断 |
5 | 已说完 |