Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

История изменений [назад]

нажмите, чтобы скрыть/показать версии 1
изначальная версия
редактировать

спросил 2012-09-21 12:37:58 +0400

fedorchuk Gravatar fedorchuk

Определение инициатора звонка через колбек в статистике

День добрый, Использую Астер через колбек. Пользуюсь не только, я но и родные. Вывод статистики в mysql, но проблема с тем чтобы определить инициатора звонка. Так как фактически это сам *, я подумал что можно по полю "dcontext" сейчас там везде один экстеншн на который попадает звонящий. Каждому абоненту создать свой контекст для обработки звонка. Но думаю может это не правильно, дублировать такие куски кода. Может есть решение более элегантное))?

Определение инициатора звонка через колбек в статистике

День добрый, Использую Астер через колбек. Пользуюсь не только, я но и родные. Вывод статистики в mysql, но проблема с тем чтобы определить инициатора звонка. Так как фактически это сам *, я подумал что можно по полю "dcontext" сейчас там везде один экстеншн на который попадает звонящий. Каждому абоненту создать свой контекст для обработки звонка. Но думаю может это не правильно, дублировать такие куски кода. Может есть решение более элегантное))?

[from-multifon]
exten => _X.,1,GotoIf($["${CALLERID(num)}" = "мой--номер"]?callback2,s,1) 
exten => _X.,n,Dial(${myphone})
exten => _X.,n,Hangup

[callback2] 
exten => s,1,System(/etc/asterisk/scripts/callback2 ${CALLERID(num)} &)
exten => s,n,Progress() 
exten => s,n,Wait(1)
exten => s,n,Playback(transfer,noanswer)
exten => s,n,Hangup

[mera-callback-out2] 
include => out
exten => s,1,Answer()
exten => s,n,Set(Prohod=0)
exten => s,n,Wait(1)
;Read(variable[|filename][|maxdigits][|option][|attempts][|timeout])
exten => s,n(nach),Background(speed-enternumber)
exten => s,n,Read(EXT,,,,,5)
exten => s,n,Set(Prohod=${MATH(${Prohod}+1)})
exten => s,n,GotoIF($[${Prohod} > 3]?t,1) 
exten => s,n,GotoIf($[${LEN(${EXT})} >= 3]?${EXT},1:i,1) exten => s,1,Dial(SIP/out/${EXTEN},60,HhtT) exten => _s,n,Set(CALLBACKEXTEN=${EXTEN}) exten => s,n,NoOp(DIALSTATUS: ${DIALSTATUS}) exten => _s,n,Goto(s-${DIALSTATUS},1) exten => s-BUSY,1,Goto(busy,1) exten => s-NOANSWER,1,Goto(noanswer,1) exten => _s-.,1,Goto(hz,1) exten => busy,1,PlayBack(callback/busy) exten => busy,n,Goto(mera-callback-menu,s,1) exten => noanswer,1,PlayBack(callback/noanswer) exten => noanswer,n,Goto(mera-callback-menu,s,1) exten => hz,1,PlayBack(callback/chanuval) exten => hz,n,Goto(mera-callback-menu,s,1) exten => i,1,PlayBack(privacy-incorrect) exten => i,n,Goto(mera-callback-out2,s,nach) exten => t,1,PlayBack(callback/timeout) exten => t,n,Hangup()

Определение инициатора звонка через колбек в статистике

День добрый, Использую Астер через колбек. Пользуюсь не только, я но и родные. Вывод статистики в mysql, но проблема с тем чтобы определить инициатора звонка. Так как фактически это сам *, я подумал что можно по полю "dcontext" сейчас там везде один экстеншн на который попадает звонящий. Каждому абоненту создать свой контекст для обработки звонка. Но думаю может это не правильно, дублировать такие куски кода. Может есть решение более элегантное))?

[from-multifon]
exten => _X.,1,GotoIf($["${CALLERID(num)}" = "мой--номер"]?callback2,s,1) 
exten => _X.,n,Dial(${myphone})
exten => _X.,n,Hangup

[callback2] 
exten => s,1,System(/etc/asterisk/scripts/callback2 ${CALLERID(num)} &)
exten => s,n,Progress() 
exten => s,n,Wait(1)
exten => s,n,Playback(transfer,noanswer)
exten => s,n,Hangup

