VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

asterisk tone_detect

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
script
Сообщения: 12
Зарегистрирован: 25 янв 2023, 13:15

asterisk tone_detect

Сообщение script »

Всем привет,

Подскажите в таком вопросе (как реализовать, что-бы работало так сказать):

Версия 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
и оно не работает (все время получаю 0)

что не так делаю ? или как нужно делать/сделать или функция не работает или время определения 100ms частоты 500 Hz невозможна ? кто-то в курсе ?
ded
Сообщения: 15620
Зарегистрирован: 26 авг 2010, 19:00

Re: asterisk tone_detect

Сообщение ded »

Когда оператор связи вместо гудков говорит что-то с информацией и в самом конце выдает сигнал "BEEP" в течении 100ms с частотой 500 Hz - это называется в телефонии Early media, по-русски - сообщения в предответном состоянии. После чего начинается тарификация (а не начинает капать денежка). Используйте общепринятую терминологию, этим повысите свой статус и проф. уровень.

Такие же сообщения вы слышите по мобильному телефону - "Абонент не зарегистриован или находится вне зоны...."
и его голосовая почта так же устроена "Абонент разговоаривает по другой линии". Пока звучит сообщение - нет тарификации.
script писал(а):есть функция TONE_DETECT, ... не работает
Включайте вывод дебага в консоль, сам дебаг и вербозность и исследуйте.
CLI> core set debug 10
CLI> core set verbose 10

Решение есть такое - https://www.postmet.ru/chanleg
script
Сообщения: 12
Зарегистрирован: 25 янв 2023, 13:15

Re: asterisk tone_detect

Сообщение script »

т.е. нет ответа ?
ded
Сообщения: 15620
Зарегистрирован: 26 авг 2010, 19:00

Re: asterisk tone_detect

Сообщение ded »

Т. е. ответы не устроили, с вариантом определения через chan_leg - не разобрались, ответ (выше) зачеркнули, с утверждением - нет ответа. Это не одно и то же.
script писал(а):что не так делаю ? или как нужно делать/сделать или функция не работает или время определения 100ms частоты 500 Hz невозможна ? кто-то в курсе ?
Написали кривой код, субрутину, в которую передаёте неизвестный аргумент при вызове Dial, и, вместо того, чтобы заниматься его отладкой, написали на форму - "Кто мне поправит код чтобы он работал, а то не работает! ?? А вы вообще включали RTP debug на шаге
same => n,Wait(3)
чтобы видеть - есть аудио от провайдера, где сообщение в предответном состоянии и BEEP?
А отладочный операнд NoOp на шаге вам что говорит на тему содержания переменных
same => n,NoOp(получили частоту при звонке на номер ${EXTEN}: ${TONE_DETECT(rx)}) ?
номер говорит - s ?

Вы согласились при регистрации с правилами, где указано:
Для чего нужен форум?

Форум нужен для того, чтобы Вы САМИ нашли ответ на свой вопрос.

Форум нужен для того, чтобы Вы САМИ опубликовали на нем ответ на вопрос, интересный многим.

Есть подробная документация
https://wiki.asterisk.org/wiki/display/ ... ONE_DETECT
и там есть примеры.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH