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: [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
