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

Переменная при attended transfer

СообщениеДобавлено: 26 окт 2015, 17:42
chuzoy.svoy
Здравствуйте!
Прочитав статью о переменных:
http://asterisk.ru/knowledgebase/Asterisk+Variables

При blind transfer в диалплане могу поймать это так Set(mytransf=${BLINDTRANSFER}) и далее работать с данной переменной.
При attended transfer такой переменной не могу найти.
Подскажите плиз.

Версия asterisk 1,8

Re: Переменная при attended transfer

СообщениеДобавлено: 27 окт 2015, 03:24
ded
Сделайте DumpChan() в нужном месте диалплана чтобы увидеть все возможные переменные в этой точке исполнения.

Re: Переменная при attended transfer

СообщениеДобавлено: 27 окт 2015, 08:54
chuzoy.svoy
Походу не существует такой переменной :-(

    Dumping Info For Channel: SIP/1001-000000a7:
    ================================================================================
    Info:
    Name= SIP/1001-000000a7
    Type= SIP
    UniqueID= 1445869380.179
    LinkedID= 1445869380.179
    CallerIDNum= 2223344
    CallerIDName= (N/A)
    ConnectedLineIDNum= (N/A)
    ConnectedLineIDName=(N/A)
    DNIDDigits= 89211111111
    RDNIS= (N/A)
    Parkinglot= default
    Language= ru
    State= Up (6)
    Rings= 0
    NativeFormat= 0x8 (alaw)
    WriteFormat= 0x8 (alaw)
    ReadFormat= 0x8 (alaw)
    RawWriteFormat= 0x8 (alaw)
    RawReadFormat= 0x8 (alaw)
    WriteTranscode= No
    ReadTranscode= No
    1stFileDescriptor= 26
    Framesin= 356
    Framesout= 855
    TimetoHangup= 0
    ElapsedTime= 0h0m22s
    DirectBridge= <none>
    IndirectBridge= <none>
    Context= from-phones
    Extension= h
    Priority= 3
    CallGroup=
    PickupGroup= 10
    Application= DumpChan
    Data= (Empty)
    Blocking_in= (Not Blocking)

    Variables:
    DIALEDTIME=22
    ANSWEREDTIME=15
    RTPAUDIOQOSRTT=minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000;
    RTPAUDIOQOSLOSS=minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000;
    RTPAUDIOQOSJITTER=minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000;
    RTPAUDIOQOS=ssrc=167781899;themssrc=1078349273;lp=0;rxjitter=0.000000;rxcount=222;txjitter=0.000611;txcount=356;rlp=0;rtt=0.000000
    RTPAUDIOQOSRTTBRIDGED=minrtt=0.000000;maxrtt=0.000000;avgrtt=0.000000;stdevrtt=0.000000;
    RTPAUDIOQOSLOSSBRIDGED=minrxlost=0.000000;maxrxlost=0.000000;avgrxlost=0.000000;stdevrxlost=0.000000;reported_minlost=0.000000;reported_maxlost=0.000000;reported_avglost=0.000000;reported_stdevlost=0.000000;
    RTPAUDIOQOSJITTERBRIDGED=minrxjitter=0.000000;maxrxjitter=0.000000;avgrxjitter=0.000000;stdevrxjitter=0.000000;reported_minjitter=0.000000;reported_maxjitter=0.000000;reported_avgjitter=0.000000;reported_stdevjitter=0.000000;
    RTPAUDIOQOSBRIDGED=ssrc=1825952673;themssrc=567880446;lp=0;rxjitter=0.000000;rxcount=139;txjitter=0.000953;txcount=140;rlp=0;rtt=0.000000
    SIPADDHEADER01=
    BRIDGEPVTCALLID=79d2ba407af9d9f74ef8c71c6b25a093@prov
    BRIDGEPEER=SIP/prov-000000a8
    DIALEDPEERNUMBER=prov/9211111111
    DIALEDPEERNAME=SIP/prov-000000a8
    DIALSTATUS=ANSWER
    MIXMONITOR_FILENAME=/rec/20151026_172300_2223344_out_89211111111.wav
    MONITOR_FILENAME=20151026_172300_2223344_out_89211111111
    DB_RESULT=2223344
    SIPCALLID=2033254434-5060-58@BJC.BGI.A.BEG
    SIPDOMAIN=172.16.0.65
    SIPURI=sip:1001@192.168.100.113:5060

Re: Переменная при attended transfer

СообщениеДобавлено: 27 окт 2015, 08:59
Vlad1983
TRANSFERERNAME

Re: Переменная при attended transfer

СообщениеДобавлено: 27 окт 2015, 09:01
virus_net
В любом случае есть переменная TRANSFER_CONTEXT и возможность установки которой (на канале до DIAL), при attend transfer, направит в указанный (в значении переменной) контекст, где вы сможете установить свою переменную, например ATTENDTRANSFER

Код: выделить все
exten => inbound,n,Set(__TRANSFER_CONTEXT=attTransfer)

[attTransfer]
exten => _X.,1,Set(__ATTENDTRANSFER=${EXTEN})
exten => _X.,n,Goto(users_context,${EXTEN},1)

[users_context]
exten => _X.,1,ExecIf($["${ATTENDTRANSFER}" != ""]?NoOP(This is attend transfer to ${ATTENDTRANSFER)
exten => .....

Re: Переменная при attended transfer

СообщениеДобавлено: 27 окт 2015, 09:03
chuzoy.svoy
Я пробовал отловить эту переменную:
Код: выделить все
Set(mytransf2=${TRANSFERERNAME})


Но пусто :-(

Re: Переменная при attended transfer

СообщениеДобавлено: 27 окт 2015, 09:11
Vlad1983
ловить нужно в TRANSFER_CONTEXT, а не где вздумалось
http://igorg.ru/2008/03/29/za-transfer-zamolvite-slovo/

Re: Переменная при attended transfer

СообщениеДобавлено: 27 окт 2015, 09:15
chuzoy.svoy
to virus_net
Вот мой диалплан, да использую переменную TRANSFER_CONTEXT и ловлю именно в from-phones
Код: выделить все
[office]
exten => _10XX,1,NoOp(call from ${CALLERID(all)} to ${EXTEN})
same =>            n,Set(__TRANSFER_CONTEXT=from-phones)
same =>            n,Dial(SIP/${EXTEN},60,Tt)
same =>            n,ExecIf($[${LEN(${BLINDTRANSFER})}>0]?Dial(${BLINDTRANSFER:0:$[${LEN(${BLINDTRANSFER})}-9]}))
same =>            n,Hangup

[from-phones]
include => office
include => gorod

[gorod]
exten => _8XXXXXXXXXX,1,NoOp
same =>                n,Set(MONITOR_FILENAME=${STRFTIME(${EPOCH},,%Y%m%d_%H%M%S)}_${CALLERID(num)}_out_${EXTEN})
same =>                n,MixMonitor(${CALLRECDIR}/${STRFTIME(${EPOCH},,%Y%m%d)}/${MONITOR_FILENAME}.wav,b)
same =>                n,Set(CDR(userfield)=out)
same =>                n,Ringing
same =>                n,Dial(SIP/prov/${EXTEN})
same =>                n,Hangup

exten => h,1,Set(mytransf2=${TRANSFERERNAME})
exten => h,n,DumpChan()
exten => h,n,Set(mytransf=${BLINDTRANSFER})
exten => h,n,GotoIf($[${LEN(${mytransf})} >= 1]?norec)
exten => h,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?answer)
exten => h,n,Set(var=${CDR(src)})
exten => h,n,Hangup
exten => h,n(answer),StopMixMonitor
exten => h,n,System(php /bin/rec.php ${MONITOR_FILENAME} ${var})
exten => h,n(norec),NoOp(===No Stop Rec===)

Re: Переменная при attended transfer

СообщениеДобавлено: 27 окт 2015, 09:45
virus_net
Во-первых, вы ловите в контексте gorod. Вы переводите вызов на городской номер ?
Во-вторых, вы ловите на hangup, а попробуйте ДО него.
Во-третьих, покажите лог отработки диалплана.
В-четвертых, "System(php..." не совсем хорошо, "System(/full/path/to/php..." гораздо лучше и правильнее для избежания недоразумений.

Re: Переменная при attended transfer

СообщениеДобавлено: 27 окт 2015, 10:18
virus_net
Проверил сам:
Код: выделить все
[macro-process-call]
...
exten => inbound,n,Set(__TRANSFER_CONTEXT=users)
...
exten => common,n(exit),MacroExit()

[users]
exten => 670,1,NoOp(Inbound call from ${CALLERID(num)} to 670)
exten => 670,n,Dial(SIP/670,${INTDIALTIME},tim(ownmoh)M(process-call))

exten => 111,1,NoOp(Inbound call from ${CALLERID(num)} to 111 ATTTRANSF: ${TRANSFERERNAME})
exten => 111,n,Dial(SIP/111,${INTDIALTIME},tim(ownmoh))

-- Executing [670@users:1] NoOp("SIP/6003-0000731b", "Inbound call from 89161112233 to 670") in new stack
-- Executing [670@users:2] Dial("SIP/6003-0000731b", "SIP/670,35,tim(ownmoh)M(process-call)") in new stack
-- Called SIP/670
-- Started music on hold, class 'ownmoh', on SIP/6003-0000731b
-- SIP/670-0000731c is ringing
-- SIP/670-0000731c answered SIP/6003-0000731b
...
-- Executing [inbound@macro-process-call:3] Set("SIP/670-0000731c", "__TRANSFER_CONTEXT=users") in new stack
...
-- Executing [common@macro-process-call:7] MacroExit("SIP/670-0000731c", "") in new stack
-- Stopped music on hold on SIP/6003-0000731b
-- Started music on hold, class 'default', on SIP/6003-0000731b
-- <SIP/670-0000731c> Playing 'pbx-transfer.gsm' (language 'ru')
-- Executing [111@users:1] NoOp("Local/111@users-00000494;2", "Inbound call from 670 to 111 ATTTRANSF: SIP/670-0000731c") in new stack