I’m using Asterisk 1.4.2 (but this issue is in 1.6 and 1.8 so it’s not depend on Asterisk versions).
The issue is in ${DIALSTATUS} return code from SIP trunk it is always ANSWER. So ${DIALSTATUS} from VoIPSwitch comes to Asterisk before the call actually has been made. Even if the other side is BUSY, NOANSWER, CANCEL, CONGESTION, etc it’s always return ANSWER status.
- SIP trunk configuration
[WMAG006]
dtmfmode=rfc2833
type=friend
host=*** IP Provider ***
fromuser=*** user ***
fromdomain=*** VoIP provider domain ***
username=*** user ***
authuser=*** user ***
secret=*** password ***
externip=*** My external IP ***
localnet=192.168.2.0/255.255.255.0
insecure=very
canreinvite=yes
qualify=yes
callgroup=
context=WMAG006-outbounds-calls
nat=no
disallow=all
allow=g729
auth=md5
- DialPlan configuration
[WMAG006-outbounds-calls]
; England, Spain (Code number + phone number = 12 digits)
exten => _XXXXXXXXXXXX,1,Answer()
exten => _XXXXXXXXXXXX,n,Dial(SIP/${EXTEN}@WMAG006,5)
exten => _XXXXXXXXXXXX,n,Hangup()
; England 13 digits
;exten => _XXXXXXXXXXXXX,1,Dial(SIP/${EXTEN}@WMAG006-trunk,10)
;exten => _XXXXXXXXXXXXX,n,Hangup()
; USA, Australia (Code number + phone number = 11 digits)
;exten => _XXXXXXXXXXX,1,Dial(SIP/${EXTEN}@WMAG006-trunk,10)
;exten => _XXXXXXXXXXX,n,Hangup()
; Denmark (Code number + phone number = 10 digits)
;exten => _XXXXXXXXXX,1,Dial(SIP/${EXTEN}@WMAG006-trunk,10)
;exten => _XXXXXXXXXX,n,Hangup()
exten => 505,1,Answer()
exten => 505,n,Dial(SIP/505,25)
exten => 505,n,Hangup()
exten => 501,1,Answer()
exten => 501,n,Dial(SIP/501,25)
exten => 501,n,Hangup()
exten => 503,1,Answer()
exten => 503,n,Dial(SIP/503,25)
exten => 503,n,Hangup()
exten => 504,1,Answer()
exten => 504,n,Dial(SIP/504,25)
exten => 504,n,Hangup()
exten => h,1,System(/bin/sh -c “/bin/echo ${DIALSTATUS} > /usr/local/asterisk/wmag006/status”)
; exten => h,1,System(/bin/sh -c “/bin/echo ${DEVSTATE(SIP/${EXTEN}@WMAG006) > /usr/local/asterisk/wmag006/status”)
; exten => h,1,Goto(s-{DIALSTATUS},1)
exten => s-CANCEL,1,System(/bin/sh -c “/bin/echo Cancel > /usr/local/asterisk/wmag006/status”)
exten => s-ANSWER,1,System(/bin/sh -c “/bin/echo Answer > /usr/local/asterisk/wmag006/status”)
exten => s-NOANSWER,1,System(/bin/sh -c “/bin/echo NoAnswer > /usr/local/asterisk/wmag006/status”)
exten => s-BUSY,1,System(/bin/sh -c “/bin/echo Busy date +%F-%H:%M
> /usr/local/asterisk/wmag006/status”)
exten => s-CONGESTION,1,System(/bin/sh -c “/bin/echo Congestion date +%F-%H:%M
> /usr/local/asterisk/wmag006/status”)
exten => s-CHANUNAVAIL,1,System(/bin/sh -c “/bin/echo Chanunavail date +%F-%H:%M
> /usr/local/asterisk/wmag006/status”)
-
SIP debug output
– Executing [380954269162@WMAG006-outbounds-calls:1] Answer(“SIP/505-00000000”, “”) in new stack
– Executing [380954269162@WMAG006-outbounds-calls:2] Dial(“SIP/505-00000000”, “SIP/380954269162@WMAG006|5”) in new stack
– Called 380954269162@WMAG006
– SIP/WMAG006-00000001 answered SIP/505-00000000
– Native bridging SIP/505-00000000 and SIP/WMAG006-00000001
– Executing [h@WMAG006-outbounds-calls:1] System(“SIP/505-00000000”, “/bin/sh -c “/bin/echo ANSWER > /usr/local/asterisk/wmag006/status””) in new stack
== Spawn extension (WMAG006-outbounds-calls, 380954269162, 2) exited non-zero on ‘SIP/505-00000000’
Really destroying SIP dialog ‘3c267898dbba-gk13n2v9n3ks@snom320-0004132485B0’ Method: BYE
Really destroying SIP dialog '5f4507a004fc47f94560626b1fa8ec71@foib.future-b.eu’ Method: INVITE
I think maybe some patch or addons needed by Asterisk to get right ${DIALSTATUS} answer from VoIP Switch
If somebody has the same issue, please help.