BigBlueButton是一个视频会议软件,它的演示环境和开发环境的搭建,网上都有很多的资料,为了便于二次开发,我整理了一下BBB的常用功能API接口,供参考:
BigblueButton调用API,只需一个HTTP请求一个URL,查询参数提供呼叫所需要的信息,API返回一个XML响应;
BigblueButton 0.81 API分为三大类,描述管理功能的API方法、描述监控功能的API方法、描述录制功能的API方法,每个模块有自己的URL接口;
一、管理(描述管理功能的API方法):
1. 创建会议(create):
参数 | 必需/可选 | 类型 | 描述 |
name | 可选 | String | 会议名称 |
meetingID | 必需 | String | 会议ID被第三方应用程序用于识别本次会议。对服务器来说,正在调用的会议ID必须是唯一的 |
attendeePW | 可选 | String | 用户加入会议密码 |
moderatorPW | 可选 | String | 创建者管理密码 |
welcome | 可选 | String | 欢迎词。当与会者进入会议时,该欢迎信息会显示在聊天窗口上,可以设置一个默认的欢迎信息在bigbluebutton.properties属性配置文件中 |
diaNumber | 选 | String | 与会者使用普通电话接入会议的拨号号码,可以在bigbluebutton.properties属性配置文件中设置一个默认的拨号号码 |
voiceBridge | 可选 | String | 与会者加入语音电话会议的语音电话会议号码。在默认的 Asterisk设置中,它是一个PIN密码,5位数字,拨号用户必须输入该密码才能参加会议,如果想要改变这种模式,必须编辑/etc/asterisk/bbb_extensions.conf文件。如果使用的是默认FreeSWITCH的设置,建议总是通过一个5位数的voiceBridge参数—数字'7'开始。如果不为voiceBridge传递一个值,那么用户将不能够参加一个会议的语音会议 |
webVoice | 可选 | String | 参与者进入加入语音会议的语音会议alphanumberic |
logoutURL | 可选 | String | 点击“你已从会议中登出”的OK按钮时转入的URL,这个参数可以取代bigbluebutton.properties中bigbluebutton.web.loggedOutURL属性的定义 |
record | 可选 | String | 设定“record= true' 表示BigBlueButton的服务器会话中的媒体和事件将被录制供以后播放。可用的值是true或false。默认值是false |
duration | 可选 | number | 指定会议的长度,即会议的持续时间。当到达的时间,BigBlueButton自动结束了会议。默认为0,这意味着会议继续进行,直到最后一个人离开或结束API调用相关meetingID |
meta | 可选 | String | 创建会议时指定一个或多个元数据值。这些将被BBB存储,以备以后通过getMeetingInfo和getRecording调用来检索 |
创建会议URL实例:
创建会议URL构建过程:
String create_parameters = "name=" + urlEncode(name)
+"&meetingID=" + urlEncode(meetingID) + "&attendeePW=”+ urlEncode(attendeePW)+”&moderatorPW=”+urlEncode(moderatorPW);
String salt = “21f9bf3af618853aab55f38e5826d4c8”;
String BigBlueButtonURL = “http://ip/bigbluebutton/”;
String enterURL = BigBlueButtonURL + "api/create?"+ create_parameters+“&checksum=”+checksum("create" + create_parameters + salt);
其中:
Checksum生成java代码函数:
publicstatic String checksum(String s) {
String checksum = "";
try {
checksum = hex_sha1(s);
} catch (Exception e) {
e.printStackTrace();
}
return checksum;
}
Checksum生成js代码函数:
var salt = "21f9bf3af618853aab55f38e5826d4c8";
var create_parameters= "name=" + name + "&meetingID=" + meetingID +"&attendeePW=" + attendeePW + "&moderatorPW=" +moderatorPW;
var urlCreste = checksum("create" +create_parameters + salt);
function checksum(var s) {
varchecksum = "";
checksum= hex_sha1(s);
returnchecksum;
}
salt为服务器默认的效验码,可通过bbb-conf --salt获取,可保存于配置文件中
ip为服务器地址
2. getDefaultConfigXML
获取默认的XML配置文件,第三方得到当前xml配置文件,修改参数,利用setConfigXML将其保存到BigblueButton服务器上。
URL实例:
http://yourserver.com/bigbluebutton/api/getDefaultConfigXML.xml?[parameters]&checksum=[checksum]
parameters(参数)为当前会议信息,checksum产生过程同上。
3. setConfigXML
将自定义的XML配置文件写入当前会话,第三方可以使用自己需要的配置。
参数 | 必需/可选 | 类型 | 描述 |
MeetingID | 必需 | String | 一个正在召开的会议id |
configXML | 必需 | String | 一个有效的XML配置文件 |
URL实例:
http://yourserver.com/bigbluebutton/api/setConfigXML.xml?[parameters]&checksum=[checksum]
parmeters(参数)为当前会议信息,checksum产生过程同上。
4. 加入会议(join)
参数 | 必需/可选 | 类型 | 描述 |
fullName | 必需 | String | 加入会议的用户名 |
meetingID | 必需 | String | 加入的会议ID |
password | 必需 | String | 与会者使用的密码。如果提供的是主持人密码,他将获得主持人权限 |
createTime | 可选 | String | 使用该API的第三方应用程序现在可以提交一个createTime参数(在调用创建会议API时),BigBlueButton将确保它与本次会话的createTime匹配。如果它们不同,BigBlueButton将不会进行连接请求。这可以防止一个用户重复使用有相同meetingID的参会URL |
userID | 可选 | String | 标识一个用户身份,以便应用程序区分这个人是谁。在调用getMeetingInfo这个API时,这个用户ID将被返回 |
webVoiceConf | 可选 | String | 如果想通过自定义语音扩展加入使用VoIP语音会议,在调用详细记录用户加入会议,收集更多的信息,需要修改/etc/asterisk/bbb-extensions.conf来处理这个新的扩展。 |
configToken | 可选 | String | 返回setConfigXML设置的XML配置,加载 |
avatarURL | 可选 | String | 在config.xml中displayAvatar设置,设置为true,则用户的avatar可见 |
URL实例:
http://yourserver.com/bigbluebutton/api/join?name=Test+Meeting&password=333444&meetingID=ascds&checksum=21f9bf3af618853aab55f38e5826d4c8
URL构建过程:
String join_parameters = "fullname=" + urlEncode(joinname)
+ "&meetingID=" + urlEncode(meetingID) +"&password=”+ urlEncode(password);
String salt = “21f9bf3af618853aab55f38e5826d4c8”;
String BigBlueButtonURL = “http://ip/bigbluebutton/”;
String joinURL = BigBlueButtonURL + "api/create?"+ join_parameters+“&checksum=”+checksum("creat" + join_parameters + salt);
5.结束会议(end)参数 | 必需/可选 | 类型 | 描述 |
meetingID | 必需 | String | 结束会议ID |
password | 必需 | String | 该会议的主持人密码,使用参会密码不能结束会议 |
URL实例:
http://yourserver.com/bigbluebutton/api/end?meetingID=1234567890&password=mp&checksum=1234
URL构建过程:
String end_parameters =”&meetingID="+ urlEncode(meetingID) + "&password=”+ urlEncode(password);
String salt = “21f9bf3af618853aab55f38e5826d4c8”;
String BigBlueButtonURL = “http://ip/bigbluebutton/”;
String endrURL = BigBlueButtonURL+ "api/end?"+ end_parameters+ “&checksum=”+checksum("end"+ end_parameters + salt);
二、监控(描述监控功能的API方法)
1. isMeetingRunning(检查指定的会议是否在运行中):
参数 | 必需/可选 | 类型 | 描述 |
meetingID | 必需 | String | 会议ID |
URL实例:
http://yourserver.com/bigbluebutton/api/isMeetingRunning?meetingID=test01&checksum=1234
2. getMeetings(获得会议列表):返回服务器上所有会议的列表
URL实例:
http://yourserver.com/bigbluebutton/api/getMeetings?checksum=[checksum]
3.getMeetingInfo(获得会议的细节信息):参数 | 必需/可选 | 类型 | 描述 |
meetingID | 必需 | String | 会议ID |
password | 必需 | String | 会议的主持人密码。你不能通过参会密码获得会议信息 |
URL实例:
http://yourserver.com/bigbluebutton/api/getMeetingInfo?meetingID=test01&password=mp&checksum=1234
三、 录制(描述录制功能的API方法):1. getRecordings(获取录制的列表):
参数 | 必需/可选 | 类型 | 描述 |
meetingID | 必需 | String | 获得录音的一个会议ID。它可以是一组由逗号分开的meetingID集合。如果未指定会议ID,会获得到所有的录音 |
URL实例:
http://yourserver.com/bigbluebutton/api/getRecordings?checksum=1234
http://yourserver.com/bigbluebutton/api/getRecordings?meetingID=CS101&checksum=abcd
http://yourserver.com/bigbluebutton/api/getRecordings?meetingID=CS101,CS102&checksum=wxyz
2.publishRecordings(发布或取消发布一个录音):发布和取消发布一个给定的recordID(或recordID集合)的录音
参数 | 必需/可选 | 类型 | 描述 |
recordID | 必需 | String | 指定申请发布或者取消发布的录音的的record ID。它可以使一组由逗号分隔的meetingID的集合 |
publish | 必需 | String | 发布或者取消发布录音的值。可用值:true或者false |
URL实例:
http://yourserver.com/bigbluebutton/api/publishRecordings?recordID=record123,recordABC&publish=true&checksum=wxyz3. deleteRecordings(删除现有的录音):
删除一个或多个给定recordID(或者record ID集合)的录音
参数 | 必需/可选 | 类型 | 描述 |
recorded | 必需 | String | 用于指定要删除的录音记录的ID,它可以是一组由逗号分开的meetingID |
URL实例:
http://yourserver.com/bigbluebutton/api/deleteRecordings?recordID=record123&checksum=1234
http://yourserver.com/bigbluebutton/api/deleteRecordings?recordID=record123,recordABC&checksum=wxyz