云屋视频微信 SDK参考

开发准备

  1. 注册小程序公众平台及完成微信认证
  2. 小程序公众平台中设置服务类目,目前仅有个别类目支持在线音视频通讯 参考
  3. 小程序公众平台中开启实时播放音视频流、实时录制音视频流 详细
  4. 小程序公众平台中设置服务器域名 详细
  5. https环境支持及SSL证书配置(小程序线上仅支持https,建议开发阶段也使用https)
  6. 微信开发者工具 官网下载
  7. 云屋小程序SDK 点击下载SDK
开启实时播放音视频流、实时录制音视频流
  1. 打开并登录小程序后台找到开发-接口设置
  2. 启动实时录制音视频流、实时播放音视频流选项
  3. 完成后如下图所示
小程序服务器域名配置

如果使用的是自建服务器,配置域名可以在开发工具自行尝试或者联系云屋技术部咨询。
下面列子是使用云屋服务器的配置步骤及信息,自建服务器请勿使用。

  1. 打开并登录小程序后台找到开发-开发设置-服务器域名,点击修改
  2. 验证完管理员后,如下图所示
  3. 在"request合法域名"中添加下列域名
    • www.cloudroom.com
  4. 在"socket合法域名"中添加下列域名
    • tx1.cloudroom.com:443
    • ali8.cloudroom.com:443
    • ali9.cloudroom.com:543
  5. 完成后如下图所示,点击保存并提交即可

SDK目录结构

.
├─CRSDK         
│  │  CR_Miniapp_SDK.min.js     // SDK包
│  │
│  └─components                     // SDK提供组件
│      ├─CRAudioPlayer              // 音频拉流组件
│      ├─CRVideoPlayer              // 视频拉流组件
│      ├─CRVideoPusher              // 音视频推流组件
│      └─video-custom               // 视频自定义组件,定制需求在此开发(不需要更新)
│
├─meetingDemo                   // 小程序meeting演示
│  ├─pages                          // 项目页面
│  │  ├─chat
│  │  ├─login
│  │  ├─meeting
│  │  └─setting
│  │
│  └─utils
│      └─CRSDK                      // 导入SDK目录到项目中
│
└─videoCallDemo                 // 小程序videoCall演示
    ├─components                    //自定义组件
    │  └─myModal
    │
    ├─pages                         // 项目页面
    │  ├─login
    │  ├─queue
    │  ├─setting
    │  └─videoCall
    │
    └─utils
        └─CRSDK                     // 导入SDK目录到项目中

环境测试

  1. 请勿使用官方APPID测试,否则会有websocket连接数限制
  2. 请使用自己申请的APPID进行测试
  3. 下面以meetDemo为例
    1. 使用注册好的小程序将appid及meetDemo导入项目到微信开发工具中
    2. 在打后的项目中点击详情,勾上不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书
    3. 点击预览,随后在真机中弹出的小程序中打开调试模式
    4. 小程序关闭自动后请下拉微信列表,从最近使用的小程序列表中重新打开小程序
    5. 可以使用不同的两台手机对接测试小程序的音视频功能,具体参考 视频会议

导入SDK文件

  1. 将SDK包的CRSDK目录拷贝到当前项目的小程序开发目录中
  2. 在需要用到SDK接口的页面中引用CR_Miniapp_SDK.min.js

例如:

import CR from '../../utils/CRSDK/CR_Miniapp_SDK.min.js';
  • CR为用户定义的模块输出的函数名,以下文档统一使用CR作为模块输出的函数名。

基本流程

流程1:(不登录,只参加会议)SDK初始化 -> 设置SDK日志开关 -> 设置服务器地址->(参会)-> 反初始化

流程2:(登录后拥有身份,可进行“排队、呼叫、创建会议、参会”等业务)SDK初始化 -> 设置SDK日志开关 -> 设置服务器地址-> 登录 ->(排队、呼叫、创建会议、参会)-> 注消 -> 反初始化

SDK初始化

/**
* SDK初始化
* @access public
* @returns {number} 返回错误码(错误码为0表示没有错误)
*/
var result = CR.Init()
if(result != 0){
    //初始化失败
}else {
    //初始化成功
}

SDK反初始化

/**
* SDK反初始化
* @access public
*/
CR.Uninit()

SDK日志打印

/**
* SDK日志打印
* @access public
* @param {Boolean} bEnable 是否将SDK日志上传到服务器
* @param {Boolean} logDebug 是否在控制台打印SDK日志
*/
CR.EnableLog2File(bEnable, logDebug);

设置服务器地址

/**
* 设置服务器地址
* @access public
* @param {string} serverList -  服务器地址(如:rtc.cloudroom.com);
*/    
CR.SetServerAddr(serverList)

目前仅支持https协议接口,此接口并不会对服务器地址的有效性进行验证,请保证地址准确。

登录

/**
* 登录
* 操作成功则回调CR.LoginSuccess,失败则回调CR.LoginFail
* @access public
* @param {string} account - 云屋鉴权帐号
* @param {string} psw - 云屋鉴权密码
* @param {string} nickName - 昵称
* @param {string} userId - 自定义帐号,不需要时传空字符串
* @param {string} cookie - 自定义数据 (在回调时,回传给调用者)
*/
CR.Login(account, psw, nickName, userId, cookie);

登录会有结果事件通知,成功事件CR.LoginSuccess,失败事件CR.LoginFail,失败事件的错误码参见开说明文档CRVideo_ERR_DEF的详细描述。

