Страница 1 из 3

отлуп звонка

Добавлено: 15 май 2013, 13:25
shaverdoff
Задача: при звонке на внутренний номер при не взятии трубки в течении 15 секунд переадресовывать вызов на мобильный.

Проблема: при попытке позвонить на мобильный номер происходит отбой звонка. Причем не у всех – в статистике видно что некоторые нормально дозваниваются до мобильных номеров.

Как реализовано:

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 не берет трубку то идет переадресация звонка на сотовый.

Re: отлуп звонка

Добавлено: 15 май 2013, 13:28
ded
Dial(IAX2/proxy/333@local,15) - откуда такой синтаксис взяли?

Re: отлуп звонка

Добавлено: 15 май 2013, 13:45
shaverdoff
что то не правильно? астериск 1.8.18 вероятно от туда.

Re: отлуп звонка

Добавлено: 15 май 2013, 13:55
zzuz
"333@local" - хороший номер. Простой 9ти значный номер.

Re: отлуп звонка

Добавлено: 15 май 2013, 13:58
shaverdoff
333 внутренний номер, local контекст. судя по всему :) а в чем дело то? хватит угарать мужики:)))

Re: отлуп звонка

Добавлено: 15 май 2013, 14:00
zzuz
И где вывод звонка , когда 333 попадает в контекст local ?

Re: отлуп звонка

Добавлено: 15 май 2013, 14:20
ded
Я лично - не угораю. Делать переадресацию при не взятии трубки можно и нужно во FreePBX в модуле follow me. Вместо этого - колёсико из спичек и клея.
Проблема в том, что Вы взяли яблоко (законченый продукт), и произвели в нём генную модификацию - добавили ген кукурузы. Видимо хотели получить початок, а вместо зёрен - яблоки..
Перевожу с эзопового до на понятный русский язык. Зачем курочить готовую систему и сооружать [call-to-driver]???

Re: отлуп звонка

Добавлено: 15 май 2013, 14:30
Sfinx
freepbx - зло, он ж#пой чует, но выразить не может ;)

Re: отлуп звонка

Добавлено: 15 май 2013, 14:34
shaverdoff
ded писал(а):Dial(IAX2/proxy/333@local,15) - откуда такой синтаксис взяли?

http://www.voip-info.org/wiki/view/Asterisk+cmd+Dial
вот от сюда.

Re: отлуп звонка

Добавлено: 15 май 2013, 14:48
shaverdoff
это не фрипбх. это чистый астер. вебморда самописная. в чистом астере есть переадресация?