调用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是步骤二中的出参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 系统错误