Skip to content

Instantly share code, notes, and snippets.

@aissarmurad
Last active February 22, 2018 06:40
Show Gist options
  • Save aissarmurad/b8f1c6bc773f1148cfb0c43191cec35a to your computer and use it in GitHub Desktop.
Save aissarmurad/b8f1c6bc773f1148cfb0c43191cec35a to your computer and use it in GitHub Desktop.
Asterisk - How can I set a variable in inbound leg to get that variable in outbound leg from a SIP to SIP via non-optimized Local Channels ?

Asterisk 13

How can I set a variable in inbound leg to get that variable in outbound leg from a SIP to SIP via non-optimized Local Channels?

Reference: https://wiki.asterisk.org/wiki/display/AST/Channels My use case is the figure 3.

I can set and get variable between SIP to Local channel in the same leg, but I can't set and get between inbound and outbound legs.

I need get in outbound leg Local/5213@from-queue-0000019e;2 the variable I've set in inbound leg Local/5213@from-queue-0000019e;1

CHANNELS

Local/5213@from-queue-0000019e;1

Local/5213@from-queue-0000019e;2

SIP/08000000000-00000231

SIP/5213-00000232

===============================================================================

freepbx-01*CLI> core show channel Local/5213@from-queue-0000019e;1 -- General -- Name: Local/5213@from-queue-0000019e;1 Type: Local UniqueID: 1519266469.1390 LinkedID: 1519266461.1389 Caller ID: 08000000000 Caller ID Name: (N/A) Connected Line ID: XXXXXXXXXXX Connected Line ID Name: XXXXXXXXXXX Eff. Connected Line ID: XXXXXXXXXXX Eff. Connected Line ID Name: XXXXXXXXXXX DNID Digits: (N/A) Language: pt_BR State: Up (6) NativeFormats: (g729) WriteFormat: g729 ReadFormat: g729 WriteTranscode: No ReadTranscode: No Time to Hangup: 0 Elapsed Time: 0h3m19s Bridge ID: 19791f60-26b3-4d93-ac14-26bcc430e612 -- PBX -- Context: from-queue Extension: 1 Priority: 1 Call Group: 0 Pickup Group: 0 Application: AppQueue Data: (Outgoing Line) Call Identifer: [C-00000081] Variables: BRIDGEPVTCALLID=cc4a3b3b-921a-1236-d99b-b8ac6f14b1ab BRIDGEPEER=SIP/08000000000-00000231 GOSUB_RETVAL= carrier_name=08000000000 filename=2018/02/21/5213/23-27-53_XXXXXXXXXXX-XXXXXXXXXXX_id1519266469.1390 call_id=1519266469.1390 call_start=1519266473 dialed_at="2018-02-21 23:27:53" call_time=23-27-53 call_date=2018/02/21 phone=SIP/5213 customer_phone=XXXXXXXXXXX agent=5213 SPYGROUP=central MEMBERREALTIME=0 MEMBERDYNAMIC=1 MEMBERPENALTY=0 MEMBERLASTCALL=0 MEMBERCALLS=0 MEMBERNAME=foo.bar MEMBERINTERFACE=Local/5213@from-queue/n AGENT_DEST= CALLER_DEST=quality-survey^s^1 QC_CONFIRM=0 FORWARD_CONTEXT=block-cf CFIGNORE=TRUE CWIGNORE=TRUE RVOL_MODE=dontcare NODEST=1 TTL=64 IVR_RETVM= IVR_CONTEXT=ivr-1 IVR_CONTEXT_ivr-1= CRM_LINKEDID=1519266461.1389 CRM_SOURCE=XXXXXXXXXXX CRM_DIRECTION=INBOUND RGPREFIX=xxxxxxxxxx CALLINGNUMPRES_SV=allowed_not_screened CALLINGNAMEPRES_SV=allowed_not_screened REVERSAL_REJECT=FALSE MOHCLASS= FROM_DID=08000000000 MON_FMT=wav TIMESTR=20180221-232741 YEAR=2018 MONTH=02 DAY=21 REC_STATUS=INITIALIZED DIRECTION=INBOUND CDR Variables: level 1: calledsubaddr= level 1: callingsubaddr= level 1: dnid= level 1: clid="" <0800000000> level 1: src=08000000000 level 1: dst=1 level 1: dcontext=from-queue level 1: channel=Local/5213@from-queue-0000019e;1 level 1: lastapp=AppQueue level 1: lastdata=(Outgoing Line) level 1: start=1519266469.832148 level 1: answer=1519266473.724677 level 1: end=1519266473.738158 level 1: duration=3 level 1: billsec=0 level 1: disposition=8 level 1: amaflags=3 level 1: uniqueid=1519266469.1390 level 1: linkedid=1519266461.1389 level 1: sequence=1764

