展示用户和智能体实例状态
在与智能体进行实时语音通话时,可能需要在客户端界面上实时展示智能体实例状态和用户说话的状态变化以提升用户体验。您可以通过监听服务端或客户端回调的相应事件来获取这些状态。
状态消息包括以下类型:
- 智能体实例创建及销毁状态:智能体实例创建成功、智能体实例销毁成功。
- 智能体实例状态事件:空闲中、倾听中、思考中、说话中。
- 用户说话状态事件:开始说话,说话结束。
快速实现
要实现展示用户和智能体实例状态,有两种方式:
- 在客户端监听 ZEGO Express SDK 试验性 API 回调。
- 通过服务端回调监听智能体实例状态和用户说话状态事件,然后通过自有信令通道(如 WebSocket 等)发送自定义消息到客户端。
前提条件
在客户端监听 ZEGO Express SDK 试验性 API 回调
说明
该方式更简单,建议使用该方式实现展示用户和智能体实例状态
通过客户端 SDK 监听 ZEGO Express SDK 的试验性 API 回调(onRecvExperimentalAPI或recvExperimentalAPI),根据消息类型处理对应的状态事件。以下是各平台示例代码:
通过服务端回调监听智能体实例状态和用户说话状态事件,然后通过自有信令通道发送自定义消息到客户端
如果您的应用已经有自己的信令通道,如 WebSocket 或即时通讯系统,您可以:
- 在服务端接收到状态事件回调后,通过您的信令通道将状态信息转发给相关客户端。
- 与客户端约定好消息格式,客户端根据接收到的状态信息更新 UI 界面(如显示说话指示器、动画等)。
这种方式的优点是可以完全控制消息格式和传输逻辑,适合已有成熟信令系统的应用。
监听服务端回调
请参考 接收回调 文档开发好用于接收 AI Agent 事件通知的回调,并提供地址联系 ZEGO 技术支持进行配置。
说明
要接收用户和智能体实例状态的回调结果,请在创建智能体实例时,配置相应的 CallbackConfig.UserSpeakAction 和 CallbackConfig.AgentInstanceStatus 参数为 1。
回调内容示例如下:
{
"AppId": 1234567,
"AgentInstanceId": "1912124734317838336",
"Data": {
// !mark
"Status": "LISTENING",// IDLE: 空闲 LISTENING: 正在听 THINKING: 正在想 SPEAKING: 正在做
},
// !mark
"Event": "AgentInstanceStatus",
"Nonce": "7450395512627324902",
"Signature": "fd9c1ce54e85bd92f48b0a805e82a52b0c0c6445",
"Timestamp": 1745502313000,
"AgentUserId": "123456789",
"RoomId": "123456789",
"Sequence": 123456789,
}