功能概述
客户端可以主动打断 AI 当前的播报:立刻停止正在播放的语音,并清空尚未播放的内容。效果与服务端
ControlVoiceConversation 的 Interrupt 指令相同。调用方式
连接机器人
注意:
发起打断
调用
TRTCCloud.callExperimentalAPI:{"api": "aiConversation","params": {"command": "interrupt","robotid": "ai_bot_001"}}
robotid 填当前已连接的 AI 机器人 UserId。打断成功不回调。失败时通过
TRTCCloudListener.onExperimentalEvent 回调,eventName 为 onAIConversationEvent,params 为:{"event": "onCommand","robotid": "ai_bot_001","command": "interrupt","errCode": 1004,"errMsg": "invalid state"}
errCode | 含义 |
-2 | 参数错误,缺少 robotid。 |
-3 | 传入的 robotid 与当前连接的机器人不一致。 |
1001 | 任务已结束,不再响应。 |
1002 | 服务端处理失败,可再次调用。 |
1003 | 指令参数非法。 |
1004 | 当前状态不允许打断。例如 AI 未在播报、任务已结束、会话尚未开始等状态。 |
与打断模式的关系
创建任务时,
DialogConfig.InterruptMode 决定什么情况下由服务端自动打断。客户端 interrupt 和服务端 ControlVoiceConversation 的 Interrupt 都是主动强制打断,不受该模式限制。InterruptMode | 说明 |
0(默认) | 自动打断。识别到用户说话即打断当前播报,最短语音时长由 InterruptSpeechDuration 控制,范围 200~3000 毫秒,默认 200。 |
1 | 手动打断。只在收到服务端 Interrupt 或客户端 interrupt 时打断。 |
2 | 关键词打断。用户说出 InterruptKeywords 中的词(最多 128 个)时打断。 |