DTMF генератор на Asterisk

Asterisk может генерировать DTMF сигналы функцией SendDTMF. Блародаря этой функции можно генерировать последовательность чисел имитируя нажатия клавиш пользователем, что можно использовать для автоматизации действий и/или проверки стойкости запароленных каналов например конференций. Этот диалплан повторяет отправку DTMF заданное число раз, условно заданное число секунд.
[morse]
;DTMF генератор символов паузы,единицы,решетки
;на 600 и 1800 секунд
exten => 3559000,1,Macro(setmorse,600sec)
exten => 3559001,1,Macro(setmorse,1800sec)
exten => 2211995,1,Macro(setmorse,1800sec)
[macro-setmorse]
exten => s,1,Set(per1="/var/lib/asterisk/sounds/ru/morse")
exten => s,n,Set(i=1)
exten => s,n,Set(CHANNEL(language)=ru)
exten => s,n,Answer()
;Если DTMF формируем сами
exten => s,n,Wait(30)
exten => s,n,SendDTMF(1)
exten => s,n,Wait(30)
exten => s,n,SendDTMF(1)
exten => s,n,Wait(30)
;Если DTMF проигрываем из файла
;exten => s,n,Playback(${per1}/30sec)
;exten => s,n,Playback(${per1}/1)
;exten => s,n,Playback(${per1}/30sec)
;exten => s,n,Playback(${per1}/1)
;exten => s,n,Playback(${per1}/30sec)
;Переход
exten => s,n,GotoIf($["${ARG1}" = "600sec"]?in600sec)
exten => s,n,GotoIf($["${ARG1}" = "1800sec"]?in1800sec)
exten => s,n(in600sec),Goto(inmorse600,s,1)
exten => s,n(in1800sec),Goto(inmorse1800,s,1)
[inmorse600]
;Количество раз проигрываем
exten => s,1,While($[${i} < 10])
;Если DTMF формируем сами
exten => s,n,SendDTMF(#)
exten => s,n,Wait(30)
exten => s,n,SendDTMF(1)
exten => s,n,Wait(30)
;Если DTMF берем из файла
;exten => s,n,Playback(${per1}/1_#)
;exten => s,n,Playback(${per1}/1)
exten => s,n,Set(i=$[${i} + 1])
exten => s,n,Goto(s,1)
exten => s,n,EndWhile
exten => s,n,Hangup()
[inmorse1800]
exten => s,1,While($[${i} < 55])
;Если DTMF формируем сами
exten => s,n,SendDTMF(#)
exten => s,n,Wait(30)
exten => s,n,SendDTMF(1)
exten => s,n,Wait(30)
;Если DTMF берем из файла
;exten => s,n,Playback(${per1}/1_#)
;exten => s,n,Playback(${per1}/1)
exten => s,n,Set(i=$[${i} + 1])
exten => s,n,Goto(s,1)
exten => s,n,EndWhile
exten => s,n,Hangup()
Добавить комментарий