注销

/**
* 注销本次登陆
* @access public
*/    
CR.Logout()

退出程序时,必须注销本次登录,然后再进行SDK反初始化操作

呼叫和排队

小程序 SDK为开发者提供呼叫、排队功能。

videoCallDemo文件夹为视频客服的demo。这个demo主要展示的某坐席用户服务于某个队列,系统把这个队列里的排队用户分配给此坐席用户,经过一系列握手之后,再进行视频通话的功能。

业务流程说明

坐席客户:初始化SDK->登录->取得队列信息->服务于某个队列->接受某个排队用户->创建会议->呼叫排队用户->进入会议->音视频通话->挂断/被挂断->停止服务->注销->卸载SDK

排队客户:初始化SDK->登录->取得队列信息->排队于某个队列->接受呼叫->进入会议->音视频通话->挂断/被挂断->注销->卸载SDK

时序图

坐席客户与排队客户通讯的时序图如下所示:

时序图

坐席客户在接受排队用户时,需要创建一个会议,创建成功后把排队用户呼叫进会议中,再进行后面的业务功能操作。用户与用户之间的各种通信功能,如音视频通话,屏幕共享,影音共享等等,必须依托于会议存在。后面还会对会议功能有更详细的说明。

注意事项

A.队列不能由SDK创建,应在Web上先配好

B.一个客服可以服务多个队列,但一个客户只在一个队列排队

C.多个坐席客户可同时服务于一个队列

D.队列有优先级,客服服务多个队列时,将从高优先级的队列服务起。(不同优先级的客户可以通过排队不同队列来实现。 这样比在一个队列插队好,不会引起其他排队用户等待数增加)

会议

小程序 SDK为开发者提供的音视频通信功能,屏幕共享,影音共享等功能,须在会议里进行。

业务流程说明

创建一个会议:

初始化SDK-> 设置服务器地址 ->登录->创建会议->进入会议->其他用户参加会议->音视频通话、屏幕共享、影音共享等->离开会议->注销->卸载SDK

您可以参考这个比较简单演示案例 代码快速上手

参加一个会议:(此处用户未登录参会,实际上登录也可参会)初始化SDK-> 设置服务器地址 -> 根据会议号加入一个会议->音视频通话、屏幕共享、影音共享等->离开会议->卸载SDK

时序图

一次完整的会议时序图如下所示:

时序图

注意事项

A.在SDK初始化且登录会议成功后,才能进行各种会议功能

B.如果只是参会,可以不登录;(如上图参会者)

C.离开会议是没有响应消息的(在网络不通时离开会议也不会退不出去),但“结束会议”时有响应的, 只有收到结束成功消息,才真正算结束成功了

音视频通讯

小程序 SDK为开发者提供便捷的音视频通讯接口,通过以下几步的操作,可以在会议中集成音视频交互功能。音视频通讯需在会议里进行。

参会人信息

会议里可以通过接口GetAllMembers获取当前参加会议的所有成员的详细信息,接口如下所示:

/**
* 获取所有用户的信息
* @access public
* @return {MemberInfo[]} 返回含多个成员信息
*/    
var meber = CR.GetAllMembers()

会议里可以通过接口GetMemberInfo获取指定成员的详细信息,接口如下所示:

/**
* 获取指定用户的信息
* @access public
* @param {string} userID - 用户ID
* @return {MemberInfo} info - 返回用户userID的成员信息
*/    
var meber = CR.GetMemberInfo(userID)

开关麦克风

通过接口OpenMic和CloseMic打开和关闭自已或他人的麦克风,接口如下所示:

/**
* 打开自己的麦克风
* 打开自已的麦克风时,先会进入到AOPENING状态,等服务器处理后才会进入AOPEN状态,此时说话才能被采集到;
* @param {string} userID - 用户的ID
* @access public
*/
CR.OpenMic(userid)

/**
* 关闭自己的麦克风
* 关麦操作是立即生效的,本地会立即停止采集;
* @access public
* @param {string} userID - 登录成功后分配的userID
*/
CR.CloseMic(userID)
(取得用户麦克风是否开启或关闭,可通过接口GetMemberInfo获取)

打开视频

计算机可拥有多个摄像头,通过GetAllVideoInfo可获取用户所有摄像头信息,接口如下所示:

/**
*获取用户所有的摄像头信息
* @typedef {object} VideoDeviceInfo - 视频设备信息
* @property {string} userID - 用户ID,仅支持用户本身
* @returns {VideoDeviceInfo[]} 返回设备列表
*/
var VideoInfoArr = CR.GetAllVideoInfo(userID)

通过接口OpenVideo和CloseVideo开启或关闭指定用户的摄像头,接口如下所示:

/**
* 打开用户的摄像头,以便本地、远端显示视频图像
* @access public
* @param {string} userID - 用户ID,目前仅支持用户本身
*/
CR.OpenVideo(userID)

/**
* 关闭用户的摄像头
* @access public
* @param {string} userID - 用户ID,目前仅支持用户本身
*/
CR.CloseVideo(userID)
(取得用户摄像头是否开启或关闭,可通过接口GetMemberInfo获取)

其他接口

更多的功能接口,请参考云屋微信SDK帮助文档

© Carter all right reserved,powered by Gitbook文件修订时间: 2019-08-08 15:29:18

results matching ""

    No results matching ""