[SR-Users] How to hook to Register And Unregister event in Kamailio

Anuran Barman anuranbarman at gmail.com
Tue Jul 23 09:48:38 CEST 2019


So I tried the the Expires header for UNREGISTER and it is working fine.
Thanks for that. But the problem is that SIP Phone does not send UNREGISTER
event. It only sends REGISTER method periodically. So in my Server it will
be always online. So to overcome that I will be running e cron job which
will pool the online users from 'location' table of kamailio mysql db. But
the problem is, 'location' table does not get updated as soon as possible,
rather if I disconnect the SIP Phone and do 'kamctl ul show' it will be
still there for like 5 mins, after that it goes away. How can I change the
timeout of this,say to 2mins, meaning that after 2mins if there is no
response from the client ,Kamailio will mark it as offline. Where to change
that parameter?

On Mon, Jul 22, 2019 at 11:20 PM Anuran Barman <anuranbarman at gmail.com>
wrote:

> Thanks, I will try these out and get back to you.
>
> On Mon, Jul 22, 2019 at 11:18 PM Henning Westerholt <hw at skalatan.de>
> wrote:
>
>> Hello,
>>
>> you can get the result of the register module "save()" function call from
>> its return value:
>>
>>
>> https://www.kamailio.org/docs/modules/5.2.x/modules/registrar.html#registrar.f.save
>> and then use a similar logic like you quoted in the initial question.
>>
>> You can of course also just query the usrloc module with the provide
>> remote function API:
>>
>>
>> https://www.kamailio.org/docs/modules/5.2.x/modules/usrloc.html#usrloc.r.lookup
>>
>> This can be called over HTTP, JSON HTTP and others.
>>
>> Cheers,
>>
>> Henning
>> Am 22.07.19 um 14:34 schrieb Anuran Barman:
>>
>> evapi seems to be complicated and more than necessary for I want to do.
>> Can't I get the successful register and unregister event from config file
>> just like got INVITE event without using it?
>>
>> On Mon, Jul 22, 2019 at 6:02 PM Anuran Barman <anuranbarman at gmail.com>
>> wrote:
>>
>>> # IP authorization and user authentication
>>> route[AUTH] {
>>> #!ifdef WITH_AUTH
>>>
>>> #!ifdef WITH_IPAUTH
>>> if((!is_method("REGISTER")) && allow_source_address()) {
>>> # source IP allowed
>>> return;
>>> }
>>> #!endif
>>>
>>> if (is_method("REGISTER") || from_uri==myself) {
>>> xlog("LOG_LOCAL3","L_INFO","authentication request from domain=$ad
>>> realm=$ar username=$Au sourceIP=$si agentHeader=$ua");
>>> # authenticate requests
>>> if (!auth_check("$fd", "subscriber", "1")) {
>>> auth_challenge("$fd", "0");
>>> exit;
>>> }
>>> # user authenticated - remove auth header
>>> if(!is_method("REGISTER|PUBLISH"))
>>> consume_credentials();
>>> xlog("LOG_LOCAL3","L_INFO","authentication successful"); *<==============
>>> At this point can I assume authentication is successful ??*
>>> }
>>> # if caller is not local subscriber, then check if it calls
>>> # a local destination, otherwise deny, not an open relay here
>>> if (from_uri!=myself && uri!=myself) {
>>> sl_send_reply("403","Not relaying");
>>> exit;
>>> }
>>>
>>> #!endif
>>> return;
>>> }
>>>
>>> Kindly look into the snippet above. The bold lettered one. At that point
>>> can I assume authentication is successful ??
>>>
>>> On Mon, Jul 22, 2019 at 5:58 PM E. Schmidbauer <eschmidbauer at gmail.com>
>>> wrote:
>>>
>>>> you should be doing some sort of authentication and then saving the
>>>> user's registration data.
>>>> add a route to fire an event when the registration data is saved.
>>>> or even better IMO would be to use an event queue like mqueue and
>>>> rtimer to push events into a queue and process them with rtimer and evapi
>>>>
>>>> On Mon, Jul 22, 2019 at 7:46 AM Anuran Barman <anuranbarman at gmail.com>
>>>> wrote:
>>>>
>>>>> But it does not tell me if thats a successful register. I can make the
>>>>> user online but may be the request fails as credentials are wrong. So the
>>>>> REGISTER is not successful. How can I handle that?
>>>>>
>>>>> On Mon, 22 Jul 2019 at 5:14 PM, David Villasmil <
>>>>> david.villasmil.work at gmail.com> wrote:
>>>>>
>>>>>> Just as you do is_method(“INVITE”) you can do is_method(“REGISTER”)
>>>>>> after that you can check the EXPIRE, if it is zero then it is an
>>>>>> UN-REGISTER.
>>>>>>
>>>>>>
>>>>>> On Mon, 22 Jul 2019 at 12:35, E. Schmidbauer <eschmidbauer at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> here is a good example of how you can use evapi in kamailio:
>>>>>>>
>>>>>>> http://kb.asipto.com/kamailio:k43-async-sip-routing-nodejs#evapi_processing
>>>>>>>
>>>>>>> here is a good example of how you can implement it with a go app:
>>>>>>> https://github.com/cgrates/kamevapi
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jul 22, 2019 at 7:18 AM Anuran Barman <
>>>>>>> anuranbarman at gmail.com> wrote:
>>>>>>>
>>>>>>>> It seems like this module is useful for making the
>>>>>>>> connection/message flow. But that I need when I have the events of Register
>>>>>>>> and unregister. How to get the events from this module?
>>>>>>>>
>>>>>>>> On Mon, Jul 22, 2019 at 3:51 PM Anuran Barman <
>>>>>>>> anuranbarman at gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Though I have already a NodeJS server running, I will try the
>>>>>>>>> evapi module. If there are some tutorial/Wiki on how to do this please
>>>>>>>>> share that with me. That will be great help.
>>>>>>>>>
>>>>>>>>> On Mon, Jul 22, 2019 at 3:39 PM E. Schmidbauer <
>>>>>>>>> eschmidbauer at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> I would recommend using `evapi` for something like this
>>>>>>>>>> You could build a small go app that connects via evapi and
>>>>>>>>>> send/receive events to/from kamailio.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Jul 22, 2019 at 3:07 AM Anuran Barman <
>>>>>>>>>> anuranbarman at gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi,
>>>>>>>>>>> I  am integrating Kamailio into my application. I want to hook
>>>>>>>>>>> to the successful REGISTER and unregister event into Kamailio into my
>>>>>>>>>>> application. For now, I am able to hook into INVITE event and can hit my
>>>>>>>>>>> server to send a email to the callee user that user X is calling you. The
>>>>>>>>>>> way I am doing is by this
>>>>>>>>>>>         if (is_method("INVITE")) {
>>>>>>>>>>>                 xlog("LOG_LOCAL3","L_INFO","invite came ($fU)
>>>>>>>>>>> ($tU)");
>>>>>>>>>>>                 $var(res) = http_connect("sipnodejsserver",
>>>>>>>>>>> "/","text/plain","src_user:$fU,dst_user:$tU" ,"$avp(route)");
>>>>>>>>>>>                 xlog("LOG_LOCAL3","L_INFO","request sent
>>>>>>>>>>> $avp(route)  $var(res)");
>>>>>>>>>>>                 setflag(FLT_ACC); # do accounting
>>>>>>>>>>>         }
>>>>>>>>>>>
>>>>>>>>>>> I need to show into my application that their SIP phone is
>>>>>>>>>>> online or not. How can I hook into this?
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Kamailio (SER) - Users Mailing List
>>>>>>>>>>> sr-users at lists.kamailio.org
>>>>>>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Kamailio (SER) - Users Mailing List
>>>>>>>>>> sr-users at lists.kamailio.org
>>>>>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>> Kamailio (SER) - Users Mailing List
>>>>>>>> sr-users at lists.kamailio.org
>>>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Kamailio (SER) - Users Mailing List
>>>>>>> sr-users at lists.kamailio.org
>>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>
>>>>>> --
>>>>>> Regards,
>>>>>>
>>>>>> David Villasmil
>>>>>> email: david.villasmil.work at gmail.com
>>>>>> phone: +34669448337
>>>>>> _______________________________________________
>>>>>> Kamailio (SER) - Users Mailing List
>>>>>> sr-users at lists.kamailio.org
>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>
>>>>> _______________________________________________
>>>>> Kamailio (SER) - Users Mailing List
>>>>> sr-users at lists.kamailio.org
>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>>
>>>> _______________________________________________
>>>> Kamailio (SER) - Users Mailing List
>>>> sr-users at lists.kamailio.org
>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>
>> _______________________________________________
>> Kamailio (SER) - Users Mailing Listsr-users at lists.kamailio.orghttps://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>>
>> --
>> Henning Westerholt - https://skalatan.de/blog/
>> Kamailio services - https://skalatan.de/services
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20190723/7b65254c/attachment.html>


More information about the sr-users mailing list