===============================================================================

freepbx-01*CLI> core show channel Local/5213@from-queue-0000019e;2 -- General -- Name: Local/5213@from-queue-0000019e;2 Type: Local UniqueID: 1519266469.1391 LinkedID: 1519266461.1389 Caller ID: XXXXXXXXXXX Caller ID Name: XXXXXXXXXXX Connected Line ID: 08000000000 Connected Line ID Name: (N/A) Eff. Connected Line ID: 08000000000 Eff. Connected Line ID Name: (N/A) DNID Digits: (N/A) Language: pt_BR State: Up (6) NativeFormats: (g729) WriteFormat: slin ReadFormat: slin WriteTranscode: Yes (slin@8000)->(g729@8000) ReadTranscode: Yes (g729@8000)->(slin@8000) Time to Hangup: 0 Elapsed Time: 0h3m43s Bridge ID: 01cee38b-d001-4448-90d4-2c20ec4e641f -- PBX -- Context: macro-dial-one Extension: s Priority: 53 Call Group: 0 Pickup Group: 0 Application: Dial Data: SIP/5213,,HhtrgM(auto-blkvm)Ib(func-apply-sipheaders^s^1) Call Identifer: [C-00000081] Variables: BRIDGEPVTCALLID=472af26c301617a52ed484ee34213712@a.b.c.d:5060 BRIDGEPEER=SIP/5213-00000232 DIALEDPEERNUMBER=5213 DIALEDPEERNAME=SIP/5213-00000232 DIALSTATUS=ANSWER DIALEDTIME= ANSWEREDTIME= MACRO_DEPTH=1 D_OPTIONS=HhtrgM(auto-blkvm)I MACRO_PRIORITY=8 MACRO_CONTEXT=from-queue-exten-only MACRO_EXTEN=5213 ARG1= DB_RESULT=foo.bar KEEPCID=TRUE CWIGNORE=TRUE GOSUB_RETVAL= DSTRING=SIP/5213 ITER=2 THISDIAL=SIP/5213 ITER2=2 NEWDIAL=SIP/5213& THISPART2=SIP/5213 LOOPCNT2=1 LOOPCNT=1 DEVICES=5213 EXTHASCW= DIALSTATUS_CW= EXTTOCALL=5213 CRM_SOURCE=XXXXXXXXXXX DEXTEN=5213 ARG3=5213 ARG2=HhTtrg CALLEE=dontcare CALLTYPE=external REC_POLICY_MODE_SAVE= FROMEXTEN=1 CALLTYPE_OVERRIDE=external QDOPTS=g RingGroupMethod=none FROMQ=true QAGENT=5213 AGENT_DEST= CALLER_DEST=quality-survey^s^1 QC_CONFIRM=0 FORWARD_CONTEXT=block-cf CFIGNORE=TRUE RVOL_MODE=dontcare NODEST=1 TTL=64 IVR_RETVM= IVR_CONTEXT=ivr-1 IVR_CONTEXT_ivr-1= CRM_LINKEDID=1519266461.1389 CRM_DIRECTION=INBOUND RGPREFIX=xxxxxxxxxx CALLINGNUMPRES_SV=allowed_not_screened CALLINGNAMEPRES_SV=allowed_not_screened REVERSAL_REJECT=FALSE MOHCLASS= FROM_DID=08000000000 MON_FMT=wav TIMESTR=20180221-232741 YEAR=2018 MONTH=02 DAY=21 REC_STATUS=INITIALIZED DIRECTION=INBOUND CDR Variables: level 1: calledsubaddr= level 1: callingsubaddr= level 1: dnid= level 1: clid="XXXXXXXXXX" level 1: src=XXXXXXXXXXX level 1: dst=s level 1: dcontext=macro-dial-one level 1: channel=Local/5213@from-queue-0000019e;2 level 1: dstchannel=SIP/5213-00000232 level 1: lastapp=Dial level 1: lastdata=SIP/5213,,HhtrgM(auto-blkvm)Ib(func-apply-sipheaders^s^1) level 1: start=1519266469.832167 level 1: answer=1519266473.724654 level 1: end=0.000000 level 1: duration=222 level 1: billsec=218 level 1: disposition=8 level 1: amaflags=3 level 1: uniqueid=1519266469.1391 level 1: linkedid=1519266461.1389 level 1: sequence=1765

===============================================================================

freepbx-01*CLI> core show channel SIP/08000000000-00000231 -- General -- Name: SIP/08000000000-00000231 Type: SIP UniqueID: 1519266461.1389 LinkedID: 1519266461.1389 Caller ID: XXXXXXXXXXX Caller ID Name: XXXXXXXXXXXX Connected Line ID: (N/A) Connected Line ID Name: (N/A) Eff. Connected Line ID: (N/A) Eff. Connected Line ID Name: (N/A) DNID Digits: 08000000000 Language: pt_BR State: Up (6) NativeFormats: (g729) WriteFormat: g729 ReadFormat: g729 WriteTranscode: No ReadTranscode: No Time to Hangup: 0 Elapsed Time: 0h2m56s Bridge ID: 19791f60-26b3-4d93-ac14-26bcc430e612 -- PBX -- Context: ext-queues Extension: 1 Priority: 59 Call Group: 0 Pickup Group: 0 Application: Queue Data: 1,t,,,120,,,call-from-queue-connected,start,1[(,)],0, Call Identifer: [C-00000081] Variables: BRIDGEPEER=Local/5213@from-queue-0000019e;1 call_id=1519266469.1390 call_start=1519266473 dialed_at="2018-02-21 23:27:53" call_time=23-27-53 call_date=2018/02/21 agent=5213 QUEUEPOSITION=1 MEMBERREALTIME=0 MEMBERDYNAMIC=1 MEMBERPENALTY=0 MEMBERLASTCALL=0 MEMBERCALLS=0 MEMBERNAME=foo.bar MEMBERINTERFACE=Local/5213@from-queue/n FORWARD_CONTEXT=from-internal CFIGNORE= VQ_ADEST= AGENT_DEST= VQ_CDEST= CALLER_DEST=quality-survey^s^1 VQ_MAX_PENALTY= QMAX_PENALTY= VQ_MIN_PENALTY= QMIN_PENALTY= QUEUEJOINTIME=1519266469 QUEUENUM=1 VQ_MAXWAIT= QMAXWAIT=120 VQ_MOH= QMOH= VQ_AANNOUNCE= QAANNOUNCE= VQ_CONFIRMMSG= QC_CONFIRM=0 CWIGNORE=TRUE GOSUB_RETVAL= REC_POLICY_MODE_SAVE= VQ_POSITION= QPOSITION= VQ_RULE= QRULE=0 VQ_AGI= QAGI= VQ_GOSUB= QGOSUB=call-from-queue-connected,start,1[(,)] VQ_OPTIONS= QOPTIONS=t VQ_RETRY= QRETRY= VQ_JOINMSG= QJOINMSG= RVOL_MODE=dontcare VQ_AINFO= QAINFO= VQ_CIDPP= QCIDPP= NODEST=1 MACRO_DEPTH=0 TTL=64 AMPUSERCIDNAME= AMPUSER= REALCALLERIDNUM=XXXXXXXXXXX TOUCH_MONITOR=1519266461.1389 BACKGROUNDSTATUS=SUCCESS IVR_MSG=custom/qb-welcome&custom/ura-option-one-vendas&custom/ura-option-two-posvendas&custom/ura-option-timeout IVR_RETVM= IVR_CONTEXT=ivr-1 IVR_CONTEXT_ivr-1= DB_RESULT=true CRM_LINKEDID=1519266461.1389 CRM_SOURCE=XXXXXXXXXXX CRM_DIRECTION=INBOUND RGPREFIX=xxxxxxxxxx CALLINGNUMPRES_SV=allowed_not_screened CALLINGNAMEPRES_SV=allowed_not_screened REVERSAL_REJECT=FALSE MOHCLASS= FROM_DID=08000000000 CALLED_BLACKLIST=1 FROMEXTEN=XXXXXXXXXXX MON_FMT=wav TIMESTR=20180221-232741 YEAR=2018 MONTH=02 DAY=21 NOW=1519266461 REC_STATUS=INITIALIZED DIRECTION=INBOUND SIPCALLID=cc4a3b3b-921a-1236-d99b-b8ac6f14b1ab SIPDOMAIN=a.b.c.d SIPURI=sip:mod_sofia@a.b.c.d:5070 CDR Variables: level 1: calledsubaddr= level 1: callingsubaddr= level 1: dnid=XXXXXXXXXXX level 1: cnum=XXXXXXXXXXX level 1: cnam=XXXXXXXXXXX level 1: did=XXXXXXXXXXX level 1: clid="XXXXXXXXXXX" level 1: src=XXXXXXXXXXX level 1: dst=1 level 1: dcontext=ext-queues level 1: channel=SIP/08000000000-00000231 level 1: dstchannel=Local/5213@from-queue-0000019e;1 level 1: lastapp=Queue level 1: lastdata=1,t,,,120,,,call-from-queue-connected,start,1[(,)],0, level 1: start=1519266461.260373 level 1: answer=1519266461.283709 level 1: end=0.000000 level 1: duration=176 level 1: billsec=176 level 1: disposition=8 level 1: amaflags=3 level 1: uniqueid=1519266461.1389 level 1: linkedid=1519266461.1389 level 1: sequence=1763

