отлуп звонка
Добавлено: 15 май 2013, 13:25
Задача: при звонке на внутренний номер при не взятии трубки в течении 15 секунд переадресовывать вызов на мобильный.
Проблема: при попытке позвонить на мобильный номер происходит отбой звонка. Причем не у всех – в статистике видно что некоторые нормально дозваниваются до мобильных номеров.
Как реализовано:
1) Совершается исходящий вызов
2) Совершается вызов на внутренний номер с параметром таймаута
3) При не взятии трубки по истечению таймаут совершается звонок уже на мобильный номер
333 – внутренний номер, с которого нужно делать переадресацию при не взятии трубки.
вывод консоли:
дебаг звонка имеются
внутренний абонент звонит на 333 и если в течении 15 секунд 333 не берет трубку то идет переадресация звонка на сотовый.
Проблема: при попытке позвонить на мобильный номер происходит отбой звонка. Причем не у всех – в статистике видно что некоторые нормально дозваниваются до мобильных номеров.
Как реализовано:
1) Совершается исходящий вызов
2) Совершается вызов на внутренний номер с параметром таймаута
3) При не взятии трубки по истечению таймаут совершается звонок уже на мобильный номер
333 – внутренний номер, с которого нужно делать переадресацию при не взятии трубки.
Код: Выделить всё
[Outbound]
…
exten=>333,1, Set(DYNAMIC_FEATURES=TransferToOperator#TransferToSpyConf) ; активация feature codes (перевод звонка, перевод звонка с прослушкой)
exten=>333,2, Set(CDR(from_number)=${CALLERID(num)}) ; установка в CDR номера звонящего
exten=>333,3, Set(CDR(call_type)=internal) ; установка в CDR типа звонка «внутренний»
exten=>333,4, Goto(call-to-driver,${EXTEN},1) ; переход в контекст звонка с переадресацией
…
[call-to-driver]
exten=>_X!,1, Macro(recordcall,Outbound,${CDR(uniqueid)},${CALLERID(num)},333) ; запуск записи разговора
exten=>_X!,2, Set(CDR(answer_number)=333) ; установка в CDR номера ответившего на звонок
exten=>_X!,3, Dial(IAX2/proxy/333@local,15) ; звонок на внутренний номер с таймаутом 15 секунд
; если трубку не взяли то диалплан идет дальше
exten=>_X!,4, Set(CDR(trunkname)=номер транка) ; установка в CDR номера транка через который пойдет внешний вызов
exten=>_X!,5, Set(CDR(call_type)=outgoing) ; установка в CDR типа звонка «исходящий»
exten=>_X!,6,Dial(IAX2/proxy/номер мобильного@ctx124_out) ; звонок на мобильный
exten=>_X!,7,HangUp()
вывод консоли:
Код: Выделить всё
-- Executing [333@Outbound:1] Set("IAX2/proxy-13256", "DYNAMIC_FEATURES=TransferToOperator#TransferToSpyConf") in new stack
-- Executing [333@Outbound:2] Set("IAX2/proxy-13256", "CDR(from_number)=9999") in new stack
-- Executing [333@Outbound:3] Set("IAX2/proxy-13256", "CDR(call_type)=internal") in new stack
-- Executing [333@Outbound:4] Goto("IAX2/proxy-13256", "call-to-driver,333,1") in new stack
-- Goto (call-to-driver,333,1)
-- Executing [333@call-to-driver:1] Macro("IAX2/proxy-13256", "recordcall,Outbound,1368600086.7177,9999,333") in new stack
-- Executing [s@macro-recordcall:1] Set("IAX2/proxy-13256", "recordfolder=Outbound/15052013") in new stack
-- Executing [s@macro-recordcall:2] Set("IAX2/proxy-13256", "createfolder=/var/callrecords/Outbound/15052013") in new stack
-- Executing [s@macro-recordcall:3] Set("IAX2/proxy-13256", "CANT_RECORD_FROM=no") in new stack
-- Executing [s@macro-recordcall:4] Set("IAX2/proxy-13256", "CANT_RECORD_TO=no") in new stack
-- Executing [s@macro-recordcall:5] GotoIf("IAX2/proxy-13256", "1?s,6:perm-error,1") in new stack
-- Goto (macro-recordcall,s,6)
-- Executing [s@macro-recordcall:6] GotoIf("IAX2/proxy-13256", "1?s,7:perm-error,1") in new stack
-- Goto (macro-recordcall,s,7)
-- Executing [s@macro-recordcall:7] Goto("IAX2/proxy-13256", "record-start,1") in new stack
-- Goto (macro-recordcall,record-start,1)
-- Executing [record-start@macro-recordcall:1] Set("IAX2/proxy-13256", "CDR(callrecord)=Outbound/15052013/1368600086.7177.gsm") in new stack
-- Executing [record-start@macro-recordcall:2] MixMonitor("IAX2/proxy-13256", "/var/callrecords/Outbound/15052013/1368600086.7177.gsm") in new stack
-- Executing [333@call-to-driver:2] Set("IAX2/proxy-13256", "CDR(answer_number)=333") in new stack
-- Executing [333@call-to-driver:3] Dial("IAX2/proxy-13256", "IAX2/proxy/333@local,15") in new stack
== Begin MixMonitor Recording IAX2/proxy-13256
-- Called IAX2/proxy/333@local
-- Call accepted by 172.16.150.2 (format ulaw)
-- Format for call is ulaw
-- Nobody picked up in 15000 ms
-- Executing [333@call-to-driver:4] Set("IAX2/proxy-13256", "CDR(trunkname)=88462000125") in new stack
-- Executing [333@call-to-driver:5] Set("IAX2/proxy-13256", "CDR(call_type)=outgoing") in new stack
-- Executing [333@call-to-driver:6] Dial("IAX2/proxy-13256", "IAX2/proxy/номер мобильного@ctx124_out") in new stack
-- Called IAX2/proxy/номер мобильного@ctx124_out
-- Call accepted by 172.16.150.2 (format ulaw)
-- Format for call is ulaw
-- IAX2/proxy-19777 is making progress passing it to IAX2/proxy-13256
-- Hungup 'IAX2/proxy-19777'
внутренний абонент звонит на 333 и если в течении 15 секунд 333 не берет трубку то идет переадресация звонка на сотовый.