Hi, I am testing DTMF with sip.js.
It works good for all keys except Pound (#).
I am not sure if error is on sip.js side but I asume so as Asterisk normaly handles DTMF just fine.
JS / HTML:
<div id="dtmfcontainer" class="dtmfcontainer">
<button class="dtmf" id="dtmf1">1</button>
<button class="dtmf" id="dtmf2">2</button>
<button class="dtmf" id="dtmf3">3</button>
<br>
<button class="dtmf" id="dtmf4">4</button>
<button class="dtmf" id="dtmf5">5</button>
<button class="dtmf" id="dtmf6">6</button>
<br>
<button class="dtmf" id="dtmf7">7</button>
<button class="dtmf" id="dtmf8">8</button>
<button class="dtmf" id="dtmf9">9</button>
<br>
<button class="dtmf" id="dtmf0">0</button>
<button class="dtmf" id="dtmfs">*</button>
<button class="dtmf" id="dtmfh">#</button>
</div>
document.getElementById('dtmf1').addEventListener("click", function() { session.dtmf("1");}, false);
document.getElementById('dtmf2').addEventListener("click", function() { session.dtmf("2");}, false);
document.getElementById('dtmf3').addEventListener("click", function() { session.dtmf("3");}, false);
document.getElementById('dtmf4').addEventListener("click", function() { session.dtmf("4");}, false);
document.getElementById('dtmf5').addEventListener("click", function() { session.dtmf("5");}, false);
document.getElementById('dtmf6').addEventListener("click", function() { session.dtmf("6");}, false);
document.getElementById('dtmf7').addEventListener("click", function() { session.dtmf("7");}, false);
document.getElementById('dtmf8').addEventListener("click", function() { session.dtmf("8");}, false);
document.getElementById('dtmf9').addEventListener("click", function() { session.dtmf("9");}, false);
document.getElementById('dtmf0').addEventListener("click", function() { session.dtmf("0");}, false);
document.getElementById('dtmfs').addEventListener("click", function() { session.dtmf("*");}, false);
document.getElementById('dtmfh').addEventListener("click", function() { session.dtmf("#");}, false);
Asterisk Dialplan:
exten => dtmf,1,Answer()
exten => dtmf,2,Wait(2)
exten => dtmf,3,Playback(please-enter-the)
exten => dtmf,4,Playback(digits)
exten => dtmf,5,Read(digito,,1)
exten => dtmf,n,SayDigits(${digito})
exten => dtmf,n,GoTo(5)
exten => dtmf,n,Hangup()
Asterisk failing with Pound key:
-- Executing [dtmf@default:5] Read("SIP/3333-00000001", "digito,,1") in new stack
-- Accepting a maximum of 1 digits.
-- User entered nothing.
-- Executing [dtmf@default:6] SayDigits("SIP/3333-00000000", "") in new stack
-- Executing [dtmf@default:7] Goto("SIP/3333-00000000", "5") in new stack
Asterisk working just fine with other keys:
-- Executing [dtmf@default:5] Read("SIP/3333-00000000", "digito,,1") in new stack
-- Accepting a maximum of 1 digits.
-- User entered '7'
-- Executing [dtmf@default:6] SayDigits("SIP/3333-00000000", "7") in new stack
-- <SIP/3333-00000000> Playing 'digits/7.gsm' (language 'en')
-- Executing [dtmf@default:7] Goto("SIP/3333-00000000", "5") in new stack
-- Goto (default,dtmf,5)