[SR-Users] Variable $fu Kamailio 3.2
Gilbert T. Gutierrez, Jr.
mailing-lists at phoenixinternet.net
Tue Apr 10 22:52:53 CEST 2012
Actually I figured it out. Here is the code I used to fix my issue.
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' and domain='$fd'","ra");
# determine if a outbound number exists
if ($xavp(ra=>number)) {
$var(b)="sip:" + $xavp(ra=>number) + "@" + $fd;
subst('/^P-Asserted-Identity:(.*)sip:[^@]*@[a-zA-Z0-9.]+(.*)$/P-Asserted-Identity:\1$var(b)\2/ig');
}
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
return;
}
Your response referencing "msg_apply_changes()" lead me to the module
"textops.so" (Though msg_apply_changes() is in module textopsx.so). I am
not sure what the '1' and the '2' in my regular expression do. I assume
they refer to the characters captured in the '(.*)' sections of the
regular expression (I am terrible with regular expressions). Basically
what I needed was to replace the P-Asserted-Identity line in the header.
Thanks again,
Gilbert
On 4/10/2012 1:25 PM, Daniel-Constantin Mierla wrote:
> 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
>
More information about the sr-users
mailing list