Automatic 2 or 3-way conference

Hi all,

I am trying to set up an automatic 3-way conference. Three extensions would form a group, and whenever one of the parties calls the conference number, the other 2 members are automatically called and put into the conference.

Is this even possible? Please help.

Thanks
LVL 21
netcmhAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

DrDamnitCommented:
Not possible using the actual dialplan conferencing software MeetMe. If you are an expert PHP programmer, it may be possible using AGI.
0
netcmhAuthor Commented:
No I'm not. If anyone has a solution or a method to get me started, I'd be very appreciative.

Thanks
0
naulivCommented:
Let's make sure about what you're trying to do...

* You have an Asterisk PBX with 3 users SIP/100, SIP/101 and SIP/102.
* You'd like that if any of these users dial a particular extension, Asterisk will automatically call the other 2 users, and then put all 3 users into a conference call.

Is that what you are looking for ?
0
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

asternicCommented:
Here you have a dialplan snippet that will do the trick. It is kind of raw but it does not need AGI scripts.

GROUPCALL variable should contain the extensions that are part of the group
CTX should be set to the context where you can find those extensions
ROOM is the meetme conference number to use




exten => 1720,1,Answer
exten => 1720,n,Set(GROUPCALL=602!606!604)
exten => 1720,n,Set(CTX=from-internal)
exten => 1720,n,Set(ROOM=5000)
; Do not modify below this line
exten => 1720,n,Set(AUTHORIZED=0)
exten => 1720,n,Set(i=1)
exten => 1720,n,While($[${i}<=${FIELDQTY(GROUPCALL,!)}])
exten => 1720,n,Set(CURRENT_EXTEN=${CUT(GROUPCALL,!,${i})})
exten => 1720,n,ExecIf($["${CALLERID(number)}" = "${CURRENT_EXTEN}"],Set,AUTHORIZED=1)
exten => 1720,n,ExecIf($["${CALLERID(number)}" != "${CURRENT_EXTEN}"],Set,OTHERPARTY="${OTHERPARTY}!${CURRENT_EXTEN}")
exten => 1720,n,Set(i=$[${i}+1])
exten => 1720,n,EndWhile
exten => 1720,n,GotoIf($["${AUTHORIZED}" = "1"]?ok)
exten => 1720,n,Noop(Calling Extension is not in Group, Hangup)
exten => 1720,n,Playback(goodbye)
exten => 1720,n,Hangup
exten => 1720,n(ok),Noop(Calling Extension is in Group, continue)
exten => 1720,n,Set(OTHERPARTY=${OTHERPARTY:1}
exten => 1720,n,Set(i=1)
exten => 1720,n,While($[${i}<=${FIELDQTY(OTHERPARTY,!)}])
exten => 1720,n,Set(CURRENT_EXTEN=${CUT(OTHERPARTY,!,${i})})
exten => 1720,n,System(/usr/sbin/asterisk -rx "originate Local/${CURRENT_EXTEN}@${CTX} application Meetme ${ROOM}")
exten => 1720,n,Set(i=$[${i}+1])
exten => 1720,n,EndWhile
exten => 1720,n,Meetme(${ROOM})
exten => 1720,n,Hangup

Open in new window

0
netcmhAuthor Commented:
nauliv: yes, just to let you know however, that these users are physically in 3 different locations

asternic: looks complicated, will go through it.
0
asternicCommented:
A little explanation of the diaplan I posted:

GROUPCALL: contains the list of extensions that are part of the group and are allowed to dial that extension to fire the conference. You have to enumerate the extensions separating them with an exclamation mark.

CTX: is the context to dial those extensions, you should be able to reach those extensions from that context in the asterisk dialplan. from-internal is the typical freepbx context.

ROOM: Is the meetme conference number that will be used for the group, It must be defined in meetme.conf

When you dial 1720, it will check if your callerid number is part of the group (in the example it looks for 602, 604 and 606). If the callerid number does not match any of those, it will disconnect the call.
If it matches, it will put you on meetme number ROOM and it will originate two calls to the other members and put those calls in the meetme room too.



0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
netcmhAuthor Commented:
This would hold true even if the people those extensions are assigned to dial in from different states, right?
0
asternicCommented:
If those people have sip accounts registered in your asterisk box, it does not matter where they are located. They appear as local extensions to asterisk.

It they are dialing in from external lines into your system, you can do that too by using their callerids and real phone numbers (not extensions). It should work too providing that you are receiving a proper callerid that is also suitable for being dialed out.

0
netcmhAuthor Commented:
Wonderfully explained. Thank you
0
dss-techCommented:
Nice script, works very fine!
I have another problem: I need that when one of the extensions leaves the conference all the other ones are automaticalyy hanged up. Is it possible?

Thanks a lot
0
asternicCommented:
The only way to have automatically destroyed conferences without using AMI is to use the options for meetme "A" for marking a user, and "x" for destroying the conference when the last marked user exists.

The problem is that you will have to decide what extension is the one that is going to be marked, the dialplan I posted give sthe same meetme call for everyone, you should modify it to pass Ax as meetme options to just one of the extensions, if that extension exists , the conference will be destroyed. So it works only by marking users, not for any of the users.
0
dss-techCommented:
asternic,
thank you for the quick answer.

This could not be a problem for me, since I'm using the script to submit messages throug SNOM PA1 paging phones, so that there is one actual originator and the PA1 acts as "clients", meaning that they auto-answer to the conference, but they cannot hang up by themseves. As soon as the "originator" leaves the conference all the partecipants must be hanged up.
0
dss-techCommented:
I mean: I would like to have ext 739 and 763 to be joined to my conf and the conf destroyed when I leave.

Should sound something like this:

exten => 1002,1,Answer
exten => 1002,n,Set(GROUPCALL=733!763!739)
exten => 1002,n,Set(CTX=from-internal)
exten => 1002,n,Set(ROOM=5000)
; Do not modify below this line

exten => 1002,n,System(/usr/sbin/asterisk -rx "originate Local/763@${CTX} application Meetme ${ROOM}")
exten => 1002,n,System(/usr/sbin/asterisk -rx "originate Local/739@${CTX} application Meetme ${ROOM}")
exten => 1002,n,Meetme(${ROOM},Ax)
exten => 1002,n,Hangup

But it doesn't work when I hang up the others remain on the conference
0
asternicCommented:
Have not tried myself, but try passing x to the Meetme call in the originate line.
0
dss-techCommented:
Thanks, that made the trick.

I put x on "silent" participants and xA on originating call ant that works.
Thank you for your help
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
IP Telephony

From novice to tech pro — start learning today.