We've tried to keep the changes minimal while at the same time
expanding the API to support record and playback.
We welcome all your feedback on the changes below.
** Overview
In the current API, BigBlueButton supports the following calls:
create
join
end
isMeetingRunning
getMeetings
getMeetingInfo
In BigBlueButton 0.8 there will be updates to the create, join, and
getMeetings, and getMeetingInfo API calls, along with the addition of
three new API calls to support record and playback:
getRecordings
setRecordingsPublish
deleteRecordings
The current API version is 0.7 (this is the result returned from a
BigBlueButton 0.71a server). This string will change to 0.8 so you
can detect the newer version of the API on the BigBlueButton server.
All the API changes and additions are backward compatible.
Applications using API version 0.7 calls will work unchanged on a
BigBlueButton 0.8 server.
** Updates to existing API calls
1. Add the optional parameters ‘record’ and ‘duration’ to create
record
type: string
values: true|false
default: false
duration
type: integer (in minutes)
default: 0 (no automatic end)
Setting ‘record=true’ instructs the BigBlueButton server to record the
media and events in the session for later playback. BigBlueButton
starts recording when the first person joins the session, and stops
recording when either the last person leaves or upon receiving an end
API request for the associated meetingID.
When the recording stops, BigBlueButton automatically begins
processing the recorded media and events using one or more ‘ingest and
processing’ scripts installed on the BigBlueButton server. The
default scripts will playback the slides and audio in the session.
Meetings now have a duration. The default is 0, which means the
meeting continues until the last person leaves or an end API calls is
made with the associated meetingID. This is how meetings work in
BigBlueButton 0.7.
However, when recording a meeting, you should pass a value for
‘duration’. When the length of the meeting reaches the duration,
BigBlueButton automatically ends the meeting. Passing a duration for
a meeting prevents the scenario where one (or more) users linger in
the session long after the meeting has finished (i.e. leave their
browser open over night), indefinitely delaying the processing of the
recording for the meeting.
2. The ‘meetingID’ parameter for create should not contain commas
If you intend to use the new getRecordings, setRecordingsPublish, and
deleteRecordings API calls, the value for ‘meetingID’ must not contain
commas.
The above new API calls will accept a set meetingIDs, separated by a commas.
2. create will accept one (or more) additional parameters prefixed
with ‘meta_’
meta_* (optional)
type: string
These additional metadata parameters will be stored by BigBlueButton
and later retrievable via the getMeetingInfo call (while the meeting
is running) and getRecordings (after the meeting is finished and the
recording is ready for access).
Examples of meta parameters are meta_Presenter, meta_category,
meta_LABEL, etc. All parameters are converted to lower case, so
meta_Presenter would be the same as meta_PRESENTER.
3. The parameters ‘name’ and ‘meetingID’ can now differ in create.
The ‘meetingID’ parameter should be an internal key value (without
commas) created by the 3rd party application calling the API. In
contrast, the ‘name’ parameter is meant as an external, user visible
value accesible via the %%CONFNAME%% string in the welcome message.
The parameters ‘name’ and ‘meetingID’ can now differ, enabling 3rd
party applications to change the ‘name’ between sessions, such as
“First Meeting”, “Second Meeting”, while keeping a consistent
‘meetingID’ for later retrieval of recordings.
4. The XML result from create now includes ‘createTime’.
Reason: Third-party applications using the BigBlueButton API can now
pass ‘createTime’ a join URL to prevent re-use of the URLs between
sessions with the same ‘meetingID’ (see 6).
The value for ‘createTime’ is the unix epoch time (see
http://en.wikipedia.org/wiki/Unix_time).
Here’s a sample return from the create
<response>
<returncode>SUCCESS</returncode>
<meeting>
<meetingID>87sdf89210gt</meetingID>
<createTime>1308591802</createTime>
<attendeePW>testa</attendeePW>
<moderatorPW>testm</moderatorPW>
<hasBeenForciblyEnded>false</hasBeenForciblyEnded>
<messageKey>createSuccess</messageKey>
<message>Meeting has been create</message>
</meeting>
</response>
5. getMeetings and getMeetingInfo also return ‘createTime’, along
with the value for ‘record’, and ‘duration’
For example, here is a sample XML response from getMeetingInfo
<response>
<returncode>SUCCESS</returncode>
<meetingID>123456</meetingID>
<createTime>1308591802</createTime>
<attendeePW>abc</attendeePW>
<moderatorPW>qwe</moderatorPW>
<running>true</running>
<startTime>Thu Mar 04 14:05:56 UTC 2010</startTime>
<endTime>null</endTime>
<participantCount>2</participantCount>
<moderatorCount>1</moderatorCount>
<attendees>
<attendee>
<userID>40</userID>
<fullName>JT Attendee</fullName>
<role>VIEWER</role>
</attendee>
<attendee>
<userID>37</userID>
<fullName>JT Moderator</fullName>
<role>MODERATOR</role>
</attendee>
</attendees>
<messageKey/>
<message/>
</response>
Note: ‘createTime’ is the time the meeting was create by
BigBlueButton, ‘startTime’ is when the first person joins, and
‘endTime’ is the time when last person has left the meeting or when
BigBlueButton received an end API call for the meeting.
6. join can now pass ‘createTime’ parameter
createTime (optional)
type: integer
When passing ‘createTime’ with a join URL, BigBlueButton will ensure
it matches the ‘createTime’ for the session. If they differ,
BigBlueButton will not proceed with the join request.
This prevents a user from reusing their join URL for a subsequent
session with the same ‘meetingID’.
While the ‘createTime’ parameter is optional, we recommend that 3rd
party applications using the BigBlueButton API add this parameter to
their join calls.
** New API Calls
7. Add ‘getRecordings’ API call
meetingID[,meetingID]* (optional)
type: string
checksum
type: string
Retrieves the recordings that are available for playback for a given
‘meetingID’ (or set of meeting IDs).
Each ‘meetingID’ can have multiple recordings. Each recording
(returned in the XML described below) has a ‘recordID’, which is
computed as ‘meetingID’-’createTime’.
Each ‘recordID’ can have multiple playback formats. For BigBlueButton
0.8, the built-in playback format, called simple, will playback slides
+ audio. By adding your own ingest and processing scripts you can add
additional playback formats to BigBlueButton 0.8.
There will be a time lag between the end of a meeting and the
availability of one (or more) playback formats. This time lag depends
on how long a given ingest and processing script takes to process the
raw media and XML events recorded by BigBlueButton into a format for
playback.
For each type of playback format, BigBlueButton returns a url and
length. An example is
<format>
<type>simple</type>
<url>http://server.com/simple/playback?recordID=183f0bf3a0982a127bdb8161-1308597520</url>
<length>62</length>
</format>
There are three different usages for getRecordings
getRecordings?checksum=2134132421342134
The getRecordings API call will return a list of all recordings on the
BigBlueButton server that are available for playback.
getRecordings?meetingID=CS101&checksum=457897ew56654
If the optional parameter meetingID is passed then BigBlueButton will
return all the recordings for the given meetingID that are available
for playback.
getRecordings?meetingID=CS101%2CCS102&checksum=457897ew56654
BigBlueButton will return all the recordings that are available for
playback for a set of meetingIDs. Note, the string must URL encoded
(UTF-8).
The information returned from getRecordings includes any meta_*
parameters initially passed using the create call.
Examples of response:
No Recordings
<response>
<returncode>SUCCESS</returncode>
<messageKey>noRecordings</messageKey>
<message>No recordings available</message>
</response>
Get Recordings
<response>
<returncode>SUCCESS</returncode>
<recordings>
<recording>
<recordID>183f0bf3a0982a127bdb8161-1308597520</recordID>
<meetingID>CS101</meetingID>
<name><![CDATA[On-line session for CS 101]]></name>
<published>false</published>
<startTime>Thu Mar 04 14:05:56 UTC 2010</startTime>
<endTime>Thu Mar 04 15:01:01 UTC 2010</endTime>
<metadata>
<title><![CDATA[Test Recording]]></title>
<subject><![CDATA[English 232 session]]></subject>
<description><![CDATA[First Class]]></description>
<creator><![CDATA[Fred Dixon]]></creator>
<contributor><![CDATA[Richard Alam]]></contributor>
<language><![CDATA[en_US]]></language>
</metadata>
<playback>
<format>
<type>simple</type>
<url>http://server.com/simple/playback?recordID=183f0bf3a0982a127bdb8161-1308597520</url>
<length>62</length>
</format>
</playback>
</recording>
<recording>
<recordID>183f0bf3a0982a127bdb8161-13085974450</recordID>
<meetingID>CS102</meetingID>
...
</recording>
</recordings>
<messageKey/>
<message/>
</response>
8. Add ‘setRecordingsPublish’ API call
Set the <publish>..</publish> value to true or false in the
getRecordings result for one (or more) recordings.
You can also pass a set of recordIDs by separating them by commas.
recordID[,recordID]*
type: string
checksum
type: string
IC – Incorrect Checksum
<response>
<returncode>FAILED</returncode>
<message_key>checksumError</messageKey>
<message>You did not pass the checksum security check</message>
</response>
DNE – Does Not Exist
<response>
<returncode>FAILED</returncode>
<message_key>notFound</messageKey>
<message>We could not find a recording with that recordID</message>
</response>
Publish
<response>
<returncode>SUCCESS</returncode>
<published>true</published>
</response>
9. deleteRecording
Delete one (or more) recordings from the BigBlueButton server. You
can also pass a set of recordIDs by separating them by commas.
recordID[,recordID]*
type: string
checksum
type: string
DNE – Does Not Exist
<response>
<returncode>FAILED</returncode>
<message_key>notFound</messageKey>
<message>We could not find a recording with that recordID</message>
</response>
Success
<response>
<returncode>SUCCESS</returncode>
<deleted>true</deleted>
</response>
** Summary
Lots of details above. Again, we tried to keep the additions to the
API as minimal as possible while enabling flexibility for creating,
accessing, and managing the recordings in BigBlueButton 0.8.
We welcome your feedback.
Regards,... Fred
Hi thanks for all your hard work guys. So when is the release date for this ?
> --
> You received this message because you are subscribed to the Google Groups "BigBlueButton-dev" group.
> To post to this group, send email to bigblueb...@googlegroups.com.
> To unsubscribe from this group, send email to bigbluebutton-...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/bigbluebutton-dev?hl=en.
>
We release on quality, not dates.
However, you can tell when an iteration is getting close to a release
when it enters beta. We still a few weeks (not months!) away from a
beta. Our beta cycles are historically four to six weeks long, but
they will be as long (or as short) as needed to ensure we have a
quality release.
Our last release was BigblueButton 0.71, released on January 13, 2011.
This has been a long development cycle for us, and we're looking
forward to getting to beta.
Regards,... Fred
Juts to be sure. Can i prevent users to join with a invite url several times, or can i prevent to only join the meeting once?
Please provide more information, i don't really understand what this time param does.
With a bit more thought ... BigBlueButton could reject the join URL if
a user with the same userID is already in the meeting. If you have
two accounts on your server with the name 'cforce', but they both have
different IDs in your system, both could still join.
Since the userID parameter is optional, a 3rd party application could
omit the userID and essentially disable such a check.
Regards,... Fred
> --
> You received this message because you are subscribed to the Google Groups
> "BigBlueButton-dev" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/bigbluebutton-dev/-/SqShKHeL4T4J.
> How can i bind a userid with a username and and attende passwort.
> Till now there is one url for all attendes with the same passwort and the
> same base url.
Just to be clear, BigBlueButton does not have a user/password
database. Validation of the user is the responsibility of the 3rd
party application. Once validated, the 3rd party application creates
for the user a join URL and returns it to the user's browser. The
user is then logged into BigBlueButton.
Assuming for the moment you are a developer and are integrating
BigBlueButton into your application, then the invite URLs you send out
could point to your application, not directly to BigBlueButton. When
a user clicks on the invite URL, they are redirected to your
application first, at which point you can validate them first before
returning back the final join URL for BigBlueButton.
For example, the API example for creating a meeting at
http://demo.bigbluebutton.org/bigbluebutton/demo/create.jsp
create an invite URL that, when clicked, asks the user for their name.
The logic of create.jsp could be extended (or integrated into another
application) to also ask them for a password as well.
If BigBlueButton 0.8 enforces a unique userIDs in a session, then if
two people use the same joinURL, once one of them joins the session,
BigBlueButton would prevent the other from joining.
Regards,... Fred
With a bit more thought ... BigBlueButton could reject the join URL if
a user with the same userID is already in the meeting. If you have
two accounts on your server with the name 'cforce', but they both have
different IDs in your system, both could still join.
We didn't know we had a BigBlueButton Fan Club :-).
First off, check out our FAQ on maximum number of simultaneous users
This FAQ entry gives you some suggestions in how to stress test your server.
For bandwidth usage, see
and recommended server
and video quality
The audio quality will improve in BigBlueButton 0.8 as we move to
wideband speex. The increased audio quality will require the
BigBlueButton server (specifically FreeSWITCH) to work harder to
transcode audio. See
http://groups.google.com/group/bigbluebutton-dev/browse_thread/thread/a36d61df9b9fc45b#
Finally, there is no formula for calculating # of users given the
number of variables. Your best approach is to your server and its
bandwidth with a number of users that reflect typical usage (you can
simulate large number of users by having ten friends each start a
BigBlueButton session in a browser tab) to determine the maximum load.
There are lots of items ahead on our roadmap, see
http://code.google.com/p/bigbluebutton/wiki/RoadMap1dot0
At the moment, the core development team is focused on making sure the
experience of using BigBlueButton for 25 users or less in a session
works really, really well. There is more work to be done, and the
shift to scaling BigBlueButton to large number of users will follow
it.
Regards,... Fred
--
http://code.google.com/p/bigbluebutton/wiki/FAQ#BigBlueButton_Committer