===============================================================================

freepbx-01*CLI> core show channel SIP/5213-00000232 -- General -- Name: SIP/5213-00000232 Type: SIP UniqueID: 1519266469.1392 LinkedID: 1519266461.1389 Caller ID: 5213 Caller ID Name: foo.bar Connected Line ID: XXXXXXXXXXX Connected Line ID Name: XXXXXXXXXXXX Eff. Connected Line ID: XXXXXXXXXX Eff. Connected Line ID Name: XXXXXXXXXXXX DNID Digits: (N/A) Language: pt_BR State: Up (6) NativeFormats: (alaw) WriteFormat: slin ReadFormat: slin WriteTranscode: Yes (slin@8000)->(alaw@8000) ReadTranscode: Yes (alaw@8000)->(slin@8000) Time to Hangup: 0 Elapsed Time: 0h1m11s Bridge ID: 01cee38b-d001-4448-90d4-2c20ec4e641f -- PBX -- Context: macro-dial-one Extension: s Priority: 1 Call Group: 0 Pickup Group: 0 Application: AppDial Data: (Outgoing Line) Call Identifer: [C-00000081] Variables: BRIDGEPEER=Local/5213@from-queue-0000019e;2 MACRO_DEPTH=0 DB_RESULT=foo.bar GOSUB_RETVAL= FORWARD_CONTEXT=from-internal CFIGNORE= MACRO_RESULT= sipkey= SIPHEADERKEYS= DIALEDPEERNUMBER=5213 SIPCALLID=472af26c301617a52ed484ee34213712@a.b.c.d:5060 KEEPCID=TRUE CWIGNORE=TRUE CRM_SOURCE=XXXXXXXXXXXX FROMQ=true QC_CONFIRM=0 RVOL_MODE=dontcare NODEST=1 TTL=64 IVR_RETVM= CRM_LINKEDID=1519266461.1389 CRM_DIRECTION=INBOUND CALLINGNUMPRES_SV=allowed_not_screened CALLINGNAMEPRES_SV=allowed_not_screened REVERSAL_REJECT=FALSE MOHCLASS= FROM_DID=XXXXXXXXXXXX MON_FMT=wav TIMESTR=20180221-232741 YEAR=2018 MONTH=02 DAY=21 REC_STATUS=INITIALIZED DIRECTION=INBOUND CDR Variables: level 1: calledsubaddr= level 1: callingsubaddr= level 1: dnid= level 1: clid="foo.bar" <5213> level 1: src=5213 level 1: dst=s level 1: dcontext=macro-dial-one level 1: channel=SIP/5213-00000232 level 1: lastapp=AppDial level 1: lastdata=(Outgoing Line) level 1: start=1519266469.867620 level 1: answer=1519266473.715731 level 1: end=1519266473.727113 level 1: duration=3 level 1: billsec=0 level 1: disposition=8 level 1: amaflags=3 level 1: uniqueid=1519266469.1392 level 1: linkedid=1519266461.1389 level 1: sequence=1766

SOLUTION

I used function IMPORT to import variables from inbound leg channel to outbound leg channel.

Works because Local Channel Name is symmetric:

  • Local/5213@from-queue-0000019e;1 (inbound leg)
  • Local/5213@from-queue-0000019e;2 (outbound leg)
same  => n,Set(opposite_channel=${CHANNEL:0:-1}1)  ; Replace number from outbound channel lag to inbound channel lag
same  => n,Set(call_id=${IMPORT(${opposite_channel},call_id)})
same  => n,Set(agent=${IMPORT(${opposite_channel},agent)})
same  => n,Set(call_start=${IMPORT(${opposite_channel},call_start)})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment