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
