调用AddRtcAccount会返回一个融合通信账号,这个融合通信账号会归属于您当前的阿里云账号,不会被其他开发者使用。每个开发者可以最多创建500万个融合通信账号,如果不能满足需求可以线下联系您的客户经理。

第一步:在项目中引入对应的依赖

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>3.2.3</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-dyvmsapi</artifactId>
  <version>1.2.0</version>
</dependency>

步骤二:调用AddRtcAccount接口创建账号

请求参数

参数名称 参数类型 是否必选 示例值 描述
deviceId String abcdefg 这个融合通信账号关联的设备ID,同一个设备ID只能创建一个融合通信账号

返回数据

出参名称 出参类型 示例值 描述
requestId String 8906582E-6722 请求ID
code String OK 状态码-返回OK代表请求成功,其他错误码详见错误码列表
message String 请求成功 状态码的描述
module String 200000***00001 融合通信账号ID

示例程序

 //设置访问超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//融合通信服务产品名称(产品名固定,无需修改)
final String product = "Dyvmsapi";
//融合通信服务产品域名(接口地址固定,无需修改)
final String domain = "dyvmsapi.aliyuncs.com";
//需要替换成开发者的AK信息
//初始化acsClient暂时不支持多region
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
AddRtcAccountRequest request = new AddRtcAccountRequest();
request.setDeviceId(UUID.randomUUID().toString());
//hint 此处可能会抛出异常,注意catch
AddRtcAccountResponse addRtcAccountResponse = acsClient.getAcsResponse(request);

步骤三:调用GetRtcToken获取token

客户端在使用云通信的融合通信服务时需要token等其他参数,这些参数可以通过GetRtcToken接口从云通信平台获取。在客户端的updateToken回调中,开发者需要实现从云通信平台获取token。为了系统安全,开发者不要直接从客户端调用云通信平台POP接口,建议通过开发者的服务端访问POP接口。

注意 入参userId是步骤2中的出参module。

请求参数

参数名称 参数类型 是否必选 示例值 描述
userId String 200000***000001 用户ID,在有账号模式时就是融合通信账号,无账号模式时是用户的自定义账号
deviceId String abcdefg 设备ID,建议使用设备的UUID,同个账号,去获取token时,如果设备ID不一样,较早登录的账号会被踢出,无法继续使用融合通信服务
isCustomAccount Boolean false 是否是无账号模式

返回数据

出参名称 出参类型 示例值 描述
requestId String 8906582E-6722 请求ID
code String OK 状态码-返回OK代表请求成功,其他错误码详见错误码列表
message String 请求成功 状态码的描述
module String {“cleansession”:true,”clientId”:”GID_VOIP@@@ClientId_2000000000000009_100648480015”,”conferenceTopic”:”cs_alicom_voip_conference”,”host”:”mqtt-cn-4590mdhb901.mqtt.aliyuncs.com”,”meetingEventKeepAliveInterval”:0,”phoneTopic”:”alicom_voip_phone”,”port”:0,”reconnectTimeout”:2000,”registerTime”:0,”sdkClientPort”:8883,”serverId”:”GID_VOIP@@@MTEuMTMuMTM2LjExOA==”,”sgwServerTopic”:”alicom_voip_server_pre”,”tlsport”:443,”tokenData”:”abcdef”,”useTLS”:false} token对象,整个json都需要返回给客户端并且传给融合通信SDK

示例程序

//设置访问超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//融合通信服务产品名称(产品名固定,无需修改)
final String product = "Dyvmsapi";
//融合通信服务产品域名(接口地址固定,无需修改)
final String domain = "dyvmsapi.aliyuncs.com";
//需要替换成开发者的AK信息
//初始化acsClient暂时不支持多region
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
GetRtcTokenRequest request = new GetRtcTokenRequest();
request.setUserId("2000000000000009");
request.setDeviceId("abcdefg");
request.setIsCustomAccount(false);
//hint 此处可能会抛出异常,注意catch
GetRtcTokenResponse getRtcTokenResponse = acsClient.getAcsResponse(request);

错误码

Code 描述
OK 请求成功
isp.RAM_PERMISSION_DENY RAM权限DENY
isv.OUT_OF_SERVICE 业务停机
isv.PRODUCT_UNSUBSCRIBE 产品未开通
isv.ACCOUNT_NOT_EXISTS 账户不存在
isv.ACCOUNT_ABNORMAL 账户异常
isv.INVALID_PARAMETERS 参数异常
isp.SYSTEM_ERROR 系统错误