====== BBB Voice conference from SIP Clients (Expertus Meeting) ====== ===== Requirement ===== The users should be able to join the BBB voice conference by dialing in the conference number and entering the voice bridge for the particular conference. They can join from any SIP client like a VOIP phone etc. provided that they know the dialin number and the voice bridge(aka extension) of the particular meeting. ===== Implementation ===== To support this freeswitch of BBB should be registered with asterisk so that the external calls to asterisk will be routed to BBB's frees witch. More info - http://code.google.com/p/bigbluebutton/wiki/FAQ#How_do_I_forward_calls_from_my_Asterisk_server_to_FreeSWITCH_in Once we have this setup then we need to allot extensions to meetings such that an extension can be occupied by only one meeting at a time and extensions are made available out side the duration of the meeting. ==== Implementation - Assigning the extensions to meetings ==== extensions table holds the list of extension numbers. Typically there will be 10's or 100's of extensions available for the app to use. assigned_extenions hold the list of numbers assigned to any meeting with the time frame during which it is not available. A meeting can be started 30 minutes before the scheduled time and is expired after 30 minutes of end time. Just to have some buffer time, a meeting can hold an extension from 1 hour before the scheduled start to 1 hour after the end time. So, ASSIGNED_TIME_FRAME = (meeting scheduled start time - 1 hour TO meeting scheduled end time + 1 hour) **1. Creation cycle** * Check the extensions that are free during the meeting's ASSIGNED_TIME_FRAME and assign one of them at random. * If none of the extensions are avialable during ASSIGNED_TIME_FRAME of the meeting, then inform the user that the voice lines are busy during this time. Attendees can still attend the meeting from the web client. * Include the assigned extension number in the email notification for the invitees. **2. Edit cycle** * Check if either scheduled start time or duration is being changed. If yes then check if the assigned voice bridge is free during this time. If it is not free then assign a new voice bridge number available at that time. If none of the extensions are available then inform users that they cannot use the voice line. **3. Delete** Delete the associations with the extensions and free them to use during that time. ===== Table Design ===== Table name - extensions Saves list of extension numbers. The data is populated from a csv file with a rake task. ^ Column_name ^type ^ Description ^ | id | integer | primary key | | number| integrer | The value of the extension number - (Ex- 85001)| | active| boolean | If the extension number can be used for future meetings or not| ===== Open Questions ===== 1. Should allowing the users to join from phone/any sip client be an option while creating the meeting ?