Страница 1 из 2
Переменная при attended transfer
Добавлено: 26 окт 2015, 16:42
chuzoy.svoy
Здравствуйте!
Прочитав статью о переменных:
http://asterisk.ru/knowledgebase/Asterisk+Variables
При blind transfer в диалплане могу поймать это так Set(mytransf=${BLINDTRANSFER}) и далее работать с данной переменной.
При attended transfer такой переменной не могу найти.
Подскажите плиз.
Версия asterisk 1,8
Re: Переменная при attended transfer
Добавлено: 27 окт 2015, 02:24
ded
Сделайте DumpChan() в нужном месте диалплана чтобы увидеть все возможные переменные в этой точке исполнения.
Re: Переменная при attended transfer
Добавлено: 27 окт 2015, 07: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, 07:59
Vlad1983
TRANSFERERNAME
Re: Переменная при attended transfer
Добавлено: 27 окт 2015, 08: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, 08:03
chuzoy.svoy
Я пробовал отловить эту переменную:
Но пусто
Re: Переменная при attended transfer
Добавлено: 27 окт 2015, 08:11
Vlad1983
Re: Переменная при attended transfer
Добавлено: 27 окт 2015, 08: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, 08:45
virus_net
Во-первых, вы ловите в контексте gorod. Вы переводите вызов на городской номер ?
Во-вторых, вы ловите на hangup, а попробуйте ДО него.
Во-третьих, покажите лог отработки диалплана.
В-четвертых, "System(php..." не совсем хорошо, "System(/full/path/to/php..." гораздо лучше и правильнее для избежания недоразумений.
Re: Переменная при attended transfer
Добавлено: 27 окт 2015, 09: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