1
votes

I have two asterisk servers one with PBX inflash and other only just Asterisk installed on CentOS . I need to migrate the stuff from PBXINFLASH to Asterisk 11.9.0 . The PbX in flash is running Asterisk 10.12.1. I have a dialplan which works perfectly fine on the Asterisk 10.12.1 but on my new box with Asterisk 11.9.0 the DTMF or user key input is not working one one part of the dialplan. I have tried to do debug for dtmf both the servers are same no difference in debug resul, also strange this is my dialplan on one machine works fine and other works partially. The dial plan is call screen where caller presses 1 to proceed and recipient gets call and system ask to press 1 to accept call or hangup now one Asterisk 11.9.0 caller press 1 input is working fine but second user/recipient press 1 does not do any thing at all.

I am using sip account to test my dtmf. I have swapped my sip accounts and sip softphones to test still the same issue. Following are two parts of same macro half working and second half not taking user input

First Half that works and takes user input.

exten => _X.,n,GotoIf($[${GROUP_COUNT(${CallerNum})} > 1]?Exceeded) ;Exceeded?
exten => _X.,n,Set(HngupCount=1);Hangup
exten => _X.,n,Flite(Please press 1 to speak with ${destUID})
exten => _X.,n,Read(yesno,sip-silence,1,,2,5)
exten => _X.,n,GotoIf($[${yesno} = 1]?continue:hangup)

Second half which not working or taking user's input :-

[macro-Dial2]
exten => s,1,Wait(1);ResetCDR
exten => s,n,Set(_StartTime=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})
exten => s,n,ResetCDR
exten => s,n,Set(_RCount=1)
exten => s,n(Repeat),Flite(Hi there)
exten => s,n,Flite(${ARG1} wants to speak to you. Please press 1 to accept the call. 2 to forward the call to voicemail or 3 to reject the call.)
exten => s,n,Flite(we are connecting you)
exten => s,n,Read(ACCEPT,sip-silence,1,,1,5)
exten => s,n,Set(_RCount=$[${RCount} + 1])
exten => s,n,NoOp(Counter is ${RCount} -- the user selected: ${ACCEPT});
exten => s,n,Gotoif($[${ACCEPT} = 1]?accept:vm) ;Accept the call
exten => s,n(vm),Gotoif($[${ACCEPT} = 2]?voicemail:rej) ;forward the call to dummy voicemail (Actually just record the callers message)
exten => s,n(rej),Gotoif($[${ACCEPT} = 3]?reject) ;Reject the call and hangup
exten => s,n,Gotoif($[${RCount} > 2]?reject:Repeat) ; If no key pressed, just hangup the call and inform the User.
exten => s,n(accept),set(SecLeg=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})

In second half it works fine till the following lines :

exten => s,n,Flite(${ARG1} wants to speak to you. Please press 1 to accept the call. 2 to forward the call to voicemail or 3 to reject the call.)
exten => s,n,Flite(we are connecting you)
1
Can you please post the text from AST CLI of a failing call? I need to see "what AST sees" to be able to help you here. - MichelV69
[0K <--- SIP read from UDP:122.173.207.156:5060 ---> SIP/2.0 200 OK Via: SIP/2.0/UDP 173.230.137.73:5060;branch=z9hG4bK3d82f078;rport=5060 Contact: <sip:[email protected]:5060;rinstance=93848e358133f8f1;transport=UDP> To: <sip:[email protected]:5060;rinstance=93848e358133f8f1;transport=UDP>;tag=6b7c1722 From: <sip:[email protected]>;tag=as292ce1cc Call-ID: [email protected]:5060 CSeq: 103 BYE User-Agent: Zoiper rev.11137 Content-Length: 0 - user1492502
Please set "verbose" to 9 so that the dialplan processing is visible and post the related output from the five lines before and after the "Read()" statement. Unless you are transporting DTMF by SIP-INFO only, SIP packet debugging is valueless here. - MichelV69

1 Answers

0
votes

Note, in your dialplan user input will be taken only after all flite message playback finished

It is highly recommended play by flite only ${ARG1}, while all other(static part) record to file and use in READ command

You can get more info by enable dtmf debug in your asterisk.

For that you need edit logger.conf