一、功能概述
创建任务后,AI Bot 以虚拟用户身份加入 TRTC 房间并订阅指定用户的音频流,用户开口说话即开始一轮「识别 → 推理 → 播报」的实时对话,全程可打断。
二、前提条件与配额
| 项目 | 要求 |
| TRTC 服务 | 已开通并完成实名认证。 |
| SdkAppId | TRTC 应用 ID,用于所有服务端接口调用。 |
| 房间号 | 支持数字房间号(RoomIdType=0)与字符串房间号(RoomIdType=1,推荐)。 |
| 接口频率 | 20 次/秒。 |
| 单应用并发 | 100 个任务。 |
| 空闲回收 | 默认 30 秒(AgentConfig.MaxIdleTime 可调,范围 5~86400 秒)。 |
注意:说明:
注意:超出频率或并发上限时接口返回 FailedOperation.RestrictedConcurrency / FailedOperation.RequestLimitExceeded,请实现指数退避重试。
三、步骤1:签发 UserSig
业务后端为 App 用户和 AI Bot 各签发一份 UserSig:
·Bot 的 UserSig:即创建任务时 AgentConfig.UserSig,由业务后端保管;
·App 用户的 UserSig:由业务后端下发给客户端,用于进房。
UserSig 生成方式参见 TRTC UserSig 生成。
四、步骤2:客户端集成 TRTC SDK 并进房
客户端接入 TRTC 的基本流程参见 TRTC 页面接入文档,核心代码(以 Android 为例):
// 1. 创建 TRTC 实例TRTCCloud trtc = TRTCCloud.sharedInstance(context.getApplicationContext());// 2. 开启音量回调与 VAD 通知,用于 UI 展示用户是否正在说话TRTCAudioVolumeEvaluateParams volumeParams = new TRTCAudioVolumeEvaluateParams();volumeParams.enableVadDetection = true;trtc.enableAudioVolumeEvaluation(true, volumeParams);// 3. 开启音频采集(通话音质)trtc.setSystemVolumeType(TRTCSystemVolumeTypeMedia);trtc.startLocalAudio(TRTC_AUDIO_QUALITY_SPEECH);// 4. 如需静音采集,可设置采集音量为 0trtc.setAudioCaptureVolume(0);// 5. 进房TRTCParams params = new TRTCParams();params.sdkAppId = <sdkAppId>;params.userId = <localUserId>;params.userSig = <userSig>;params.roomId = <roomId>;params.role = TRTCRoleAnchor;trtc.enterRoom(params, TRTC_APP_SCENE_VIDEOCALL);
进房成功条件:TRTCCloudListener.onEnterRoom(result > 0)。
五、步骤3:服务端创建 AI 对话任务
业务后端调用创建任务接口(完整定义见 发起 AI 对话任务),创建 Cascade 模式任务:
{ "SdkAppId": 14000000, "RoomId": "12345", "RoomIdType": 0, "ConversationMode": "Cascade", "AgentConfig": { "UserId": "test2", "UserSig": "eJyrVgrxCdYrzkxXslJQyvEs…", "TargetUserId": ["Trtc_User_0"], "MaxIdleTime": 60, "SubtitleMode": 0, "TurnDetectionMode": "Auto", "TTSPushRoomParams": { "UserId": "tts-bot-001" } }, "STTConfig": { "Provider": "trtc", "Params": "{\\"engine_model_type\\":\\"bigmodel\\",\\"language\\":\\"zh\\",\\"vad_silence_time\\":\\"1000\\"}" }, "LLMConfig": { "LLMType": "openai", "Model": "gpt-4o-mini", "APIKey": "<YOUR_API_KEY>", "APIUrl": "https://api.openai.com/v1/chat/completions", "SystemPrompt": "你是一个简洁的对话助手。", "Timeout": 20000, "Temperature": 0.7 }, "TTSConfig": { "Provider": "trtc", "Params": "{\\"Model\\":\\"flow_02_turbo\\",\\"VoiceId\\":\\"v-female-R2s4N9qJ\\",\\"Speed\\":1.0}" }, "DialogConfig": { "InterruptMode": 0, "InterruptSpeechDuration": 200, "WelcomeMessage": "你好,我是AI助手,有什么可以帮你的?" }}
关键字段速览:
| 字段 | 说明 |
| AgentConfig.UserId / UserSig | AI Bot 的房间身份与进房凭证。 |
| AgentConfig.TargetUserId | Bot 订阅哪些用户的音频(当前最多 1 个)。 |
| AgentConfig.MaxIdleTime | 房间无人说话时的空闲回收时间。 |
| STTConfig / LLMConfig / TTSConfig | 三段链路配置,均可更换厂商。 |
| DialogConfig.WelcomeMessage | Bot 进房后自动播报的欢迎语(便于验证链路)。 |
| DialogConfig.InterruptMode | 打断模式(0=自动 / 1=手动 / 2=关键词)。 |
接口返回 TaskId 即表示任务创建成功,Bot 已进房并订阅目标用户音频。配置了 WelcomeMessage 时,Bot 进房后会自动播报欢迎语,可直接验证 TTS 链路;随后对 Bot 说一句话,即开始一轮完整对话。
注意:说明:
六、步骤4:配置事件回调并校验签名
在控制台(或通过工单)配置业务后端的回调 URL 与回调密钥,并实现 X-TRTC-Signature 签名校验,即可落库 ASR / LLM 结果、AI 状态流转、任务启动 / 结束等事件。
回调报文结构、全部事件类型与签名校验方法详见 AI 对话回调事件。
七、步骤5:结束任务
主播离线或会话结束时,业务后端调用删除任务接口(完整定义见 停止 AI 对话任务),Bot 离开房间并释放任务资源。
注意:说明:
注意:也可依赖空闲回收:房间内持续 MaxIdleTime 无有效音频,任务自动结束。
八、验证对话链路
任务运行期间向 Bot 说一句话,可通过三个通道确认链路工作正常:
| 验证通道 | 现象 | 参见 |
| 客户端听感 | Bot 自动播报欢迎语,随后对答如流,说话时可随时打断。 | (客户端)打断指令 |
| 客户端字幕 | 收到用户语音的 ASR 字幕与 AI 回复的 LLM 字幕。 | (客户端)实时字幕 |
| 服务端回调 | 依次收到 ASR 识别结果、LLM 回复结果、AI 状态流转事件。 | AI 对话回调事件 |
一轮对话中机器人状态按以下顺序流转(完整说明见 获取 AI 机器人状态以及上下文):