@anton99zel
29а класс средней школы №7

Как сделать, чтобы учитывались неполные номера в черном списке?

Имеется такая запись в Астериск - блокирует номера из базы MySql
Формат номеров указывается полностью, типа 79001234567
Как сделать, чтобы учитывались неполные номера, например заблокировать всю подсеть: 7900125 или 7495340
[SubMysqlblacklist]
exten => s,1,NoOp(--- MACRO --- BLACKLIST ---)
same => n,MySql(connect connid ${DBCurrentHost} ${DBuser} ${DBpass} ${DBname})
same => n,MySql(query resultid ${connid} select callerid from blacklist where callerid=${CALLERID(num)} and blockenabled = 1)
same => n,MySql(Fetch fetchid ${resultid} blacklistid)
same => n,NoOp(FetchID: ${fetchid} Var1: ${blacklistid} ConnID: ${connid} ResultID: ${resultid})
same => n,GotoIf($["${CALLERID(num)}" = "${blacklistid}"]?blacklisted)
same => n,MySql(clear ${resultid})
same => n,MySql(disconnect ${connid})
same => n,Goto(end)
same => n(blacklisted),Verbose(Cannot dial - ${CALLERID(num)} is blacklisted !)
same => n,MYSQL(clear ${resultid})
same => n,MYSQL(disconnect ${connid})
same => n,Progress()
same => n,Playback(/music/forblacklist,noanswer)
same => n,Wait(1)
same => n,Hangup()
same => n(end),NoOp(-- Clear --)
same => n,Return()
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT COUNT(*) FROM blacklist WHERE ${CALLERID(num)} LIKE CONCAT(callerid, '%') AND blockenabled = 1

И проверять, что вернулось количество больше нуля.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы