[SR-Users] Multiple Registrations - Overwrite oldest contact

Bruno Emer brunoemer at gmail.com
Fri May 13 17:24:37 CEST 2016


Hello all!

After some time I was able to get this working here, and now I am coming
back to share my configuration with you guys (in case someone needs to get
this working).

Here is what we have done:

route[REGISTRAR] {
        if (is_method("REGISTER"))
        {
                if(isflagset(FLT_NATS))
                {
                        setbflag(FLB_NATB);
                        # uncomment next line to do SIP NAT pinging
                        ## setbflag(FLB_NATSIPPING);
                }

                xlog("L_INFO", "checking $tu registered with
User-Agent:$hdr(User-Agent)\n");
                if(reg_fetch_contacts("location", "$tu", "caller"))
                {
                        xlog("L_INFO", "$(ulc(caller=>count)) records found
for $tu\n");
                        $var(i) = 0;
                        while($var(i) < $(ulc(caller=>count)))
                        {

                                xlog("L_INFO", "record $var(i) with
ruid:$(ulc(caller=>ruid)[$var(i)]) -
User-Agent:$(ulc(caller=>user_agent)[$var(i)])");
                                if
($hdr(User-Agent)=~$(ulc(caller=>user_agent)[$var(i)]))
                                {
                                        $var(ruid) =
$(ulc(caller=>ruid)[$var(i)]);
                                        xlog("L_INFO", "unregistering $tu
ruid:$var(ruid)");
                                        unregister("location", "$tu",
"$var(ruid)");
                                }
                                $var(i) = $var(i) + 1;
                        }
                }
                if (!save("location", "0x00"))
                        sl_reply_error();

                exit;
        }
}


There are some logs over there because we used it to see what was going on
while testing the configurations.


With this we can get just one register per User-Agent.


And again, thanks Olle for your help in this problem

*Bruno Emer*

Mobile: +55 11 96540-0044
email: brunoemer at gmail.com
<https://www.facebook.com/bruno.emer.5>
<https://www.linkedin.com/profile/view?id=86461237&trk=spm_pic>
<https://twitter.com/brunoemer_>
<https://www.flickr.com/photos/122070309@N03/>
<http://google.com/+BrunoEmer>  <http://instagram.com/brunoemer_>

2016-04-01 17:37 GMT-03:00 Bruno Emer <brunoemer at gmail.com>:

> Sure it is!
>
> This is exactly what I was looking for! Actually I wasn't able to see that
> there was a way to perform this action!
>
> Thanks for your help, Olle!
>
> I will try to create this, and when I have it done, I will post my script
> here, so if someone else need the same problem I can help.
>
> Now, I have just one more question about my scenario: when I register a
> user, is there a way to create something like a "custom field" on the
> location? To explain better: If possible, I can add something like a custom
> header that says if the user is registered from a phone device or the web
> interface, then I can perform the loop and replace only the oldest contact
> using that device...
>
>
>
> *Bruno Emer*
>
> Mobile: +55 11 96540-0044
> email: brunoemer at gmail.com
>
> 2016-04-01 17:18 GMT-03:00 Bruno Emer <brunoemer at gmail.com>:
>
>> This is my problem... I want to have 2 contacts for AOR, and not only
>> one.
>>
>> When the 3rd arrives, it must remove the oldest and continue with 2...
>>
>> *If I am using the 0x04 parameter, it will save just one contact, and the
>> user will not be able to get the Invite both, in the mobile device and web
>> interface.*
>>
>> *Bruno Emer*
>>
>> Mobile: +55 11 96540-0044
>> email: brunoemer at gmail.com
>> <https://www.facebook.com/bruno.emer.5>
>> <https://www.linkedin.com/profile/view?id=86461237&trk=spm_pic>
>> <https://twitter.com/brunoemer_>
>> <https://www.flickr.com/photos/122070309@N03/>
>> <http://google.com/+BrunoEmer>  <http://instagram.com/brunoemer_>
>>
>> 2016-04-01 17:07 GMT-03:00 Bruno Emer <brunoemer at gmail.com>:
>>
>>> Hello, *Olle!*
>>>
>>> *Thanks for your help in this case, and don't worry about the time
>>> (actually I wasn't even expecting to get an answer today).*
>>>
>>>
>>> *I know the max_contacts parameter. But the problem is that if I set the
>>> max_contacts to 2, when the user tries to register again, he gets an error
>>> message 503. The point is that I want to get the user registered, and
>>> replace the oldest location entry for the newest one.*
>>>
>>>
>>>
>>> *Bruno Emer*
>>>
>>> Mobile: +55 11 96540-0044
>>> email: brunoemer at gmail.com
>>>
>>> 2016-04-01 16:31 GMT-03:00 Bruno Emer <brunoemer at gmail.com>:
>>>
>>>> Hello all.
>>>>
>>>> I have problem here and I tried to find a solution and search over
>>>> internet, but without success.
>>>>
>>>> My scenario is the following: I have an application that must be
>>>> registered in Kamailio when a user logs in the web interface, so he can get
>>>> calls (something like a web softphone using webrtc). At this point, we are
>>>> OK, and everything is working fine.
>>>>
>>>> To get these register functions I am using the parameter
>>>> "save("location", "0x04")" as described in the REGISTRAR module
>>>> documentation, so if a user logs in another web browser or computer, only
>>>> the last one will continue registered and all calls will be forwarded to
>>>> him.
>>>>
>>>> The point is that now we are creating a phone app that will do almost
>>>> the same thing as the web interface, allowing users to receive calls using
>>>> the mobile device, and here is my problem: I want to allow my users to be
>>>> registered on two devices at the same time, but if a user logs into another
>>>> device, I don't want to reply with a 503. I want to allow the user to
>>>> register again, deregistering the oldest contact.
>>>>
>>>> I saw that there is a module named "ims_usrloc_scscf" and on its
>>>> description it says "implemented overwrite oldest contact behaviour",
>>>> but I couldn't find any documentation about it.
>>>>
>>>> So, is there a way to get this working today?
>>>>
>>>>
>>>> *Bruno Emer*
>>>>
>>>> Mobile: +55 11 96540-0044
>>>> email: brunoemer at gmail.com
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20160513/81b3647b/attachment.html>


More information about the sr-users mailing list