SOLVED Re: [Asterisk-Dev] ParkAndAnnounce() - trying to add var to indicate parked exten

Andrew Kohlsmith akohlsmith-asterisk at benshaw.com
Sat Oct 15 18:40:36 MST 2005


On Saturday 15 October 2005 11:29, Andrew Kohlsmith wrote:
>         snprintf(buf, sizeof(buf), "%i", lot);
>         memset(&oh, 0, sizeof(struct outgoing_helper));
>         oh.vars = ast_variable_new("PARKEDAT", buf);
>
>         dchan = __ast_request_and_dial(dialtech, AST_FORMAT_SLINEAR,
> dialstr,30000, &outstate, chan->cid.cid_num, chan->cid.cid_name, &oh);

I've checked it over and even metered out ast_call() -- This variable is 
showing up just as any other variable does...  If I place a "normal" call I 
see the DIALEDPEERNUMBER variable when I use Dial in ast_call just as my 
PARKEDAT variable does with ParkAndAnnounce().

I'm using the following code snippet in ast_dial() to show the variables:

        struct ast_var_t *current;

        AST_LIST_TRAVERSE(&chan->varshead, current, entries) {
                ast_log(LOG_WARNING, "current @ %p, name %s, value %s\n", 
current, current->name, current->value);
        }

chan_local's call function calls ast_channel_inherit_variables, and my 
variable is showing up there (the only variable, actually), so I know it's 
making it to the channel driver.

The solution turned out to be naming the variable _PARKEDAT not just PARKEDAT.  
ast_channel_inherit_variables() won't copy a variable into the PBX context 
unless it's _-prefixed.  I remember this dimly somewhere a long time ago.

Where's O'reilly, I'm gonna write the second Asterisk book.  It's gonna be 
titled "The Asterisk Developer's Handbook: all the info Digium isn't keeping 
from you, but isn't making easy to get, either"  :-)

-A.



More information about the asterisk-dev mailing list