Страница 1 из 1

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

Добавлено: 22 июл 2020, 11:48
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)})})


это очень простое решение, но готовых блеклистов для б номеров я не нашёл(
может у кого-то есть решение или идея, как фильтровать повторяющиеся б номера?

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

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

продолжаю поиски

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

Добавлено: 24 июл 2020, 07:42
virus_net
В чем проблема сделать в базе astdb, сродни записи блеклиста, запись со счетчиком, который увеличивать при каждом вызове и затем проверять его значение. Если достиг нужного вам кол-ва, то переход на hangup.
Для сброса счётчика завести ещё одну запись - время, в unixtime. Если после последнего вызова прошло более X минут, то счётчик равен нулю.

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

Добавлено: 24 июл 2020, 15:15
audiophileeeee
я не находил пока рабочих примеров

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

Добавлено: 25 июл 2020, 08:45
virus_net
Ах, вам копипаст решение нужно.
Ну тогда это в раздел "Бизнес" или продолжать искать.
Либо почитать книжку и основываясь на примере, который привели выше взять и сделать самому.