[asterisk-users] SIP_HEADER function; what names are available?
Steve Langstaff
steve.langstaff at citel.com
Mon Oct 23 01:58:11 MST 2006
Looking at the source code for Asterisk 1.2.7.1 (just what I've got
handy), it appears that the SIP_HEADER() function just parses the SIP
INVITE for whatever SIP *header* you specify - so:
a) there's no list of headers you can check for - it depends on the user
agent generating the request and
b) the request URI is not a SIP header, so you can't get to it using a
stock SIP_HEADER() function.
However, I suppose that there is nothing stopping you from hacking the
source for your Asterisk installation to provide access to the URI... In
chan_sip.c:func_header_read() you could do something like:
static char *func_header_read(struct ast_channel *chan, char *cmd, char
*data, char *buf, size_t len)
{
<snip/>
content = get_header(&p->initreq, data);
if (ast_strlen_zero(content)) {
<new>
/* look for an experimental pseudo-header that allows us
access to the request URI */
/* but note that this is not a real header name! */
if (strcmp(data,
"x-Asterisk-Request-URI-pseudo-header")==0)
{
ast_copy_string(buf, &p->initreq.rlPart2, len);
ast_mutex_unlock(&chan->lock);
return buf;
}
</new>
ast_mutex_unlock(&chan->lock);
return NULL;
}
<snip/>
}
> -----Original Message-----
> From: asterisk-users-bounces at lists.digium.com
> [mailto:asterisk-users-bounces at lists.digium.com] On Behalf Of
> Ricardo Carvalho
> Sent: 20 October 2006 17:51
> To: kjcsb; Asterisk Users Mailing List - Non-Commercial Discussion
> Subject: Re: [asterisk-users] SIP_HEADER function; what names
> are available?
>
> Any news on this thread? I also need to know the way to get
> the R-URI from sip INVITE messages received by Asterisk,
> through ${SIP_HEADER()}.
>
> Thanks in advance,
> Ricardo.
>
>
>
>
>
>
> kjcsb wrote:
> >>> I have read the wiki about the SIP_HEADER function
> (http://www.voip-
> >>> info.org/wiki/index.php?page=Asterisk+func+sip_header).
> Where can I
> >>> get a list of the names that are available to be used with the
> >>> function e.g. TO is one name as in ${SIP_HEADER(TO)}.
> What are the
> >>> others?
> >>>
> >>
> >> I would guess that you can check the RFC. Easier is to
> turn on SIP
> >> debug and see the INVITE packet yourself and
> >> check the headers that you have with your equipment.
> >>
> >> /Olle
> >>
> > Thanks but I don't know how to get the actual INVITE details (the
> > request URI?). For example I want to get
> sip:95556789 at 60.234.xxx.xxx
> > SIP/2.0 from the following dialogue:
> >
> > INVITE sip:95556789 at 60.234.xxx.xxx SIP/2.0
> > Record-Route: <sip:147.202.nn.nnn;ftag=bf7eced18eb7271b;lr=on>
> > Via: SIP/2.0/UDP 147.202.nn.nnn;branch=z9hG4bKe49c.21b320a3.0
> > Via: SIP/2.0/UDP 60.234.nnn.nnn;branch=z9hG4bK76bf3dec8d45b972
> > From: "User" <sip:1122334455 at proxy.domain.com>;tag=bf7eced18eb7271b
> > To: <sip:5556789 at domain.com>
> >
> > etc
> >
> > I can get Record-Route, Via, From, To etc but don't know how to get
> > the bit after the INVITE. Interestingly only the first Via
> is returned
> > by ${SIP_HEADER(VIA)}.
> >
> > I've tried R-URI, RURI, URI, ALL, *, blank.
> >
> > Any advice appreciated.
> >
> > Cameron
> > _______________________________________________
> > --Bandwidth and Colocation provided by Easynews.com --
> >
> > asterisk-users mailing list
> > To UNSUBSCRIBE or update options visit:
> > http://lists.digium.com/mailman/listinfo/asterisk-users
> >
>
> _______________________________________________
> --Bandwidth and Colocation provided by Easynews.com --
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
> http://lists.digium.com/mailman/listinfo/asterisk-users
>
More information about the asterisk-users
mailing list