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

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


You can register a callback for any events on the usrloc module, i.e.:

ul_register_ulcb("3", "usrloc:contact-expired");

then create a route like:

event_route[usrloc:contact-expired] {
  ... do your thing here ...
}

I've never had the need to use it, but should work for you


Regards,

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


On Tue, Jul 23, 2019 at 5:26 PM David Villasmil <
david.villasmil.work at gmail.com> wrote:

> 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/2fff6694/attachment.html>


More information about the sr-users mailing list