Get Context With Hangup Handler
Hi,
I have a hangup handler that’s added at the beginning of a call. It logs all the call details. Using the CONTEXT variable I am always going to get the context where the code is being ran and not the last context that the caller is in. Is there any creative way to get the last context at the call was in?
8 thoughts on - Get Context With Hangup Handler
Damn. forgot the closing parentheses 🙂
—
Thanks in advance,
————————————————————————-
Steve Edwards sedwards@sedwards.com Voice: +1-760-468-3867 PST
https://www.linkedin.com/in/steve-edwards-4244281
—
Double damn. I munged the case on ${CONTEXT}. I give up for today 🙂
—
Thanks in advance,
————————————————————————-
Steve Edwards sedwards@sedwards.com Voice: +1-760-468-3867 PST
https://www.linkedin.com/in/steve-edwards-4244281
—
Steve,
I thought of this but that would mean I would need to add this to the beginning of every context which I can do, but I was trying to avoid.
Every extension in every context.
Or maybe get funky with a wildcard extension with priority = 1 and starting all of your real extensions with priority = 3. Something like this (which uses gosub() just for ease of testing):
; test wildcard extension
same = n, gosub(wildcard-extension,1234,1)
same = n, gosub(wildcard-extension,s,1)
same = n, gosub(wildcard-extension,testing,1)
same = n, hangup()
[wildcard-extension]
; save the current context so it can be used in the hangup handler
exten = _!.,1, verbose(1,[${EXTEN}@${CONTEXT}])
same = n, set(LAST-CONTEXT=${CONTEXT})
same = 4, return
; note all the ‘real’ extensions start with priority = 3
exten = 1234,3, verbose(1,[${EXTEN}@${CONTEXT}!${PRIORITY}])
exten = s,3, verbose(1,[${EXTEN}@${CONTEXT}!${PRIORITY}])
exten = testing,3, verbose(1,[${EXTEN}@${CONTEXT}!${PRIORITY}])
; be explicit with ‘h’ so it doesn’t get handled by the wildcard extension
exten = h,1, verbose(1,[${EXTEN}@${CONTEXT}])
same = n, hangup()
Hopefully somebody else has a more elegant solution.
—
Thanks in advance,
————————————————————————-
Steve Edwards sedwards@sedwards.com Voice: +1-760-468-3867 PST
https://www.linkedin.com/in/steve-edwards-4244281
—
This might not help, but you don’t have to use different contexts when using GoSub, here is an example: https://pastebin.com/ftwWwpKt
—
http://help.nyigc.net/
—
I’m not sure what other implications this might have, but does something like this work for you? You would need to apply the following patch[1].
Manually trying to save the last context/exten/etc. in the dialplan itself is guaranteed to be an ugly solution. Let Asterisk do it for you.
[f1]
exten => s,1,NoOp(${CONTEXT})
same => n,NoOp(${CONTEXT} / ${LASTCONTEXT})
same => n,Goto(f2,s,1)
[f2]
exten => s,1,NoOp(${CONTEXT} / ${LASTCONTEXT})
same => n,NoOp(${CONTEXT} / ${LASTCONTEXT})
same => n,Hangup()
pbxdev*CLI> channel originate Local/s@f1 application Wait 30
[Jan 6 08:19:30] — Called s@f1
[Jan 6 08:19:30] — Executing [s@f1:1]
NoOp(“Local/s@f1-00000002;2”, “f1”) in new stack
[Jan 6 08:19:30] — Executing [s@f1:2]
NoOp(“Local/s@f1-00000002;2”, “f1 / “) in new stack
[Jan 6 08:19:30] — Executing [s@f1:3]
Goto(“Local/s@f1-00000002;2”, “f2,s,1”) in new stack
[Jan 6 08:19:30] — Goto (f2,s,1)
[Jan 6 08:19:30] — Executing [s@f2:1]
NoOp(“Local/s@f1-00000002;2”, “f2 / f1”) in new stack
[Jan 6 08:19:30] — Executing [s@f2:2]
NoOp(“Local/s@f1-00000002;2”, “f2 / f1”) in new stack
[Jan 6 08:19:30] — Executing [s@f2:3]
Hangup(“Local/s@f1-00000002;2”, “”) in new stack
[Jan 6 08:19:30] == Spawn extension (f2, s, 3) exited non-zero on
‘Local/s@f1-00000002;2’
[1] https://code.phreaknet.org/asterisk/lastcontext.diff
>
It seems like this would work and I appreciate the code but I doubt it would make it into the main branch. I think I am stuck with setting it in the context.
Generally speaking, whether it makes it into the main branch or not shouldn’t be relevant. If you need the feature, then you can use the patch, if not, then don’t. That said, some changes were suggested on the review, so it is now
${CHANNEL(lastcontext)} as opposed to ${LASTCONTEXT}. That updated version is here: https://gerrit.asterisk.org/c/asterisk/+/17784
—