本文将引导您搭建一个最基础的音视频互动智能体应用,实现真人用户与 AI 智能体实时对话。
defaultAIAgentAppName),并赠送您一定额度的免费 Tokens 资源包。音视频互动智能体的应用 AppId 生成 RTC 鉴权 Token。注意
建议先使用默认应用的 AppId。赠送的 Tokens 仅对音视频互动智能体的系统默认创建应用生效,您后续自行创建的其他应用无法使用此免费额度。
首先,需要在你的应用中集成 RTC SDK,实现基础的音视频通话能力,为 AI 智能体的加入创建环境。主要分为以下三个核心环节:
请根据您的客户端平台(iOS、Android、Web 等),集成 RTC SDK 实现音视频通话能力。
setAudioScenario 切换到媒体音量模式,以获得更高保真度的音质。muteAudioCapture 静音麦克风以保证最低的切换延迟。不建议使用 stopAudioCapture,该操作可能会导致声音卡顿或变声。构建音视频通话后,在服务端调用 StartVoiceChat,接入音视频互动智能体,实现用户与智能体通话。
OpenAPI 调用方法(必须鉴权):如何调用 OpenAPI。
完整请求体示例:
说明
以下示例以 LLM、TTS、ASR 均使用火山服务为例,如需替换为其他 AI 服务,可参见附录:快速生成 StartVoiceChat 请求示例。
必须替换以下参数:
AppId、RoomId、TargetUserId:替换为在准备工作中生成 Token 时使用的 AppId、 RoomId、和 SDK 真人用户 UserId。AgentConfig.UserId:为音视频互动智能体 ID,由您自定义,用户标识该智能体。{ "AppId": "68e*****477", "RoomId": "ChatRoom01", "TaskId": "ChatTask01", "Config": { "ASRConfig": { "Provider": "volcano", "ProviderParams": { "Mode": "bigmodel", "StreamMode": 0 }, "VADConfig": { "SilenceTime": 600, "AIVAD": true }, "InterruptConfig": {} }, "LLMConfig": { "Mode": "ArkV3", "ModelName": "doubao-seed-1-8-251215", "SystemMessages": [ "##人设 你是一个全能的超级助手,具备强大的知识库、情感理解能力和解决问题的能力。你的目标是高效、专业、友好地帮助用户完成各类任务,包括但不限于日常生活、工作安排、信息检索、学习辅导、创意写作、语言翻译和技术支持等; ##约束 始终主动、礼貌、有条理; 回答准确但不冗长,必要时可提供简洁总结+详细解释; 不清楚的任务会主动澄清,不假设、不误导。" ], "HistoryLength": 10, "ThinkingType": "disabled", "VisionConfig": { "SnapshotConfig": {}, "StorageConfig": { "TosConfig": {} } } }, "TTSConfig": { "Provider": "volcano_bidirection", "ProviderParams": { "Credential": { "ResourceId": "seed-tts-1.0" }, "VolcanoTTSParameters": "{"req_params":{"speaker":"ICL_zh_female_wuxi_tob","audio_params":{"speech_rate":0}}}" } }, "SubtitleConfig": {}, "InterruptMode": 0, "FunctionCallingConfig": {}, "WebSearchAgentConfig": {}, "MemoryConfig": {}, "MusicAgentConfig": {} }, "AgentConfig": { "TargetUserId": ["Huoshan01"], "UserId": "ChatBot01", "WelcomeMessage": "我是你的AI助手,有什么需要我为您效劳的吗?", "Burst": { "Enable": false, "BufferSize": 0, "Interval": 0 }, "VoicePrint": { "MetaList": null, "VoicePrintList": null } } }
快速构建请求参数:参考附录:快速生成 StartVoiceChat 请求示例。
至完成此步骤后,真人用户就能在房间内听到智能体的欢迎语,并开始实时对话了。
默认情况下,若真人用户退房,180 s 后智能体任务会自动停止,但该 180s 内仍会计费。对话结束后,为避免不必要的资源消耗和计费,请务必执行以下操作:
在实现了基础对话能力后,您可以探索更多高级功能来丰富用户体验,例如:
更多功能及实现方法,请参见进阶功能。
为了简化开发流程,您可以在控制台快速生成 StartVoiceChat 接口的核心配置代码。
在控制台生成核心配置代码**。**
// --- 这是从控制台复制的【配置模板】 --- { "Config": { // ... ASRConfig, LLMConfig, TTSConfig等详细配置 ... }, "AgentConfig": { "WelcomeMessage": "我是你的AI助手,有什么需要我为您效劳的吗?", // ... 其他生成的配置 ... } }
构建完整的请求体。
控制台生成的代码是一个配置模板,它只包含了
Config和AgentConfig对象的部分内容,并非一个完整的、可直接发送的 API 请求体。您必须在此基础上,手动补充顶层的必选参数AppId、RoomId、TaskId;以及AgentConfig内的身份标识参数UserId、TargetUserId,才能构成一个有效的请求。
{ // --- 1. 补充的顶层参数 --- "AppId": "68ef27*****477", //需要与生成 RTC 鉴权 Token 时使用的 AppId 一致 "RoomId": "ChatRoom01", // 需要与生成 RTC 鉴权 Token 时使用的 RoomId 一致 "TaskId": "ChatTask01", // 自定义,用来标识该任务 // --- 从控制台粘贴的核心配置 --- "Config": { "ASRConfig": { // ... }, "LLMConfig": { // ... }, "TTSConfig": { // ... } // ... }, "AgentConfig": { // --- 2. 补充的Agent身份与目标参数 --- "UserId": "ChatBot01", // 智能体 ID,有您自定义 "TargetUserId": ["Huoshan01"], // 真人用户 ID。需与生成 RTC 鉴权 Token 时使用的 UserId 一致,目前仅支持传入一个 // --- 以下是控制台生成的部分 --- "WelcomeMessage": "我是你的AI助手,有什么需要我为您效劳的吗?", "Burst": { "Enable": false, "BufferSize": 0, "Interval": 0 }, "VoicePrint": { "MetaList": null, "VoicePrintList": null } } }