通过 AOQ、WebRTC 或 WebSocket 接入模型的完整流程
介绍如何通过 AOQ、WebRTC、WebSocket 三种协议接入 Realtime API 模型,包含各协议的连接流程、时序图和代码示例。
AOQ 基于 QUIC 协议深度定制,适合移动端原生应用,支持音频/视频/数据混合传输,内置极致抗弱网能力。以下以实时全模态(Omni)的 iOS Demo 为例介绍 AOQ 接入流程。AOQ SDK API 详情请参见AOQ客户端SDK。
实现
由业务 AppServer 代理千问AI平台请求,参见Token鉴权。
设置编解码参数后调用
连接成功后发送
收到模型回复
WebRTC 不提供专用 SDK。Web 端可直接使用浏览器原生 JavaScript API 接入,其他端可通过开源 WebRTC 库或支持标准 WebRTC 协议的第三方 RTC 服务接入。以下以 Web 端 JavaScript 为例进行介绍。
监听模型通过 DataChannel 返回的消息,确保交互时序正确:
建连时添加的音频轨道和视频轨道(即 RTP 媒体通道)会自动将数据传输到服务端。
新建一个 HTML 文件,命名为
不同模型的接入方式和流程不同,详情请参见:
前提条件
AOQ 接入
AOQ 基于 QUIC 协议深度定制,适合移动端原生应用,支持音频/视频/数据混合传输,内置极致抗弱网能力。以下以实时全模态(Omni)的 iOS Demo 为例介绍 AOQ 接入流程。AOQ SDK API 详情请参见AOQ客户端SDK。
整体流程时序图

创建引擎并设置回调
AoqEngineDelegate 协议监听 onConnectionStatusChange、onDataMsg、onError 等回调。
启动音频采集与播放
获取连接凭证
由业务 AppServer 代理千问AI平台请求,参见Token鉴权。
设置编解码及建立连接
设置编解码参数后调用 connect:
AOQ SDK 在建连后会默认发送媒体数据,此示例演示了在连接模型时先关闭媒体发送,待会话就绪后再开启的流程。
配置 AI 会话
连接成功后发送 session.update 的示例,详见模型客户端事件参考:
收到 session.updated 后开启媒体发送
收到模型回复 session.updated 的示例,详见模型服务器事件参考:
- 必须在收到
session.updated后才开启媒体流发送,否则服务端可能尚未准备好接收数据。 - 建连时添加的音频轨道和视频轨道(即 AOQ 媒体通道)会自动将数据传输到服务端。
- 音频:通过音频轨道直接传输,无需发送
input_audio_buffer.append事件。 - 视频:通过视频轨道发送画面帧,无需发送
input_image_buffer.append事件。
- 音频:通过音频轨道直接传输,无需发送
断开连接与销毁引擎
WebRTC 接入
WebRTC 不提供专用 SDK。Web 端可直接使用浏览器原生 JavaScript API 接入,其他端可通过开源 WebRTC 库或支持标准 WebRTC 协议的第三方 RTC 服务接入。以下以 Web 端 JavaScript 为例进行介绍。
整体流程图

建立连接
配置目标模型参数
监听模型通过 DataChannel 返回的消息,确保交互时序正确:
收发媒体数据
建连时添加的音频轨道和视频轨道(即 RTP 媒体通道)会自动将数据传输到服务端。
- 音频:通过音频轨道(RTP)直接传输,无需发送
input_audio_buffer.append事件。 - 图片:通过视频轨道(RTP)发送画面帧,不支持
input_image_buffer.append事件。
WebRTC 仅支持服务端 VAD 模式(
server_vad 或 semantic_vad),不支持手动模式。Demo 源码
前提条件
- 使用支持 WebRTC 的现代浏览器(Chrome、Edge、Firefox、Safari 等)。
- 浏览器需要麦克风权限。
- 浏览器受跨域安全策略限制,无法直接向服务端发起建连请求,因此需要通过终端执行 curl 命令完成连接建立。
运行示例
新建一个 HTML 文件,命名为 webrtc_demo.html,并将以下代码复制到文件中:
webrtc_demo.html。
在浏览器中打开此文件,按以下步骤操作:
- 点击开始会话,页面会自动生成 Offer SDP 和对应的 curl 命令。
- 点击复制 curl 命令,在终端中执行。命令返回的内容即为 Answer SDP。
- 将 Answer SDP 粘贴到页面的 Answer SDP 文本框中,点击设置 Answer 即可建立连接并开始语音对话。