[SR-Users] Variable $fu Kamailio 3.2

Daniel-Constantin Mierla miconda at gmail.com
Tue Apr 10 22:25:37 CEST 2012


Hello,


On 4/10/12 7:23 PM, Gilbert T. Gutierrez, Jr. wrote:
> Daniel and Alex,
>
> Obviously I stumbled into a way to do things that has been illegal in 
> the past. How do I do this the old way? I have been looking for 
> examples and hints online but have only found references to modules 
> and examples using Kamailio compiled as OpenSER. I am using Kamailio 
> from RPMs so I only have modules and modules_k.
I don't really get what you mean. Do you need a solution for an older 
version? openser was the old name for kamailio, all modules that existed 
during openser name are in modules/ or modules_k/. Starting with 3.2.0, 
you can directly assign value to $fu, previously the solution was to use 
uac_replace_from() of uac module, or play with functions from textops 
module.

>
> The issue I was having was that my extension (either 3 digit or 7 
> digit) was showing up as the callerid when I made outside calls. I 
> created a reverse table that you look up the correct number to show 
> the callee. I also add the domain to the query when I have multidomain 
> enabled. On my test box for multidomain which I am developing in 
> parallel, my code works and $fu is set to what I want and the callee 
> gets what I want them to see. It is odd to me that it works on one box 
> with multidomain and not the other with multidomain disabled.

Do you get any error messages in the log where it does not work? Add 
some xlog(...) to print the values used in the operations. debugger 
module may help you to see if the action is actually executed.

Btw, if you need the From header to be reverted in the reply, 
uac_replace_from() is the better way to go.

Cheers,
Daniel
>
> Thank you,
> Gilbert T. Gutierrez, Jr.
> Operations Manager
> Phoenix Internet
>
>
>
> On 4/10/2012 1:07 AM, Daniel-Constantin Mierla wrote:
>> Hello,
>>
>> On 4/10/12 4:05 AM, Alex Balashov wrote:
>>> $fu is not mutable.
>>
>> actually it is starting with v3.2.0. But it is not visible in the 
>> script, like the other operations performed on the headers -- they 
>> operations are kept as a diff (patch) list, not applied immediately.
>>
>> So, you will see the new From header when the message is sent to the 
>> network, before that is the original value. You can use 
>> msg_apply_changes() to make the changes visible immediately.
>>
>> Cheers,
>> Daniel
>>
>>>
>>> -- 
>>> Alex Balashov - Principal
>>> Evariste Systems LLC
>>> 235 E Ponce de Leon Ave
>>> Suite 106
>>> Decatur, GA 30030
>>> Tel: +1-678-954-0670
>>> Fax: +1-404-961-1892
>>> Web: http://www.evaristesys.com/, http://www.alexbalashov.com
>>>
>>> "Gilbert T. Gutierrez, Jr."<mailing-lists at phoenixinternet.net>  wrote:
>>>
>>>> I wrote the code below to rewrite an extension to a phone number 
>>>> (It is
>>>> called in route[LOCATION]). This code works fine with MULTIDOMAIN
>>>> enabled but when I run it as a single domain the line $fu=$var(b); 
>>>> does
>>>> not seem to work..  You can see that I have several xlog lines
>>>> outputting the variable values into my /var/log/messages. $var(b) has
>>>> the correct value in it, so I do not know what is happening. I have 
>>>> also
>>>> included the /var/log/messages output which I redacted the phone 
>>>> number,
>>>> domain, and extension for security purposes. I am sure I am going 
>>>> about
>>>> this backwards, but can someone provide me some guidance as to what is
>>>> going wrong?
>>>>
>>>> Thank you,
>>>> Gilbert
>>>>
>>>> # Rewrite - Gilbert
>>>> route[REWRITE] {
>>>> # This section rewrites the outbound calling number so that caller id
>>>> works correctly.
>>>> #!ifdef WITH_REWRITE
>>>>          # lookup an outbound number to replace the extension with
>>>>          $var(b)="NO REV";
>>>>          sql_xquery("ca","select number from pioutalias where
>>>> username='$fU'","ra");
>>>>          # determine if a outbound number exists
>>>>          if ($xavp(ra=>number)) {
>>>>                  $var(b)="sip:" + $xavp(ra=>number) + "@" + $fd;
>>>>                  xlog("L_INFO","var(b): '$var(b)'");
>>>>                  xlog("L_INFO","fu: '$fu'");
>>>>                  # Assign the outbound calling number
>>>>                  $fu=$var(b);
>>>>                  xlog("L_INFO","New fu: '$fu'");
>>>>          }
>>>>          sql_result_free("ra");
>>>>          # see if it found a number and log if it did not
>>>>          if ($var(b)=="NO REV")
>>>>                  xlog("L_INFO","No number found for extension: 
>>>> '$fu'");
>>>> #!endif
>>>> }
>>>>
>>>>
>>>> /var/log/messages output
>>>>
>>>> Apr  9 14:38:38 tempfax /usr/sbin/kamailio[6088]: INFO:<script>:
>>>> var(b): 'sip:602XXXXXXX at xxxx.com'
>>>> Apr  9 14:38:38 tempfax /usr/sbin/kamailio[6088]: INFO:<script>: fu:
>>>> 'sip:30XXXXX at xxxx.com'
>>>> Apr  9 14:38:38 tempfax /usr/sbin/kamailio[6088]: INFO:<script>: New
>>>> fu: 'sip:30XXXXX at xxxx.com'
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing 
>>>> list
>>>> sr-users at lists.sip-router.org
>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>> sr-users at lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla
Kamailio Advanced Training, April 23-26, 2012, Berlin, Germany
http://www.asipto.com/index.php/kamailio-advanced-training/




More information about the sr-users mailing list