Has anyone else seen dp_translate not actually translate according to its rules? Are other people using the dialplan module successfully?
Todd. > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Bradley, Todd > Sent: Tuesday, June 16, 2009 11:35 AM > To: [email protected] > Subject: Re: [OpenSIPS-Users] my problems getting dialplan to work > > 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: [email protected] > > [mailto:[email protected]] On Behalf Of > Bogdan-Andrei > > Iancu > > Sent: Tuesday, June 16, 2009 11:15 AM > > To: Bradley, Todd > > Cc: [email protected] > > 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.+) | > > > \[email protected] | 0 | > > > > > > +----+------+----+----------+------------+-----------+------------+--- > > > > > > +----+------+----+----------+------------+-----------+------------+-- > > > -----------+-------+ > > > 1 row in set (0.00 sec) > > > > > > > > > > > > Any ideas? > > > > > > > > > Cheers, > > > Todd. > > > > > > > > > > > >> -----Original Message----- > > >> From: [email protected] > > >> [mailto:[email protected]] On Behalf Of > > Bogdan-Andrei > > >> Iancu > > >> Sent: Tuesday, June 16, 2009 10:14 AM > > >> To: Bradley, Todd > > >> Cc: [email protected] > > >> 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.+) | > > >>> \[email protected] | | > > >>> > > >>> > > >> > > > +----+------+----+----------+------------+-----------+------------+-- > > >> > > +----+------+----+----------+------------+-----------+------------+- > > >> > > >> > > > +----+------+----+----------+------------+-----------+------------+-- > > >> > > >>> -----------+-------+ > > >>> 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: [email protected] > > >>>> [mailto:[email protected]] On Behalf Of > > >>>> > > >> Bogdan-Andrei > > >> > > >>>> Iancu > > >>>> Sent: Monday, June 15, 2009 6:28 PM > > >>>> To: Bradley, Todd > > >>>> Cc: [email protected] > > >>>> 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.+) | > > >> > > >>>> \[email protected] | 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:[email protected] > > >>>> -------------sip:[email protected] > > >>>> > > >>>> 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.+) > > >>>>> [email protected] > > >>>>> > > >>>>> When I send in a SIP INVITE that is to "sip:061111", I > > expect the > > >>>>> dp_translate to convert this to "sip:[email protected]". > > >>>>> > > >>>>> > > >>>> 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 > > >> > > >>>>> [email protected]. > > >>>>> > > >>>>> 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 > > [email protected] > > http://lists.opensips.org/cgi-bin/mailman/listinfo/users > > > > _______________________________________________ > Users mailing list > [email protected] > http://lists.opensips.org/cgi-bin/mailman/listinfo/users > _______________________________________________ Users mailing list [email protected] http://lists.opensips.org/cgi-bin/mailman/listinfo/users
