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

Anuran Barman anuranbarman at gmail.com
Wed Jul 24 07:29:42 CEST 2019


Where should I put this line?
ul_register_ulcb("3", "usrloc:contact-expired");

Am I supposed to to put it in request_route{} block ?? If i put it there
kamailio fails to start up giving error ERROR: <core> [cfg.y:3235]:
yyparse(): cfg. parser: failed to find command ul_register_ulcb (params 2)


On Wed, Jul 24, 2019 at 10:47 AM Anuran Barman <anuranbarman at gmail.com>
wrote:

> This method looks promising. In the doc its saying last one parameter is
> the some params which you wanna pass to the callback, how can I pass the
> expired username to the callback?
>
> On Tue, Jul 23, 2019 at 10:04 PM David Villasmil <
> david.villasmil.work at gmail.com> wrote:
>
>> 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
>>>>
>>> _______________________________________________
>> 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/20190724/a16fbf69/attachment.html>


More information about the sr-users mailing list