全部产品
云市场

服务端API文档

更新时间:2019-03-21 09:56:50

融合通信服务端对接流程

步骤 1 在项目中引入对应的依赖

  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>aliyun-java-sdk-core</artifactId>
  4. <version>3.2.3</version>
  5. </dependency>
  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>aliyun-java-sdk-dyvmsapi</artifactId>
  4. <version>1.2.0</version>
  5. </dependency>

步骤 2 调用AddRtcAccount接口创建账号

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

入参列表

参数名称 参数类型 必填与否 样例取值 参数说明
deviceId String 必须 abcdefg 这个融合通信账号关联的设备ID,同一个设备ID只能创建一个融合通信账号

出参列表

出参名称 出参类型 样例取值 参数说明
RequestId String 8906582E-6722 请求ID
Code String OK 状态码-返回OK代表请求成功,其他错误码详见错误码列表
Message String 请求成功 状态码的描述
Module String 2000000000000001 融合通信账号ID

样例程序

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

步骤 3 调用GetRtcToken获取token

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

入参列表

参数名称 参数类型 必填与否 样例取值 参数说明
UserId String 必须 200000000000001 用户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

样例程序

  1. //设置访问超时时间
  2. System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
  3. System.setProperty("sun.net.client.defaultReadTimeout", "10000");
  4. //融合通信服务产品名称(产品名固定,无需修改)
  5. final String product = "Dyvmsapi";
  6. //融合通信服务产品域名(接口地址固定,无需修改)
  7. final String domain = "dyvmsapi.aliyuncs.com";
  8. //需要替换成开发者的AK信息
  9. //初始化acsClient暂时不支持多region
  10. IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
  11. DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
  12. IAcsClient acsClient = new DefaultAcsClient(profile);
  13. //组装请求对象-具体描述见控制台-文档部分内容
  14. GetRtcTokenRequest request = new GetRtcTokenRequest();
  15. request.setUserId("2000000000000009");
  16. request.setDeviceId("abcdefg");
  17. request.setIsCustomAccount(false);
  18. //hint 此处可能会抛出异常,注意catch
  19. 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 系统错误

名词解释

有账号模式:

在使用融合通信功能前需要调用AddRtcAccount创建融合通信账号,每个终端都需要一个唯一的融合通信账号,点对点功能只支持有账号模式。

无账号模式:

不需要提前创建融合通信账号,获取token时传入开发者自己的账号,在多方的情况可以使用,多方也可以使用有账号模式。无论采用有账号模式还是无账号模式,一个账号如果在不同设备上登录(获取token时传入的deviceID不一样),较早登录的账号会被踢出。