[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