ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

asterisk tone_detect

Проблемы и их решения Asterisk как такового

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

asterisk tone_detect

Сообщение script » 25 янв 2023, 14:46

Всем привет,

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

Версия 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 невозможна ? кто-то в курсе ?
script
 
Сообщений: 12
Зарегистрирован: 25 янв 2023, 14:15

Re: asterisk tone_detect

Сообщение ded » 25 янв 2023, 23:54

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

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

Решение есть такое - https://www.postmet.ru/chanleg
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00

Re: asterisk tone_detect

Сообщение script » 26 янв 2023, 08:40

т.е. нет ответа ?
script
 
Сообщений: 12
Зарегистрирован: 25 янв 2023, 14:15

Re: asterisk tone_detect

Сообщение ded » 26 янв 2023, 11:52

Т. е. ответы не устроили, с вариантом определения через 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
и там есть примеры.
ded
 
Сообщений: 15803
Зарегистрирован: 26 авг 2010, 19:00


Вернуться в Конфигурация и настройка Asterisk

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23

cron
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH