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

asterisk - как отбросить повторяющиеся вызовы?

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

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

Ответить
audiophileeeee
Сообщения: 3
Зарегистрирован: 22 июл 2020, 11:46

asterisk - как отбросить повторяющиеся вызовы?

Сообщение audiophileeeee »

Добрый день
подскажите на асртериск приходит большой поток трафика
и там часто по 2-9 попыток в секунду на один и тот же B номер (did)
Я хочу пропускать только первую попытку, остальные отбрасывать.

пробую навелосипедить

Код: Выделить всё

[from-sip-external]
exten => _X.,1,Progress
exten => _X.,2,Verbose(*** набираем - ${EXTEN} ***)
same => n,Verbose(*** кол-во одновременных вызовов -  ${GROUP_COUNT(${EXTEN})} ***)
same => n,GotoIf($[${GROUP_COUNT(long)} > 1]?over)
same => n,Dial(SIP/+${EXTEN}@1.2.3.4:5060)
same => n(over),Verbose(*** лимит превышен на - ${MATH(${GROUP_COUNT(long)}-1)} вызова ***)
same => n,Set(DIALSTATUS=CHANUNAVAIL)


но оно работает криво
т.к. если они идут одна за одной эта логика не работает
Нужно я думаю подлючаться к CDR и сравнивать текущий номер с набраным и на основании этого уже режектить.

Есть ещё одно простое решение - на стадии вызова просто добавлять все номера в блек лист. При этом пропуская только первый вызов.
Только не нашёл готовых решений для фильтрации Б номеров.

ВОзможно кто-то знает готовую функцию, которая возвращает последний набранный Б номер?
Или может у кого-то есть постое решение как пропускать только одну попытку на номер?

Хочется фильтровать повторяющиеся б номера и пропускать только первую попытку на номер

Код: Выделить всё

[from-sip-external]
exten => _X.,1,Progress
exten => n,GotoIf($[${DB(blockcaller/${CALLERID(num)})} = 1 ]?blocked)
exten => n(blocked),Hangup

exten => s,1,Set(DB(blacklist/${CALLERID(num)})=1)
exten => n,Set(Value=${DB(test/${CALLERID(num)})})


это очень простое решение, но готовых блеклистов для б номеров я не нашёл(
может у кого-то есть решение или идея, как фильтровать повторяющиеся б номера?
audiophileeeee
Сообщения: 3
Зарегистрирован: 22 июл 2020, 11:46

Re: asterisk - как отбросить повторяющиеся вызовы?

Сообщение audiophileeeee »

нашёл чей-то велосипед по добавлению Б номеров в блект лист
но он старый и не рабочий
https://github.com/ViktorNova/asterisk-dnc

продолжаю поиски
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: asterisk - как отбросить повторяющиеся вызовы?

Сообщение virus_net »

В чем проблема сделать в базе astdb, сродни записи блеклиста, запись со счетчиком, который увеличивать при каждом вызове и затем проверять его значение. Если достиг нужного вам кол-ва, то переход на hangup.
Для сброса счётчика завести ещё одну запись - время, в unixtime. Если после последнего вызова прошло более X минут, то счётчик равен нулю.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
audiophileeeee
Сообщения: 3
Зарегистрирован: 22 июл 2020, 11:46

Re: asterisk - как отбросить повторяющиеся вызовы?

Сообщение audiophileeeee »

я не находил пока рабочих примеров
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: asterisk - как отбросить повторяющиеся вызовы?

Сообщение virus_net »

Ах, вам копипаст решение нужно.
Ну тогда это в раздел "Бизнес" или продолжать искать.
Либо почитать книжку и основываясь на примере, который привели выше взять и сделать самому.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH