Blacklist в asterisk?

Пытаюсь создать blacklis в asterisk. Сейчас при водящем звонке номера добавляются в blacklist, но мне нужно добавлять CallerID в blacklist только после того как на звонок ответили т.е по факту совершившегося звонка.
[sip]
exten => _X.,1,NoOp(Checking CallerID against blacklist)
exten => _X.,n,GotoIf($[${DB_EXISTS(/${CALLERID(num)})}]?blacklisted,1)
exten => _X.,n,Set(DB(blacklist/${CALLERID(num)})=1)
exten => _X.,n,Set(records=/etc/asterisk/rec/${STRFTIME(${EPOCH},,%H_%M_%d-%m-%Y)}-${CALLERID(number)}-${EXTEN}.wav)
exten => _X.,n,MixMonitor(${records})
exten => _X.,n,Dial(SIP/1002,15,m())
exten => _X.,n,Set(DB(blacklist/${CALLERID(num)})=1)
exten => _X.,n,Hangup()

exten => blacklisted,1,NoOp(CallerID is blacklisted, hanging up)
exten => blacklisted,n,Hangup()


Пытался добавить добавление в blacklist по статусу ${DIALSTATUS}"="ANSWER"
[sip]
exten => _X.,1,NoOp(Checking CallerID against blacklist)
exten => _X.,n,GotoIf($[${DB_EXISTS(blacklist/${CALLERID(num)})}]?blacklisted,1)
exten => _X.,n,Set(records=/etc/asterisk/rec/${STRFTIME(${EPOCH},,%H_%M_%d-%m-%Y)}-${CALLERID(number)}-${EXTEN}.wav)
exten => _X.,n,MixMonitor(${records})
exten => _X.,n,Dial(SIP/1002,15,m())
exten => _X.,n,GotoIf($["${DIALSTATUS}"="ANSWER"]?add_to_blacklist,1:blacklisted,1)

[add_to_blacklist]
exten => 1,1,Set(DB(blacklist/${CALLERID(num)})=1)
exten => 1,n,Hangup()

[blacklisted]
exten => 1,1,NoOp(CallerID is blacklisted, hanging up)
exten => 1,n,Hangup()

но по завершению звонка номер не попадает в blacklist.
Подскажите куда копать?
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
@dronmaxman
VoIP Administrator
https://wiki.asterisk.org/wiki/display/AST/Hangup+...

[sip]
exten => _X.,1,NoOp(Checking CallerID against blacklist)
same => n,Set(CHANNEL(hangup_handler_push)=hdlr-blacklist,s,1())
same => n,GotoIf($[${DB_EXISTS(blacklist/${CALLERID(num)})}]?go-endcall)
same => n,Set(records=/etc/asterisk/rec/${STRFTIME(${EPOCH},,%H_%M_%d-%m-%Y)}-${CALLERID(number)}-${EXTEN}.wav)
same => n,MixMonitor(${records})
same => n,Dial(SIP/1002,15)
same => n(go-endcall),HangUp() 

[hdlr-blacklist]
exten => s,1,Verbose(0, -----hdlr-blacklist-----)
 same => n,Verbose(0, CDR BILLSEC is ${CDR(billsec)})
 same => n,Verbose(0, CDR disposition is ${CDR(disposition)})
 same => n,Set(CALLSTATUS="${CDR(disposition)}")
 ;same => n,ExecIf($[${CDR(billsec)}>5]?Set(CALLSTATUS="ANSWERED"):Set(CALLSTATUS="NO ANSWERED") ;; можно к времени звонка привязаться
 same => n,GotoIf($[${CALLSTATUS}="ANSWERED"]?:go-endcall)
 same => n,Verbose(0, CALLSTATUS is ${CALLSTATUS})
 same => n,Set(DB(blacklist/${CALLERID(num)})=1)
 same => n(go-endcall),Return()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
--exten => _X.,n,Dial(SIP/1002,15,m())
++exten => _X.,n,Dial(SIP/1002,15,gm())
Ответ написан
Ваш ответ на вопрос

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

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