Подскажите в таком вопросе (как реализовать, что-бы работало так сказать):
Версия asterisk current 18 (18.16.0)
Нужно поймать при исходящем звонке (PJSIP используется) определенную частоту в линии в течении определенного времени (ответ оператора связи, но не вызываемого абонента), до поднятия трубки (т.е. в момент набора номера, оператор связи вместо гудков говорит что-то с информацией и в самом конце выдает сигнал "BEEP" в течении 100ms с частотой 500 Hz и далее уже делает попытку дозвона на вызываемый номер, начинает капать денежка), собственно все это для того чтобы положить трубку сразу, если получили этот сигнал в линию.
модуль amd не подходит потому как он работает после поднятия трубки и слушает что в линии (уже проверил, перепроверил и АПперепроверялся ...)
есть функция TONE_DETECT, начиная с 16x версии asterisk (точно после 16.2.1)
настроил extensions.conf
Код: Выделить всё
...
same => n,Dial(PJSIP/${EXTEN}@example_name,,U(sub-tone-detector^start-detection-tone)) ;начинаем звонить на номер телефона через провайдера и передаем инфу в sub контекст
...
[sub-tone-detetor]
exten => s,1,NoOp(ARG1=${ARG1})
same => n,NoOp(ищем частоту 500 Hz)
same => n,Set(TONE_DETECT(500,100,g(hangupcause,s,1))=) ;если в течении 100ms частота была 500 Hz то переходим к другой контекст где сбрасываем трубку
same => n,Wait(3)
same => n,NoOp(получили частоту при звонке на номер ${EXTEN}: ${TONE_DETECT(rx)})
same => n,Return()
include => hangupcause
что не так делаю ? или как нужно делать/сделать или функция не работает или время определения 100ms частоты 500 Hz невозможна ? кто-то в курсе ?