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

David Villasmil david.villasmil.work at gmail.com
Tue Jul 23 18:26:21 CEST 2019


you should be able to use usrloc's function:

1.15.  ul_register_ulcb(type ,callback, param)

The function register with USRLOC a callback function to be called when
some event occures inside USRLOC.

Meaning of the parameters is as follows:

   -

   *int types* - type of event for which the callback should be called (see
   usrloc/ul_callback.h).
   -

   *ul_cb f* - callback function; see usrloc/ul_callback.h for prototype.
   -

   *void *param* - some parameter to be passed to the callback each time
   when it is called.


Regards,

David Villasmil
email: david.villasmil.work at gmail.com
phone: +34669448337


On Tue, Jul 23, 2019 at 3:23 PM Anuran Barman <anuranbarman at gmail.com>
wrote:

> yeah it is removing. that sip phone had expiration time more so it was not
> getting deleted. later I found out. Thanks
>
> On Tue, 23 Jul 2019 at 7:46 PM, David Villasmil <
> david.villasmil.work at gmail.com> wrote:
>
>> The module should remove the user's contact when the register expires.
>>
>> Regards,
>>
>> David Villasmil
>> email: david.villasmil.work at gmail.com
>> phone: +34669448337
>>
>>
>> On Tue, Jul 23, 2019 at 10:07 AM Anuran Barman <anuranbarman at gmail.com>
>> wrote:
>>
>>> db_mode is already set to 2. There is one parameter I saw which is
>>> saying about cleaning expired db records so I set it to Enabled.
>>> But it did not change anything.
>>>
>>> modparam("usrloc", "db_timer_clean", 1)
>>>
>>>
>>> On Tue, Jul 23, 2019 at 1:34 PM Henning Westerholt <hw at skalatan.de>
>>> wrote:
>>>
>>>> Hello,
>>>>
>>>> have a look to the db_mode parameter in the usrloc module. You can
>>>> operate the module in different database modes.
>>>>
>>>> Cheers,
>>>>
>>>> Henning
>>>> Am 23.07.19 um 09:48 schrieb Anuran Barman:
>>>>
>>>> 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
>>>>>>
>>>>>> --
>>>> Henning Westerholt - https://skalatan.de/blog/
>>>> Kamailio services - https://skalatan.de/services
>>>>
>>>> _______________________________________________
>>> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20190723/0259dd6d/attachment.html>


More information about the sr-users mailing list