Asterisk 3-way calling

Asterisk is a very powerful, completely free Phone System for anyone who wants to use it.  I am using Asterisk at my home, allowing me to, when I move, keep the same home number (yes, I still have a home phone number) where ever I go, all that is required is the internet.  Today I wanted to add 3-way calling to this great PBX, because I didn’t buy a phone that has this capability already, so I had to add some code to the PBX to do so.  To get this functionality to work, I had to add some lines of code to the below files.

in the /etc/asterisk/extensions_custom.conf file
[dynamic-nway]
exten => _X.,1,noop(dynamic-nway)
exten => _X.,2,Answer
exten => _X.,n,Set(CONFNO=${EXTEN})
exten => _X.,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _X.,n,Set(DYNAMIC_FEATURES=)
exten => _X.,n,MeetMe(${CONFNO},1pdMXq)
exten => _X.,n,Hangup
exten => _1NXXNXXXXXX,1,Macro(outisbusy,)
exten => h,1,noop(dynamic-nway-end)
exten => h,n,Hangup

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

[dynamic-nway-dest]
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 => _1NXXNXXXXXX,1,noop(dynamic-nway-dest)
exten => _1NXXNXXXXXX,2,Macro(user-callerid,SKIPTTL,)
exten => _1NXXNXXXXXX,n,Set(_NODEST=)
exten => _1NXXNXXXXXX,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _1NXXNXXXXXX,n,Macro(dialout-trunk,4,${EXTEN},,)
exten => _1NXXNXXXXXX,n,Macro(dialout-trunk,12,${EXTEN},,)
exten => _1NXXNXXXXXX,n,Macro(dialout-trunk,6,${EXTEN},,)
exten => _1NXXNXXXXXX,n,Macro(dialout-trunk,5,${EXTEN},,)
exten => _1NXXNXXXXXX,n,Macro(outisbusy,)

[macro-nway-start]
exten => s,1,noop(macro-nway-start)
exten => s,n,Set(CONFID=0)
exten => s,n(add),Set(CONFID=$[${CONFID} 1])
exten => s,n,MeetMeCount(${CALLERID(num)}${CONFID},count)
exten => s,n,Gotoif($[${count} >0 ]?add)
exten => s,n,Set(CONFNO=${CALLERID(num)}${CONFID})
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Playback(pbx-transfer)
exten => s,n,Read(DEST,dial,11,i,,3)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,noop(DIALING Local ${DEST})
exten => s,n,Dial(SIP/NetSpk/${DEST},,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,noop(end of macro-nway-start)
exten => s,n,Playback(en/beep)
exten => s,n,ChannelRedirect(${CHANNEL},dynamic-nway,${CONFNO},1)

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

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

in the /etc/asterisk/features_applicationmap_custom.conf file, this defines the in call commands
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok

in the /etc/asterisk/globals_custom.conf file, this makes the *0 work on ALL CALLS
DYNAMIC_FEATURES=nway-start

No Comments to “Asterisk 3-way calling”

There are no comments yet.

Leave a Reply

Your email address will not be published. Required fields are marked *