[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