DISA and DTMF detection problem w/ FXO port on a TDM400

Hi!

I’m trying to configure a DISA setup (Asterisk 1.4.11). Only, executing DISA seems to prevent any DTMF detection capability when using the FXO port of the TDM400.

Below, config A and B and their debug logs.

In Config A I use Authenticate() instead of using DISA password since it demonstrates that it’s DISA that seems to prevent DTMF detection when using Zap/1. Otherwise DISA works flawlessly when calls are coming from FXS port (TDM400), IAX, SIP channels… and we have absolutly not other problem detecting DTMF that we are aware of…

I see no active bug related to DISA at bugs.digium.com

Any idea?

Ben.

---------------------------    
zapata.conf
---------------------------
context=inbound-pstn
signalling=fxs_ks
rxgain=10 
txgain=3  
language=fr
channel => 1

I have tried to change gains without any result … (forums.digium.com/viewtopic.php? … =disa+dtmf)

; — Config A — ;

exten => 111,1,Answer
exten => 111,n,Authenticate(111)
exten => 111,n,DISA(no-password|internal)

; — Dial sequence — ;

PSTN line -> TDM400
enter extension 111 -> dial tone
enter password  111 -> "new" dial tone
enter extension -> I still getting the dial tone whatever I'm entering
timeout.

Here the debug log:

<snip>

DTMF digit: 1 on Zap/1-1
DTMF end '1' received on Zap/1-1, duration 0 ms
DTMF end accepted without begin '1' on Zap/1-1
DTMF end passthrough '1' on Zap/1-1
Scheduling timer at 0 sample intervals
Set channel Zap/1-1 to write format ulaw
Oooh, got something to jump out with ('1')!
DTMF digit: 1 on Zap/1-1
DTMF end '1' received on Zap/1-1, duration 0 ms
DTMF begin emulation of '1' with duration 100 queued on Zap/1-1
DTMF end emulation of '1' queued on Zap/1-1
DTMF digit: 1 on Zap/1-1
DTMF end '1' received on Zap/1-1, duration 0 ms
DTMF begin emulation of '1' with duration 100 queued on Zap/1-1
DTMF end emulation of '1' queued on Zap/1-1
  == CDR updated on Zap/1-1
Launching 'Answer'
    -- Executing [111@compagnie:1] Answer("Zap/1-1", "") in new stack
Launching 'Authenticate'
    -- Executing [111@compagnie:2] Authenticate("Zap/1-1", "111") in new stack
Set channel Zap/1-1 to write format gsm
Scheduling timer at 160 sample intervals
    -- <Zap/1-1> Playing 'agent-pass' (language 'fr')
Scheduling timer at 0 sample intervals
Scheduling timer at 0 sample intervals
Set channel Zap/1-1 to write format ulaw
DTMF digit: 1 on Zap/1-1
DTMF end '1' received on Zap/1-1, duration 0 ms
DTMF begin emulation of '1' with duration 100 queued on Zap/1-1
DTMF end emulation of '1' queued on Zap/1-1
DTMF digit: 1 on Zap/1-1
DTMF end '1' received on Zap/1-1, duration 0 ms
DTMF begin emulation of '1' with duration 100 queued on Zap/1-1
DTMF end emulation of '1' queued on Zap/1-1
DTMF digit: 1 on Zap/1-1
DTMF end '1' received on Zap/1-1, duration 0 ms
DTMF begin emulation of '1' with duration 100 queued on Zap/1-1
DTMF end emulation of '1' queued on Zap/1-1
DTMF digit: # on Zap/1-1
DTMF end '#' received on Zap/1-1, duration 0 ms
DTMF begin emulation of '#' with duration 100 queued on Zap/1-1
DTMF end emulation of '#' queued on Zap/1-1
Set channel Zap/1-1 to write format gsm
Scheduling timer at 160 sample intervals
    -- <Zap/1-1> Playing 'auth-thankyou' (language 'fr')
Scheduling timer at 0 sample intervals
Scheduling timer at 0 sample intervals
Set channel Zap/1-1 to write format ulaw
Launching 'DISA'
    -- Executing [111@compagnie:3] DISA("Zap/1-1", "no-password|internal") in new stack
