You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何从Agora RTC客户端获取OpenAI实时API返回的文本?

解决Agora集成OpenAI实时API后客户端接收返回文本的问题

核心说明

你后端代码里的self.channel.chat.send_message是依托Agora RTC场景的内置实时消息通道发送数据的,不需要单独集成Chat或Signaling SDK,直接用Agora RTC SDK就能监听接收。

各平台实现步骤

1. Android端

  • 确保已集成Agora RTC SDK并成功加入目标频道
  • 重写RtcEventHandler的消息接收方法解析文本:
rtcEngine.setEventHandler(new RtcEventHandler() {
    @Override
    public void onChatMessageReceived(String userId, String message) {
        try {
            JSONObject jsonObj = new JSONObject(message);
            String transcript = jsonObj.optString("transcript");
            String msgType = jsonObj.optString("type");
            
            if ("ResponseAudioTranscriptDelta".equals(msgType)) {
                // 处理增量文本(比如实时追加到UI)
            } else if ("ResponseAudioTranscriptDone".equals(msgType)) {
                // 处理完整文本(比如展示最终回复)
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
});

2. iOS端

  • 集成Agora RTC SDK并加入频道后,实现AgoraRtcEngineDelegate代理方法:
func rtcEngine(_ engine: AgoraRtcEngineKit, didReceiveChatMessage message: String, fromUserId userId: String) {
    guard let data = message.data(using: .utf8),
          let jsonObj = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
        return
    }
    
    let transcript = jsonObj["transcript"] as? String ?? ""
    let msgType = jsonObj["type"] as? String ?? ""
    
    if msgType == "ResponseAudioTranscriptDelta" {
        // 处理增量文本
    } else if msgType == "ResponseAudioTranscriptDone" {
        // 处理完整文本
    }
}

3. Web端

  • 集成Agora RTC Web SDK并加入频道后,监听chat-message事件:
client.on('chat-message', (msg) => {
    const jsonData = JSON.parse(msg.text);
    const transcript = jsonData.transcript;
    const msgType = jsonData.type;
    
    if (msgType === 'ResponseAudioTranscriptDelta') {
        // 实时追加增量文本
    } else if (msgType === 'ResponseAudioTranscriptDone') {
        // 展示完整回复内容
    }
});

注意事项

  • 客户端加入的频道ID必须和后端使用的频道ID完全一致
  • 后端发送的message是JSON格式字符串,需根据OpenAI实时API的ResponseAudioTranscriptDelta/ResponseAudioTranscriptDone结构解析字段(核心是transcript文本字段和type类型字段)
  • 无需额外集成Chat/Signaling SDK,直接用RTC SDK即可完成消息监听

内容的提问来源于stack exchange,提问作者Hejia Geng

火山引擎 最新活动