[OpenSIPS-Users] my problems getting dialplan to work

Bogdan-Andrei Iancu bogdan at voice-system.ro
Tue Jun 16 19:15:04 CEST 2009


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.
>>>>>
>>>>> _______________________________________________
>>>>>           




More information about the Users mailing list