[mera-callback-out2] 
include => out
exten => s,1,Answer()
exten => s,n,Set(Prohod=0)
exten => s,n,Wait(1)
;Read(variable[|filename][|maxdigits][|option][|attempts][|timeout])
exten => s,n(nach),Background(speed-enternumber)
exten => s,n,Read(EXT,,,,,5)
exten => s,n,Set(Prohod=${MATH(${Prohod}+1)})
exten => s,n,GotoIF($[${Prohod} > 3]?t,1) 
exten => s,n,GotoIf($[${LEN(${EXT})} >= 3]?${EXT},1:i,1) exten => s,1,Dial(SIP/out/${EXTEN},60,HhtT) exten => _s,n,Set(CALLBACKEXTEN=${EXTEN}) exten => s,n,NoOp(DIALSTATUS: ${DIALSTATUS}) exten => _s,n,Goto(s-${DIALSTATUS},1) exten => s-BUSY,1,Goto(busy,1) exten => s-NOANSWER,1,Goto(noanswer,1) exten => _s-.,1,Goto(hz,1) exten => busy,1,PlayBack(callback/busy) exten => busy,n,Goto(mera-callback-menu,s,1) exten => noanswer,1,PlayBack(callback/noanswer) exten => noanswer,n,Goto(mera-callback-menu,s,1) exten => hz,1,PlayBack(callback/chanuval) exten => hz,n,Goto(mera-callback-menu,s,1) exten => i,1,PlayBack(privacy-incorrect) exten => i,n,Goto(mera-callback-out2,s,nach) exten => t,1,PlayBack(callback/timeout) exten => t,n,Hangup()

Call файл

#!/bin/sh
sleep 5

NUMBER=$1

echo "Channel: SIP/multifon/$NUMBER MaxRetries: 1 RetryTime: 30 WaitTime: 30 Context: mera-callback-out2 Extension: s Priority: 1 AlwaysDelete: Yes " > /var/spool/asterisk/tmp/$NUMBER.call

mv /var/spool/asterisk/tmp/$NUMBER.call /var/spool/asterisk/outgoing/

Определение инициатора звонка через колбек в статистике

День добрый, Использую Астер через колбек. Пользуюсь не только, я но и родные. Вывод статистики в mysql, но проблема с тем чтобы определить инициатора звонка. Так как фактически это сам *, я подумал что можно по полю "dcontext" сейчас там везде один экстеншн на который попадает звонящий. Каждому абоненту создать свой контекст для обработки звонка. Но думаю может это не правильно, дублировать такие куски кода. Может есть решение более элегантное))?

[from-multifon]
exten => _X.,1,GotoIf($["${CALLERID(num)}" = "мой--номер"]?callback2,s,1) 
exten => _X.,n,Dial(${myphone})
exten => _X.,n,Hangup

[callback2] 
exten => s,1,System(/etc/asterisk/scripts/callback2 ${CALLERID(num)} &)
exten => s,n,Progress() 
exten => s,n,Wait(1)
exten => s,n,Playback(transfer,noanswer)
exten => s,n,Hangup

[mera-callback-out2] 
include => out
exten => s,1,Answer()
exten => s,n,Set(Prohod=0)
exten => s,n,Wait(1)
;Read(variable[|filename][|maxdigits][|option][|attempts][|timeout])
exten => s,n(nach),Background(speed-enternumber)
exten => s,n,Read(EXT,,,,,5)
exten => s,n,Set(Prohod=${MATH(${Prohod}+1)})
exten => s,n,GotoIF($[${Prohod} > 3]?t,1) 
exten => s,n,GotoIf($[${LEN(${EXT})} >= 3]?${EXT},1:i,1) exten => s,1,Dial(SIP/out/${EXTEN},60,HhtT) exten => _s,n,Set(CALLBACKEXTEN=${EXTEN}) exten => s,n,NoOp(DIALSTATUS: ${DIALSTATUS}) exten => _s,n,Goto(s-${DIALSTATUS},1) exten => s-BUSY,1,Goto(busy,1) exten => s-NOANSWER,1,Goto(noanswer,1) exten => _s-.,1,Goto(hz,1) exten => busy,1,PlayBack(callback/busy) exten => busy,n,Goto(mera-callback-menu,s,1) exten => noanswer,1,PlayBack(callback/noanswer) exten => noanswer,n,Goto(mera-callback-menu,s,1) exten => hz,1,PlayBack(callback/chanuval) exten => hz,n,Goto(mera-callback-menu,s,1) exten => i,1,PlayBack(privacy-incorrect) exten => i,n,Goto(mera-callback-out2,s,nach) exten => t,1,PlayBack(callback/timeout) exten => t,n,Hangup()

Call файл

#!/bin/sh
sleep 5

NUMBER=$1

echo "Channel: SIP/multifon/$NUMBER MaxRetries: 1 RetryTime: 30 WaitTime: 30 Context: mera-callback-out2 Extension: s Priority: 1 AlwaysDelete: Yes " > /var/spool/asterisk/tmp/$NUMBER.call

mv /var/spool/asterisk/tmp/$NUMBER.call /var/spool/asterisk/outgoing/

Switch и Komrad спасибо большое, немного потупил, но все сделал благодаря вам

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.