Страница 1 из 3
Черный список не срабатывает
Добавлено: 11 дек 2017, 18:50
andrystepa
Настройка черного списка сделана так:
Код: Выделить всё
exten = mi,1,GotoIf($["${BLACKLIST()}"=1]?blacklist)
exteb = mi,n,Dial(SIP/101)
....
exten = mi, n(blacklist), Playback(privacy-unident)
Hangup()
Добавил свой номер в базу командой
Звоню со своего телефона, а blacklist не срабатывает. В логах пишет:
Код: Выделить всё
Executing [mi@incoming_calls:1] GotoIf("SIP/asterisk-gw-000013ed", "0?blacklist") in new stack
8:34:08] VERBOSE[7254][C-00000aa6] pbx.c: -- Executing [mi@incoming_calls:2] Set("SIP/asterisk-gw-000013ed", "CALLFILENAME=IN_11122017_18-34
8:34:08] VERBOSE[7254][C-00000aa6] pbx.c: -- Executing [mi@incoming_calls:3] MixMonitor("SIP/asterisk-gw-000013ed", "/var/spool/asterisk/mon
8:34:08] VERBOSE[7254][C-00000aa6] pbx.c: -- Executing [mi@incoming_calls:4] Set("SIP/asterisk-gw-000013ed", "CDR(recordingpath)=/var/spool/
8:34:08] VERBOSE[7255][C-00000aa6] app_mixmonitor.c: == Begin MixMonitor Recording SIP/asterisk-gw-000013ed
.........
Видно, что функция возвращает 0, т.е. номера в базе нет. А на самом деле есть. В чем проблема?
Re: Черный список не срабатывает
Добавлено: 11 дек 2017, 18:58
awsswa
а вот и нечего не видно
может от провайдера не с 8 начале прилетает а с 7, или вообще сразу с 9 начало
Re: Черный список не срабатывает
Добавлено: 11 дек 2017, 19:12
andrystepa
Там одну строчку не до конца скопировал:
Код: Выделить всё
MixMonitor("SIP/asterisk-gw-000013eb", "/var/spool/asterisk/monitor/IN_11122017_18-33_79032285568.wav,b") in new stack
так что все правильно в базе данных. Более того, для чистоты, я добавил туда и 79032285568 и 89032285568. Так что все должно работать, но не работает.
Re: Черный список не срабатывает
Добавлено: 11 дек 2017, 20:55
ded
Нет, не должно всё работать. Хотя и в базе всё правильно
exten = mi,1,GotoIf($["${BLACKLIST()}"=1]?blacklist) - это Вы проверяете не базу, а содержимое переменной BLACKLIST()
Смотрите использование базы данных - синтаксис:
CLI> show function DB_EXISTS
Вот хороший пример для blacklist:
https://www.voip-info.org/wiki/view/Ast ... +db_exists
Re: Черный список не срабатывает
Добавлено: 11 дек 2017, 22:37
zzuz
Есть такая функция
Код: Выделить всё
[Description]
Uses astdb to check if the Caller*ID is in family 'blacklist'. Returns '1'
or '0'.
[Syntax]
BLACKLIST()
Вот только в примере автора он сравнивает строку с цифрой.
Re: Черный список не срабатывает
Добавлено: 12 дек 2017, 10:05
fecyt
Смотрите, в ссылке, что я кидал описание экземпла:
Код: Выделить всё
exten => s,1,GotoIf(${BLACKLIST()}?blacklisted)
exten => s,n,Dial(SIP/123)
exten => s,n(blacklisted),Hangup()
Т.е. сравнивать ни с чем по идее не надо, он сам должен чекнуть используя функцию, попробуйте как в примере.
Re: Черный список не срабатывает
Добавлено: 12 дек 2017, 11:21
andrystepa
А вот в такой конфигурации:
Код: Выделить всё
exten => s,1,GotoIf(${BLACKLIST()}?blacklisted)
exten => s,n,Dial(SIP/123)
exten => s,n(blacklisted),Hangup()
Черный список срабатывает на все звонки подряд!
Re: Черный список не срабатывает
Добавлено: 12 дек 2017, 12:31
shader
Дед Вам правильно подсказал:
Записать переменную в базу (из диалплана)
Вычитать переменную из базы:
(кусок моего диалплана, для наглядности):
Код: Выделить всё
same => n,Set(avaria_status=${DB(avaria/status)})
same => n,GotoIf($["1${avaria_status}"= "11"]?avaria:ok)
А вообще, такие вещи, ИМХО, лучше выносить в AGI.
Re: Черный список не срабатывает
Добавлено: 12 дек 2017, 15:21
fecyt
Ну не знаю, у меня все получилось.
localhost*CLI> database show
/blacklist/101 : blacklist test
1 results found.
== Using SIP RTP CoS mark 5
-- Executing [100@test:1] GotoIf("SIP/101-00000004", "1?blacklisted") in new stack
-- Goto (test,100,3)
-- Executing [100@test:3] Hangup("SIP/101-00000004", "") in new stack
На счет AGI, если пару номеров надо чекнуть, зачем писать сторонний скрипт, вызывать его и тратить на это ресурсы и время? Вопрос риторический.
Re: Черный список не срабатывает
Добавлено: 12 дек 2017, 15:29
andrystepa
А для чего тогда нужна функция blacklist()?
Согласно описанию она возвращает 1 если номер есть в черном списке, и 0 если нет.