如何主动向客户端发送自定义消息

更新时间:2025-04-08 01:51:50

本文将为您介绍在音视频通话中如何主动向客户端发送自定义消息。

功能描述

在音视频通话过程中,服务端推送业务信息可以全方位提升用户的沟通协作体验与业务处理效率。对于用户而言,能在专注于音视频交流的同时,及时获取关键业务动态,无需在通话结束后再另行查询信息,极大地节省了时间与精力。从业务角度出发,服务端主动推送信息可确保重要内容精准触达用户,增强用户对业务的参与度与理解程度,助力业务流程的高效推进。

应用场景

在音视频通话场景中,服务端主动推送同样可以广泛应用于商务撮合、虚拟教师、心理咨询等多个领域。以虚拟教师场景为例:教师与学生进行互动时,服务端可推送课程资料更新、作业提交提醒、考试安排等信息。比如,当课程资料有新的补充文档时,服务端在音视频通话界面推送通知,学生点击即可下载查看,方便学生及时获取学习资源。在课程即将结束时,推送作业提交截止时间提醒,确保学生按时完成作业。此外,在考试周前,提前推送考试时间、考试形式等详细安排,让学生做好充分准备。

功能实现

服务端发送自定义消息

SendAIAgentDataChannelMessage - 向智能体通话发送DataChannel消息

// This file is auto-generated, don't edit it. Thanks.
package com.aliyun.rtc;

import java.util.Arrays;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aliyun.ice20201109.models.StartAIAgentInstanceResponse;
import com.aliyun.tea.*;

public class Sample {

    /**
     * <b>description</b> :
     * <p>使用AK&amp;SK初始化账号Client</p>
     * @return Client
     * 
     * @throws Exception
     */
    public static com.aliyun.ice20201109.Client createClient() throws Exception {
        // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
                .setAccessKeyId("yourak")
                // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
                .setAccessKeySecret("yoursk");
        // Endpoint 请参考 https://api.aliyun.com/product/ICE
        config.endpoint = "ice.cn-shanghai.aliyuncs.com";
        return new com.aliyun.ice20201109.Client(config);
    }


    private static void sendAIAgentDataChannelMessage() throws Exception {
        com.aliyun.ice20201109.Client client =  createClient();

        com.aliyun.ice20201109.models.SendAIAgentDataChannelMessageRequest request = new com.aliyun.ice20201109.models.SendAIAgentDataChannelMessageRequest()
            .setInstanceId("yourinstanceid")
            .setMessage("{\"key\":\"value\"}");
            try {
                com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
                
                client.sendAIAgentDataChannelMessageWithOptions(request, runtime);
            } catch (TeaException error) {
                System.out.println(error.getMessage());
                com.aliyun.teautil.Common.assertAsString(error.message);
            } catch (Exception _error) {
                TeaException error = new TeaException(_error.getMessage(), _error);
                System.out.println(error.getMessage());
                com.aliyun.teautil.Common.assertAsString(error.message);
            }   
    }
    
    public static void main(String[] args) throws Exception {
        sendAIAgentDataChannelMessage();
    }
}

客户端处理自定义消息

您需要对服务端发送的自定义消息进行解析,示例代码如下:

Android
iOS
Web
//实现ARTCAICallEngine.IARTCAICallEngineCallback中的回调

@Override
public void onReceivedAgentCustomMessage(String data) {
// 这里处理收到当前智能体发过来的自定义消息
}
// 创建通话engine实例
var engine: ARTCAICallEngineInterface = {
    return ARTCAICallEngineFactory.createEngine()
}()

// 给通话引擎设置回调
self.engine.delegate = self

// 实现回调接口
public func onReceivedAgentCustomMessage(data: [String : Any]?) {
  // 这里处理收到当前智能体发过来的自定义消息
    debugPrint("onReceivedAgentCustomMessage:\(data ?? [:])")
}

engine.on('receivedAgentCustomMessage', (data) => {
  // 这里处理收到当前智能体发过来的自定义消息
  console.log('receivedAgentCustomMessage', data);
})
  • 本页导读 (1)
  • 功能描述
  • 应用场景
  • 功能实现
  • 服务端发送自定义消息
  • 客户端处理自定义消息
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等