Digittimeout: 3000
Responsetimeout: 10000
Mailbox: 
Context: internal
DISA no-password login success
Set channel Zap/1-1 to write format slin
Scheduling timer at 160 sample intervals
Scheduling timer at 0 sample intervals

[ ------------ asterisk isn't detecting any DTMF... ---------- ]

DISA extension entry timeout on chan Zap/1-1
Requested indication 8 on channel Zap/1-1
Set channel Zap/1-1 to write format ulaw
Scheduling timer at 0 sample intervals
Spawn extension (compagnie,111,3) exited non-zero on 'Zap/1-1'
  == Spawn extension (compagnie, 111, 3) exited non-zero on 'Zap/1-1'
Soft-Hanging up channel 'Zap/1-1'
Hanging up channel 'Zap/1-1'
zt_hangup(Zap/1-1)
Hangup: channel: 1 index = 0, normal = 7, callwait = -1, thirdcall = -1
disabled echo cancellation on channel 1
Set option TDD MODE, value: OFF(0) on Zap/1-1
Updated conferencing on 1, with 0 conference users
    -- Hungup 'Zap/1-1'


<snip>

; — Config B — ;

exten => 111,1,Answer
exten => 111,n,DISA(111|internal)

; — Dial sequence — ;

PSTN line -> TDM400
enter extension 111 -> dial tone
enter password  111 -> I still getting the dial tone whatever I'm entering
password timeout.

Here the debug log:

<snip>
DTMF digit: 1 on Zap/1-1
DTMF end '1' received on Zap/1-1, duration 0 ms
DTMF end accepted without begin '1' on Zap/1-1
DTMF end passthrough '1' on Zap/1-1
Scheduling timer at 0 sample intervals
Set channel Zap/1-1 to write format ulaw
Oooh, got something to jump out with ('1')!
DTMF digit: 1 on Zap/1-1
DTMF end '1' received on Zap/1-1, duration 0 ms
DTMF begin emulation of '1' with duration 100 queued on Zap/1-1
DTMF end emulation of '1' queued on Zap/1-1
DTMF digit: 1 on Zap/1-1
DTMF end '1' received on Zap/1-1, duration 0 ms
DTMF begin emulation of '1' with duration 100 queued on Zap/1-1
DTMF end emulation of '1' queued on Zap/1-1
  == CDR updated on Zap/1-1
Launching 'Answer'
    -- Executing [111@compagnie:1] Answer("Zap/1-1", "") in new stack
Launching 'DISA'
    -- Executing [111@compagnie:2] DISA("Zap/1-1", "111|internal") in new stack
Digittimeout: 3000
Responsetimeout: 10000
Mailbox: 
Context: internal
Set channel Zap/1-1 to write format slin
Scheduling timer at 160 sample intervals
Scheduling timer at 0 sample intervals

[ ------------ asterisk isn't detecting any DTMF... ---------- ]

DISA password entry timeout on chan Zap/1-1
Requested indication 8 on channel Zap/1-1
Set channel Zap/1-1 to write format ulaw
Scheduling timer at 0 sample intervals
Spawn extension (compagnie,111,2) exited non-zero on 'Zap/1-1'
  == Spawn extension (compagnie, 111, 2) exited non-zero on 'Zap/1-1'
Soft-Hanging up channel 'Zap/1-1'
Hanging up channel 'Zap/1-1'
zt_hangup(Zap/1-1)
Hangup: channel: 1 index = 0, normal = 7, callwait = -1, thirdcall = -1
disabled echo cancellation on channel 1
Set option TDD MODE, value: OFF(0) on Zap/1-1
Updated conferencing on 1, with 0 conference users
    -- Hungup 'Zap/1-1'
<snip>

You an use the read cmd of Asterisk to store a value in a variable while playing a soundfile (like, please enter the number you like to dial) and then dial the entered number.

exten => disa_alternative,1,Read(|||noanswer|3|10)
exten => disa_alternative,n,Dial(${trunk}/${},20,rt)

Tis is very basic, you can ad some logic to check the number entered and to do numbermatching (google on ex-girlfriend extension asterisk) so not everybody can use this features. This way you can call in, enter a number and be connected to this number.