1 | изначальная версия редактировать | |
День добрый, Использую Астер через колбек. Пользуюсь не только, я но и родные. Вывод статистики в mysql, но проблема с тем чтобы определить инициатора звонка. Так как фактически это сам *, я подумал что можно по полю "dcontext" сейчас там везде один экстеншн на который попадает звонящий. Каждому абоненту создать свой контекст для обработки звонка. Но думаю может это не правильно, дублировать такие куски кода. Может есть решение более элегантное))?
2 | No.2 Revision редактировать |
День добрый, Использую Астер через колбек. Пользуюсь не только, я но и родные. Вывод статистики в 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()
3 | No.3 Revision редактировать |
День добрый, Использую Астер через колбек. Пользуюсь не только, я но и родные. Вывод статистики в 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/
4 | No.4 Revision редактировать |
День добрый, Использую Астер через колбек. Пользуюсь не только, я но и родные. Вывод статистики в 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.