[OpenSIPS-Users] my problems getting dialplan to work
Bradley, Todd
todd.bradley at Polycom.com
Fri Jun 19 20:48:03 CEST 2009
[root at test7 ~]# opensips -V
version: opensips 1.5.1-notls (i386/linux)
flags: STATS: Off, USE_IPV6, USE_TCP, DISABLE_NAGLE, USE_MCAST, SHM_MEM,
SHM_MMAP, PKG_MALLOC, F_MALLOC, FAST_LOCK-ADAPTIVE_WAIT
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16,
MAX_URI_SIZE 1024, BUF_SIZE 65535
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
svnrevision: unknown
@(#) $Id: main.c 5469 2009-03-18 12:43:10Z bogdan_iancu $
main.c compiled on 11:54:04 Jun 10 2009 with gcc 4.1.2
> -----Original Message-----
> From: users-bounces at lists.opensips.org
> [mailto:users-bounces at lists.opensips.org] On Behalf Of
> Bogdan-Andrei Iancu
> Sent: Thursday, June 18, 2009 6:36 PM
> To: Bradley, Todd
> Cc: users at lists.opensips.org
> Subject: Re: [OpenSIPS-Users] my problems getting dialplan to work
>
> Hi Todd,
>
> What version of opensips are you using ? Could you pass me
> the output of "opensips -V" ?
>
> Regards,
> Bogdan
>
> Bradley, Todd wrote:
> > I'm running on GNU/Linux FC7. I know that's pretty old, but it's
> > updated with all the latest package updates. I built
> > opensips-1.5.1-tls from source.
> >
> >
> > Todd.
> >
> >
> >
> >> -----Original Message-----
> >> From: users-bounces at lists.opensips.org
> >> [mailto:users-bounces at lists.opensips.org] On Behalf Of
> Bogdan-Andrei
> >> Iancu
> >> Sent: Tuesday, June 16, 2009 11:15 AM
> >> To: Bradley, Todd
> >> Cc: users at lists.opensips.org
> >> Subject: Re: [OpenSIPS-Users] my problems getting dialplan to work
> >>
> >> Todd, this sounds like twilightzone :)...what OS are you using ?
> >>
> >> regards,
> >> Bogdan
> >>
> >> Bradley, Todd wrote:
> >>
> >>> This is really baffling. I updated my DB table to look
> >>>
> >> nearly exactly
> >>
> >>> like yours and even changed my script to look almost exactly like
> >>> yours, and still it doesn't work.
> >>>
> >>> Here's the output that was logged:
> >>>
> >>> Jun 16 10:35:12 [27383] DBG:dialplan:dp_get_ivalue: integer
> >>>
> >> value Jun
> >>
> >>> 16 10:35:12 [27383] DBG:dialplan:dp_translate_f: dpid is 2 Jun 16
> >>> 10:35:12 [27383] DBG:dialplan:dp_get_svalue: searching 78 Jun 16
> >>> 10:35:12 [27383] DBG:dialplan:dp_translate_f: input is
> >>>
> >> sip:061111 Jun
> >>
> >>> 16 10:35:12 [27383] DBG:dialplan:translate: regex operator
> >>>
> >> testing Jun
> >>
> >>> 16 10:35:12 [27383] DBG:dialplan:test_match: test string
> sip:061111
> >>> against a pattern (sip:06.+) Jun 16 10:35:12 [27383]
> >>> DBG:dialplan:test_match: test_match:[0]
> >>> sip:061111
> >>> Jun 16 10:35:12 [27383] DBG:dialplan:test_match: test_match:[1]
> >>> sip:061111
> >>> Jun 16 10:35:12 [27383] DBG:dialplan:translate: found a
> >>>
> >> matching rule
> >>
> >>> 0xb615a1f0: pr 0, match_exp (sip:06.+) Jun 16 10:35:12 [27383]
> >>> DBG:dialplan:translate: the rule's attrs are 0 Jun 16
> >>>
> >> 10:35:12 [27383]
> >>
> >>> DBG:dialplan:translate: the copied attributes
> >>> are: 0
> >>> Jun 16 10:35:12 [27383] DBG:dialplan:test_match: test string
> >>> sip:061111 against a pattern (sip:06.+) Jun 16 10:35:12 [27383]
> >>> DBG:dialplan:test_match: test_match:[0]
> >>> sip:061111
> >>> Jun 16 10:35:12 [27383] DBG:dialplan:test_match: test_match:[1]
> >>> sip:061111
> >>> Jun 16 10:35:12 [27383] DBG:dialplan:dp_translate_f: input
> >>>
> >> sip:061111
> >>
> >>> with dpid 2 => output sip:061111 The variable that went in was
> >>> sip:061111 The variable that came out was sip:061111
> >>>
> >>>
> >>> And here is the relevant part of my route script:
> >>>
> >>> $var(x) = "sip:061111";
> >>> dp_translate("2", "$var(x)/$var(tmp)");
> >>> xlog("The variable that went in was $var(x)\n");
> >>> xlog("The variable that came out was
> $var(tmp)\n");
> >>>
> >>>
> >>> And here is the data from my dialplan table:
> >>>
> >>> mysql> select * from dialplan;
> >>>
> >>>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> +----+------+----+----------+------------+-----------+------------+-
> >>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> >>> -----------+-------+
> >>> | id | dpid | pr | match_op | match_exp | match_len |
> subst_exp |
> >>> repl_exp | attrs |
> >>>
> >>>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> +----+------+----+----------+------------+-----------+------------+-
> >>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> >>> -----------+-------+
> >>> | 7 | 2 | 0 | 1 | (sip:06.+) | 0 |
> (sip:06.+) |
> >>> \1 at 10.47.19.24 | 0 |
> >>>
> >>>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> +----+------+----+----------+------------+-----------+------------+-
> >>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> >>> -----------+-------+
> >>> 1 row in set (0.00 sec)
> >>>
> >>>
> >>>
> >>> Any ideas?
> >>>
> >>>
> >>> Cheers,
> >>> Todd.
> >>>
> >>>
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: users-bounces at lists.opensips.org
> >>>> [mailto:users-bounces at lists.opensips.org] On Behalf Of
> >>>>
> >> Bogdan-Andrei
> >>
> >>>> Iancu
> >>>> Sent: Tuesday, June 16, 2009 10:14 AM
> >>>> To: Bradley, Todd
> >>>> Cc: users at lists.opensips.org
> >>>> Subject: Re: [OpenSIPS-Users] my problems getting
> dialplan to work
> >>>>
> >>>> Hi Todd,
> >>>>
> >>>> The attr column is not user in t matching / replacement
> >>>>
> >> process - it
> >>
> >>>> is a simply opaque string (with no special
> >>>> meaning) that will be automatically pushed into script
> >>>>
> >> (via some PV)
> >>
> >>>> if the rule matches.
> >>>>
> >>>> If this still does not work for you, please post the
> opensips log
> >>>> (like last one).
> >>>>
> >>>> Regards,
> >>>> Bogdan
> >>>>
> >>>> Bradley, Todd wrote:
> >>>>
> >>>>
> >>>>> Thanks, Bogdan. At first I definitely had my repl_exp
> expression
> >>>>> wrong due to the backslash being interpreted wrong. But I
> >>>>>
> >>>>>
> >>>> fixed that
> >>>>
> >>>>
> >>>>> and I think it's right now. Here's what I get:
> >>>>>
> >>>>> mysql> select * from dialplan;
> >>>>>
> >>>>>
> >>>>>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> >>
> +----+------+----+----------+------------+-----------+------------+-
> >>
> >>>>
> >>>>
> >>>>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> >>>>
> >>>>
> >>>>> -----------+-------+
> >>>>> | id | dpid | pr | match_op | match_exp | match_len |
> >>>>>
> >> subst_exp |
> >>
> >>>>> repl_exp | attrs |
> >>>>>
> >>>>>
> >>>>>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> >>
> +----+------+----+----------+------------+-----------+------------+-
> >>
> >>>>
> >>>>
> >>>>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> >>>>
> >>>>
> >>>>> -----------+-------+
> >>>>> | 7 | 2 | 2 | 1 | (sip:06.+) | 0 |
> >>>>>
> >> (sip:06.+) |
> >>
> >>>>> \1 at 10.47.19.24 | |
> >>>>>
> >>>>>
> >>>>>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> >>
> +----+------+----+----------+------------+-----------+------------+-
> >>
> >>>>
> >>>>
> >>>>
> >>
> +----+------+----+----------+------------+-----------+------------+--
> >>
> >>>>
> >>>>
> >>>>> -----------+-------+
> >>>>> 1 row in set (0.00 sec)
> >>>>>
> >>>>>
> >>>>> The only possibly relevant difference I see is that you
> >>>>>
> >> have a 0 in
> >>
> >>>>> your attrs column, where I have a blank. Otherwise, it
> >>>>>
> >> looks like
> >>
> >>>>> everything's fine, doesn't it? I couldn't figure out what
> >>>>>
> >>>>>
> >>>> the attrs
> >>>>
> >>>>
> >>>>> column was for, so I didn't insert anything into it.
> >>>>>
> >>>>>
> >>>> According to the
> >>>>
> >>>>
> >>>>> docs, it's a "General attributes string to be returned in
> >>>>>
> >>>>>
> >>>> case of rule
> >>>>
> >>>>
> >>>>> matching" and it's a string. Could you help explain what
> >>>>>
> >> it's for?
> >>
> >>>>> Cheers,
> >>>>> Todd.
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: users-bounces at lists.opensips.org
> >>>>>> [mailto:users-bounces at lists.opensips.org] On Behalf Of
> >>>>>>
> >>>>>>
> >>>> Bogdan-Andrei
> >>>>
> >>>>
> >>>>>> Iancu
> >>>>>> Sent: Monday, June 15, 2009 6:28 PM
> >>>>>> To: Bradley, Todd
> >>>>>> Cc: users at lists.opensips.org
> >>>>>> Subject: Re: [OpenSIPS-Users] my problems getting
> >>>>>>
> >> dialplan to work
> >>
> >>>>>> Hi Bradley,
> >>>>>>
> >>>>>> I re-made your case with:
> >>>>>>
> >>>>>> mysql> select * from dialplan;
> >>>>>> +----+------+----+----------+------------+-----------+--------
> >>>>>> ----+----------------+-------+
> >>>>>> | id | dpid | pr | match_op | match_exp | match_len |
> >>>>>>
> >> subst_exp |
> >>
> >>>>>> repl_exp | attrs |
> >>>>>> +----+------+----+----------+------------+-----------+--------
> >>>>>> ----+----------------+-------+
> >>>>>> | 1 | 1 | 0 | 1 | (sip:06.+) | 0 |
> >>>>>>
> >>>>>>
> >>>> (sip:06.+) |
> >>>>
> >>>>
> >>>>>> \1 at 10.47.19.24 | 0 |
> >>>>>> +----+------+----+----------+------------+-----------+--------
> >>>>>> ----+----------------+-------+
> >>>>>> 1 row in set (0.00 sec)
> >>>>>>
> >>>>>> and in script:
> >>>>>>
> >>>>>> $var(x) = "sip:061111";
> >>>>>> dp_translate("1", "$var(x)/$var(tmp)");
> >>>>>> xlog("-------------$var(tmp)\n");
> >>>>>>
> >>>>>>
> >>>>>> The output was:
> >>>>>>
> >>>>>> Jun 16 03:22:34 [7921] DBG:dialplan:dp_get_ivalue: integer
> >>>>>>
> >>>>>>
> >>>> value Jun
> >>>>
> >>>>
> >>>>>> 16 03:22:34 [7921] DBG:dialplan:dp_translate_f:
> >>>>>> dpid is 1 Jun 16 03:22:34 [7921] DBG:dialplan:dp_get_svalue:
> >>>>>> searching 78 Jun 16 03:22:34 [7921]
> >>>>>> DBG:dialplan:dp_translate_f: input is sip:061111 Jun 16
> >>>>>> 03:22:34 [7921] DBG:dialplan:translate: regex operator
> >>>>>>
> >>>>>>
> >>>> testing Jun 16
> >>>>
> >>>>
> >>>>>> 03:22:34 [7921] DBG:dialplan:test_match: test string
> sip:061111
> >>>>>> against a pattern (sip:06.+) Jun 16
> >>>>>> 03:22:34 [7921] DBG:dialplan:test_match: test_match:[0]
> >>>>>> sip:061111 Jun 16 03:22:34 [7921] DBG:dialplan:test_match:
> >>>>>> test_match:[1] sip:061111 Jun 16 03:22:34 [7921]
> >>>>>> DBG:dialplan:translate: found a matching rule
> >>>>>> 0xb56744c0: pr 0, match_exp (sip:06.+) Jun 16 03:22:34 [7921]
> >>>>>> DBG:dialplan:test_match: test string
> >>>>>> sip:061111 against a pattern (sip:06.+) Jun 16 03:22:34 [7921]
> >>>>>> DBG:dialplan:test_match: test_match:[0] sip:061111 Jun
> >>>>>> 16 03:22:34 [7921] DBG:dialplan:test_match: test_match:[1]
> >>>>>> sip:061111 Jun 16 03:22:34 [7921]
> >>>>>> DBG:dialplan:dp_translate_f: input sip:061111 with dpid 1
> >>>>>>
> >>>>>>
> >>>> => output
> >>>>
> >>>>
> >>>>>> sip:061111 at 10.47.19.24
> >>>>>> -------------sip:061111 at 10.47.19.24
> >>>>>>
> >>>>>> Which looks pretty ok ...
> >>>>>>
> >>>>>> Maybe there is something something in the correct data
> in DB.....
> >>>>>>
> >>>>>> Regards,
> >>>>>> Bogdan
> >>>>>>
> >>>>>>
> >>>>>> Bradley, Todd wrote:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> Hi, I'm new to openSIPS and am trying to set it up with the
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> dialplan
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> module, but I've had a couple problems I can't figure out.
> >>>>>>>
> >>>>>>> The first problem is related to how dp_translate is
> >>>>>>>
> >> doing regexp
> >>
> >>>>>>> replacements. I have code like this in my route method:
> >>>>>>>
> >>>>>>> if (is_method("INVITE")) {
> >>>>>>> xlog("To user is: $tu\n");
> >>>>>>> xlog("ruri.user is: $ruri.user\n");
> >>>>>>> xlog("avp(s:dest) is: $avp(s:dest)\n");
> >>>>>>> dp_translate("1", "$tu/$var(tmp)");
> >>>>>>> xlog("The variable that came out was $var(tmp)\n");
> >>>>>>> setflag(1); # do accounting
> >>>>>>> }
> >>>>>>>
> >>>>>>> And my dialplan DB table has this row for dpid 1:
> >>>>>>> match_exp=(^06.+)
> >>>>>>> subst_exp=(^06.+)
> >>>>>>> repl_exp=\1 at 10.47.19.24
> >>>>>>>
> >>>>>>> When I send in a SIP INVITE that is to "sip:061111", I
> >>>>>>>
> >> expect the
> >>
> >>>>>>> dp_translate to convert this to "sip:061111 at 10.47.19.24".
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> But I just
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> get "sip:061111" back. Here's the output:
> >>>>>>>
> >>>>>>> To user is: sip:061111
> >>>>>>> ruri.user is: <null>
> >>>>>>> avp(s:dest) is: <null>
> >>>>>>> Jun 12 13:48:55 [29901] DBG:dialplan:dp_get_ivalue: integer
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> value Jun
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> 12 13:48:55 [29901] DBG:dialplan:dp_translate_f: dpid
> >>>>>>>
> >> is 2 Jun 12
> >>
> >>>>>>> 13:48:55 [29901] DBG:dialplan:dp_get_svalue:
> searching 22 Jun 12
> >>>>>>> 13:48:55 [29901] DBG:dialplan:dp_translate_f: input is
> >>>>>>>
> >> sip:061111
> >>
> >>>>>>> Jun 12 13:48:55 [29901] DBG:dialplan:translate: regex
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> operator testing
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> Jun 12 13:48:55 [29901] DBG:dialplan:test_match: test string
> >>>>>>> sip:061111 against a pattern (sip:06.+) Jun 12
> 13:48:55 [29901]
> >>>>>>> DBG:dialplan:test_match: test_match:[0]
> >>>>>>> sip:061111
> >>>>>>> Jun 12 13:48:55 [29901] DBG:dialplan:test_match:
> test_match:[1]
> >>>>>>> sip:061111
> >>>>>>> Jun 12 13:48:55 [29901] DBG:dialplan:translate: found a
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> matching rule
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> 0xb610c1f0: pr 2, match_exp (sip:06.+) Jun 12 13:48:55 [29901]
> >>>>>>> DBG:dialplan:test_match: test string sip:061111 against
> >>>>>>>
> >> a pattern
> >>
> >>>>>>> (sip:06.+) Jun 12 13:48:55 [29901] DBG:dialplan:test_match:
> >>>>>>> test_match:[0]
> >>>>>>> sip:061111
> >>>>>>> Jun 12 13:48:55 [29901] DBG:dialplan:test_match:
> test_match:[1]
> >>>>>>> sip:061111
> >>>>>>> Jun 12 13:48:55 [29901] DBG:dialplan:dp_translate_f: input
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> sip:061111
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> with dpid 2 => output sip:061111 The variable that
> came out was
> >>>>>>> sip:061111
> >>>>>>>
> >>>>>>> So it looks like \1 is indeed replaced with the part that
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> matches the
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> regexp, but the rest of my replacement string (the
> >>>>>>>
> >> "@10.47.19.24"
> >>
> >>>>>>> part) is ignored. Why is that? What am I doing wrong?
> >>>>>>>
> >>>>>>> And my second question is this: Once I fix my first
> >>>>>>>
> >> mistake, what
> >>
> >>>>>>> should I do to make use of this? The behavior I want is
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> that when the
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> proxy gets an INVITE to 061111, it fills in the rest of
> >>>>>>>
> >>>>>>>
> >>>> the address
> >>>>
> >>>>
> >>>>>>> and then routes it along. In this case, it should pass it
> >>>>>>>
> >>>>>>>
> >>>> along to
> >>>>
> >>>>
> >>>>>>> 061111 at 10.47.19.24.
> >>>>>>>
> >>>>>>> Here's where my newness to openSIPS is coming to light, I
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> think. When
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> I read the documentation for the dialplan module
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>
> (http://www.opensips.org/html/docs/modules/1.5.x/dialplan.html), it
> >>>>
> >>>>
> >>>>>>> has an example that leads me to believe I should be able to
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> just do this:
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>>
> >>>>>>> dp_translate("2", "$avp(s:dest)/$avp(s:dest)");
> >>>>>>>
> >>>>>>> But $avp(s:dest) is null, as you can see from the output
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> above. What
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> SHOULD I have in my route script to do what I'm trying to do?
> >>>>>>>
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Todd.
> >>>>>>>
> >>>>>>> ps. I originally posted this question last week to the
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>> OpenSIPS web
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>> forum, but then realized that nobody really reads the
> >>>>>>>
> >>>>>>>
> >>>> forum and all
> >>>>
> >>>>
> >>>>>>> the action is over here on the users email list. So
> >>>>>>>
> >>>>>>>
> >>>> sorry for the
> >>>>
> >>>>
> >>>>>>> sort-of duplication.
> >>>>>>>
> >>>>>>> _______________________________________________
> >>>>>>>
> >>>>>>>
> >> _______________________________________________
> >> Users mailing list
> >> Users at lists.opensips.org
> >> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >>
> >>
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.opensips.org
> > http://lists.opensips.org/cgi-bin/mailman/listinfo/users
> >
> >
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
More information about the Users
mailing list