Access custom vars in queue does not work?

monotek's picture

I use Asterisk 1.4.29 an FreePBX 2.7.0.3.

I set some custom vars in extensions_custom.conf:

[from-pstn-custom]
exten => _X.,1,NoOp(Set custom vars)
exten => _X.,n,Set(_MY_CALLER=${CALLERID(num)}|_MY_CALLED=${EXTEN})

I can access these vars without problems in a ringgroup but not in a queue.

Why?


__________________


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

doing the above is likely to

p_lindheimer's picture

doing the above is likely to break FreePBX - you are going to ignore priorities 1 and 2 in most included dialplans by doing that which will result in very strange and hard to track down errors.

If you want to do something like this, create a new context, point your trunk to it instead from-pstn, and then after yo do your stuff, got priority 1 of from-pstn as if you had never been anywhere else...


__________________

Philippe Lindheimer - FreePBX Project Leader
FreePBX Training Opportunities - Click Here
Get Official Paid Support - Click Here


Thanks for your answer

monotek's picture

Thanks for your answer :-)

Im glad, the above works for some months now without problems but i like to try your approach.

How do i create a custom context?
I did not find such option in the freepbx panel.

Or should i create it in extensions_custom.conf like:

[my-custom-context]
exten => _X.,1,NoOp(Set custom vars)
exten => _X.,n,Set(_MY_CALLER=${CALLERID(num)}|_MY_CALLED=${EXTEN})

If so, how do i use it?


I tried this now but it does

monotek's picture

I tried this now but it does not work.

[from-pstn-custom]
include => my-custom-context

[my-custom-context]
exten => _X.,1,NoOp(Set custom vars)
exten => _X.,n,Set(_MY_CALLER=${CALLERID(num)}|_MY_CALLED=${EXTEN})

Edit:

I got it work by using global variables in my first approach.

[from-pstn-custom]
exten => _X.,1,NoOp(Set custom vars)
exten => _X.,n,Set(__MY_CALLER=${CALLERID(num)}|__MY_CALLED=${EXTEN})

Could i get in problems using global vars when havin several concurrent calls?


not what I

p_lindheimer's picture

not what I meant,

my-custom-cnotext should have a goto at the end:

exten => _X.,n,Goto(from-pstn,1,${EXTEN})

then in your inbound trunk set:

context=my-custom-context

and get rid of that include


__________________

Philippe Lindheimer - FreePBX Project Leader
FreePBX Training Opportunities - Click Here
Get Official Paid Support - Click Here


Ah. OK: I got that. My vars

monotek's picture

Ah. OK. Thanks. I got that.

I added it to extensions_custom.conf:

[from-custom]
exten => _X.,1,NoOp(Set custom vars)
exten => _X.,n,Set(_MY_CALLER=${CALLERID(num)}|_MY_CALLED=${EXTEN})
exten => _X.,n,Goto(from-pstn,1,${EXTEN})

The first part works.

My vars are loaded but than there seems to be a problem with the goto, because the call is canceled.

This is the log:

    -- Got SIP response 405 "Method Not Allowed" back from 192.168.0.186
    -- Executing [491805123456789@from-custom:1] NoOp("SIP/ACCOUNT1-00002251", "Set custom vars") in new stack
    -- Executing [491805123456789@from-custom:2] Set("SIP/ACCOUNT1-00002251", "_MY_CALLER=030123456789|_MY_CALLED=491805123456789") in new stack
    -- Executing [491805123456789@from-custom:3] Goto("SIP/ACCOUNT1-00002251", "from-pstn|1|491805123456789") in new stack
    -- Goto (from-pstn,1,2147483647)
  == Auto fallthrough, channel 'SIP/ACCOUNT1-00002251' status is 'UNKNOWN'
    -- Executing [h@from-pstn:1] NoOp("SIP/ACCOUNT1-00002251", "Catch-All DID Match - Found h - You probably want a DID for this.") in new stack
    -- Executing [h@from-pstn:2] Goto("SIP/ACCOUNT1-00002251", "ext-did|s|1") in new stack
    -- Goto (ext-did,s,1)
    -- Executing [s@ext-did:1] Set("SIP/ACCOUNT1-00002251", "__FROM_DID=s") in new stack
    -- Executing [s@ext-did:2] Gosub("SIP/ACCOUNT1-00002251", "app-blacklist-check|s|1") in new stack
    -- Executing [s@app-blacklist-check:1] LookupBlacklist("SIP/ACCOUNT1-00002251", "") in new stack
    -- Executing [s@app-blacklist-check:2] GotoIf("SIP/ACCOUNT1-00002251", "0?blacklisted") in new stack
    -- Executing [s@app-blacklist-check:3] Set("SIP/ACCOUNT1-00002251", "CALLED_BLACKLIST=1") in new stack
    -- Executing [s@app-blacklist-check:4] Return("SIP/ACCOUNT1-00002251", "") in new stack
    -- Executing [s@ext-did:3] ExecIf("SIP/ACCOUNT1-00002251", "0 |Set|CALLERID(name)=030123456789") in new stack
    -- Executing [s@ext-did:4] Set("SIP/ACCOUNT1-00002251", "__CALLINGPRES_SV=allowed_not_screened") in new stack
    -- Executing [s@ext-did:5] SetCallerPres("SIP/ACCOUNT1-00002251", "allowed_not_screened") in new stack
    -- Executing [s@ext-did:6] Goto("SIP/ACCOUNT1-00002251", "from-did-direct|2003|1") in new stack
    -- Goto (from-did-direct,2003,1)
    -- Executing [2003@from-did-direct:1] Macro("SIP/ACCOUNT1-00002251", "exten-vm|novm|2003") in new stack
    -- Executing [s@macro-exten-vm:1] Macro("SIP/ACCOUNT1-00002251", "user-callerid|") in new stack
    -- Executing [s@macro-user-callerid:1] Set("SIP/ACCOUNT1-00002251", "AMPUSER=030123456789") in new stack
    -- Executing [2003@from-did-direct:2] Goto("SIP/ACCOUNT1-00002251", "|return|1") in new stack
    -- Goto (from-did-direct,return,1)

The problem seems to be, that exten is changed to 2147483647 (i dont know this number) in goto?


the number is 2 ^ 31 - 1

mudslide567's picture

the number is 2 ^ 31 - 1 which suggests some sort of overflow in a 32 bit register.

Your dial plan says:

exten => _X.,n,Goto(from-pstn,1,${EXTEN})

which is being interpreted as Goto(context,extension,priority)

so you are sending this to priority "491805123456789" which, being larger than the 32 register, it seems that asterisk is handling the error for you by simply cutting it to the largest value of 2147483647... obviously not what you intended.

try rewriting the Goto command


Thanks a lot again! :-) I

monotek's picture

Thanks a lot again! :-)

I now have te setup i wanted using global vars. I hope this doen not lead in problems.

P.S.: I copy/pasted from your post ;-)