From: Steven S. <ss...@so...> - 2004-06-03 17:45:53
|
Here's my take on the process: Personal Conferencing for IAX2 For every IAX2 user that has the feature conf enabled (a new entry in the iax.conf and/or the database) chan_iax2 will support the ability to conference two or more parties using the MeetMe application, or a derivation of the MeetMe app. A new IAX2 command for Conference (CONF) will be created. The command will require one or more IEs that indicates whom to conference. [Creating The Initial Conference] --------------------------------- The client (UA) should recognize that a press of the CONF button with a single active call to mean "put this call on hold while I establish another call for a conference". The client will then place the active call on hold and select a different appearance which can be used to establish the seconds call. The client will likewise recognize the second click of the CONF button to mean "Ok, conference these calls together" and will send a CONF command to Asterisk. Asterisk will move the held party into the conference room, then move the two parties to the active call into the meeting room. The appearance used to conference the additional party will be freed and return to idle (i.e. the call will be destroyed). [Adding Parties To An Existing Conference] ------------------------------------------ If the user chooses to add an additional party to the conference by again pressing the CONF key, he/she will put the conference on hold and access another appearance for dialing. When the call to the new party is active, the user can again press CONF to add the new active party. Somewhere along the line, the system will need to recognize that the user's personal conference room _is_ the held party and will simply move the new remote party into the conference. The client should be smart enough to re-select the held conference channel (taking it off hold) so that all parties are again active. [Simulating This Scenario] -------------------------- I managed to simulate this by using static conferences with extension numbers and the Manager API. I am able to merge the calls into the static conference without any real issue. I simply redirect the held channel to the extension for the MeetMe, then redirect the two active channels to the same extension. All parties wind up in the bridge. Works fine. [Rules/Thoughts] ---------------- The conference application should be silent and pin-less by default. The conference should collapse when the conference count reaches 1 instead of zero. The conference should collapse when the "host" (i.e. the IAX user) drops out of the bridge. Some similar mechanism for dropping (kicking) conference members should be included in the package. [Programming The Conference Mechanism] -------------------------------------- The question is, what is the best way to programmatically affect this same set of circumstances? I want to make it work from IAX2 semi-automagically. Adding the command to IAX2 looks pretty easy. Where I get lost is in the moving process. I don't want to have to create an extension for each user's conference number. I want to activate the app_meetme code, passing in the user's ID. (i.e. [iaxuser@192.168.1.194:5469]) as the name of the conference to either create or join. I believe this requires some small changes to MeetMe to support the named dynamic conference. But where I really get lost is in the process of redirecting the channels to the MeetMe app in the first place. Is there any code similar to pbx_async_goto_by_name that takes an application as a destination, rather than an extension/priority? Anybody want to kick me in the right direction here? Thanks, Steve |