[OpenSIPS-Users] my problems getting dialplan to work

Bogdan-Andrei Iancu bogdan at voice-system.ro
Fri Jun 19 02:36:22 CEST 2009


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: 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
>>
>>     
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>   




More information about the Users mailing list