[Asterisk-Dev] Basic Conferencing from IAX2, other VoIP Channels
Steven Sokol
ssokol at sokol-associates.com
Thu Jun 3 10:45:42 MST 2004
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 at 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
More information about the asterisk-dev
mailing list