Проблема
При организации функции callback на Asterisk`е, когда Asterisk перезванивает и ты пытаешься ввести тоном номер, то нажатые тобой цифры начинают задваиваться, а то и затраиваться.Причем это могло происходить не всегда и не зависело от аппарата, на котором набирали тоном.
Так же после многочисленных тестов стало точно понятно, что когда идет звонок из «города» на Asterisk, то подобных проблем не возникает, только если сам Asterisk звонит в «город».
VoIP соединение идет так:
E1 <–> Cisco AS5350 (c5350-js-mz.124-15.T11.bin) <–> Asterisk (версия 1.4.29_2)
Попробую более менее внятно рассказать о процессе нашего разбора с этой проблемой и последовательности действий, а вдруг кому ещё пригодится кроме меня, если я захочу освежить память по этому вопросу через какое то время.
Начали разбор полетов
Для того что бы выявить проблему стало понятно, что нужно подебажить DTMF на самом Asterisk. Как это сделать ?Пока опыт работы с Asterisk не такой большой как хотелось бы, посему прибегнули к помощи гугла, через минут пять выяснили:
Открываем файл logger.conf и там ищем строчку:
console => notice,warning,error
В нее дописывем dtmf, получаем:
console => notice,warning,error,dtmf
Сохраняем файл, входим в консоль Asterisk`а:
asterisk -r
И в консоле даем команду:
asterisk*CLI> logger reload
После чего, в той же консоле, задаем уровень дебага, я делал так:
asterisk*CLI> core set debug 3
Далее, для того что бы потестить нажатие кнопок, я внес нехитрые изменения в dialplan:
[dtmf_test]
exten => s,1,Answer()
exten => s,n,Wait(1)
exten => s,n(collect),Read(digito,,11)
exten => s,n,SayDigits(${digito})
exten => s,n,GoTo(collect)
exten => s,n,HangupТ.е. поднимаем трубку, ждем ввода 11-ти цифр, а затем проговариваем все что набрали, собственно в этот контекст я перенаправил callback вызовы.