[OpenSIPS-Users] my problems getting dialplan to work
Bradley, Todd
todd.bradley at Polycom.com
Tue Jun 16 19:34:54 CEST 2009
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
>
More information about the Users
mailing list