N-way call

sorry for newbie question
i would 'now if is there something in freepbx similar to what is described here:


hi all,

i am having the same requirement. something like 3 way calling would be very helpful. the link provided by tia in voip-info forums contains the code to be edited manually. i need to do that using freepbx.



My meetme conference is working fine…I have inserted the code and when i try to press *8 or *0 during a call…nothing happens…No macro is executed…

My verbose is also showing no changes


I am looking to provide this functionality. I am using Elastix distros (asterisk 1.4 and 1.6). First I changed the files mentioned above, reloaded Asterisk and tested. The system did not recognize the DTMF codes. Next I changed globals_custom.conf and added DYNAMIC_FEATURES=nway-start. At that point the system recognized the nway-start DTMF. The CLI shows – Feature Found: nway-start exten: nway-start, The call is then disconnected. When I list the dialplan in the CLI by typing a dialplan show, the nway-start macro is listed. Please let me know what I may be doing wrong. Thanks in advance.

This works on mine - dynamically creates conferences and checks to ensure they’re free - you may have to change the outbound part to specify your trunk-ids…I copied this out of the dialplan and I’m sure it could be better, but it works! 2 files need to be modified as listed below - and then do a reload before testing…you must have meetme installed and working before you start, but you don’t need to create the rooms in advance - that’s done dynamically. This also limits dialing digits to 10.

;features_applicationmap_custom.conf additions


;extensions_custom.conf file additions
exten => s,2,Set(DYNAMIC_FEATURES=nway-start)

exten => _XXXXX,1,noop(dynamic-nway)
exten => _XXXXX,2,Answer
exten => _XXXXX,n,Set(CONFNO=${EXTEN})
exten => _XXXXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _XXXXX,n,MeetMe(${CONFNO},1pdMX)
exten => _XXXXX,n,Hangup
exten => _1NXXNXXXXXX,n,Macro(outisbusy,)
exten => h,n,noop(dynamic-nway-end)
exten => h,n,Hangup

exten => s,1,noop(dynamic-nway-invite)
exten => n,n,Hangup
exten => h,n,noop(dynamic-nway-invite-end)

exten => _NXXNXXXXXX,1,noop(dynamic-nway-dest)
exten => _NXXNXXXXXX,2,Macro(user-callerid,SKIPTTL,)
exten => _NXXNXXXXXX,n,Set(_NODEST=)
exten => _NXXNXXXXXX,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _NXXNXXXXXX,n,Macro(dialout-trunk,4,${EXTEN},)
exten => _NXXNXXXXXX,n,Macro(dialout-trunk,12,${EXTEN},)
exten => _NXXNXXXXXX,n,Macro(dialout-trunk,6,${EXTEN},)
exten => _NXXNXXXXXX,n,Macro(dialout-trunk,5,${EXTEN},)
exten => _NXXNXXXXXX,n,Macro(outisbusy,)
exten => h,n,noop(dynamic-nway-dest-end)

exten => s,1,noop(macro-nway-start)
exten => s,2,Set(CONFID=0)
exten => s,3,Set(CONFID=$[${CONFID} + 1])
exten => s,4,MeetMeCount(${AMPUSER}${CONFID}|count)
exten => s,5,Gotoif,$[${count} >0 ]?3
exten => s,6,Set(CONFNO=${AMPUSER}${CONFID})
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,10,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,Dial(Local/${CONFNO}@from-internal,g)
exten => h,n,noop(macro-nway-start-end)

exten => s,1,noop(macro-nway-ok)
exten => s,2,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => h,n,noop(macro-nway-ok-end)

exten => s,1,noop(macro-nway-notok)
exten => s,2,SoftHangup(${BRIDGEPEER})
exten => h,n,noop(macro-nway-notok-end)

I just tried using this, but when I reload features, no changes take effect.



Has anyone got this to work yet?

I following the first set of instructions, and as per other posters, nothing happened. Asterisk log file in full debug mode shows that pressing *8 does nothing at all.

Are there some other steps to do, e.g. setting up an application(?)/destination(?).

Any help appreciated.


i understood the way the conference works, but you can’t dynamically create a room on meetme (or at least not on the newer versions of asterisk 1.11), so the way to do it should be from a function that search an empty room using “MeetMeCount()” and finding if it’s not in use by another users.

A few things i found out developning this function is that asterisk changed a few things like the separation in the comands, (instead of using this symbol “|”, now i’ts using commas)

and the other thing i saw is that you can’t use this application from the “callee” point of view, so if a costumer calls you and you want to create the nway call yourself, the costumer can’t reach the conference until you hang up, many people said that the “ChannelRedirect()” function has a bug, but in my personal opinion i think the problem it’s the letter “s” in the extension, because in asterisk it’s used for 2 things, one is for naming the first caller and second is because it’s needed for starting a macross.

The way i solved that was making aonther macross, very similar to this one but with the logic backwards, so instead of using the “caller” to call the macross and create the conference, i used the “callee” and instead of redirecting the costumer (the one who calls you in the first place) via “ChannelRedirect()” on your programming, you are redirecting yourself letting the “s” extension keep going with the rest of the macross.

I was able to setup basic 3-way calling using in-built features designed for asterisk 12+. I did this simply by adding the following to /etc/asterisk/features_featuremap_custom.conf:

atxferthreeway = *42
atxferabort = #42

You initiate by starting a transfer via *2 (default for freepbx). The callee is placed on hold and you are presented with a dial tone. Dial the new number to bring into the 3-way call. Then once you are ready to bridge dial *42 (or whatever you defined above for atxferthreeway). To cancel the 3-way call and go back to the original call dial #42 (or whatever you defined above for atxferabort).

This uses features already defined as part of atxfer via asterisk. You can see other features defined by checking the features.conf.sample via asterisk/configs/samples/features.conf.sample at master · asterisk/asterisk · GitHub

1 Like