[Spce-user] How to force unregister a user

Daniel Grotti dgrotti at sipwise.com
Wed Jul 24 11:01:26 EDT 2013


Yes, the problem is that most probably the $tu doesn't match the AOR -
this is quite usual cause maybe the From is set to you number and the
AOR is maybe myname at mydomain.

So you don't have the AOR information in the 480 message to unregister
the callee in one shot.
You should extract the TO username from the 480 and then check in the DB
which is the subscriber URI related to that number, for example fetching
the kamailio.usr_preferences table using the attribute 'cli'.


Regards,
Daniel



On 07/24/2013 04:48 PM, andreas tseiko wrote:
> Dear Daniel,
> 
> I have changed the syntax to $tu, 
> no syntax error(during ngcpcfg apply) , 
> no parsing error( in logs) , 
> but contact has not been deleted.
> Do you consider that i have to place it somewhere else?
> 
> Best regards.
> 
>  
> 
>> Date: Wed, 24 Jul 2013 16:33:00 +0200
>> From: dgrotti at sipwise.com
>> To: spce-user at lists.sipwise.com
>> Subject: Re: [Spce-user] How to force unregister a user
>>
>> Hi Andreas,
>>
>> It works for me:
>>
>> uregister("location", "$tu");
>>
>> You have to use $tu and not $tU.
>>
>> Yes, the AOR will be remove from location table.
>>
>> Daniel
>>
>>
>> On 07/24/2013 04:14 PM, andreas tseiko wrote:
>> > Dear Daniel,
>> >
>> > I have tried $tU but with no success.
>> > Additionaly I saw into log file the following:
>> > Jul 24 14:51:51 sip /usr/sbin/kamailio[6115]: ERROR: registrar
>> > [common.c:69]: failed to parse Address of Record
>> > Jul 24 14:51:51 sip /usr/sbin/kamailio[6115]: ERROR: registrar
>> > [save.c:895]: failed to extract Address Of Record
>> > After that I used "sip:$tU at example.com" with no success again but with
>> > error in log file.
>> > Do I need something more that should work together with unregister or
>> > shall i place this function somewherelse like impresence?
>> >
>> > If the function syntax is correct and has been executed should I be able
>> > to see immediately the relevant contact be removed from location table
>> > *(mysql> select * from location;)* or not?
>> >
>> > Best regards.
>> >
>> >> Date: Wed, 24 Jul 2013 13:09:45 +0200
>> >> From: dgrotti at sipwise.com
>> >> To: spce-user at lists.sipwise.com
>> >> Subject: Re: [Spce-user] How to force unregister a user
>> >>
>> >> Hi,
>> >>
>> >> you can use the To header instead of the R-URI.
>> >> Since you work on failure route messages there is no R-URI.
>> >> You can try to use $tu, but you have to be sure that the To URI match
>> >> exactly you "userA at your.domain" stored in the location DB.
>> >>
>> >>
>> >> Daniel
>> >>
>> >>
>> >>
>> >> On 07/24/2013 12:08 PM, andreas tseiko wrote:
>> >> > Dear Daniel,
>> >> >
>> >> > Actualy, we want to force unregister user A while user B is
> calling him
>> >> > and user A has lost his network connectivity but his registration
> timer
>> >> > has not expired yet.
>> >> > According to that we have placed functions:
>> >> >
>> >> > *t_reply("480", "User offline"); *to reply with 480 instead of 408
>> >> > *unregister("location", "$ru"); *to unregister user A
>> >> >
>> >> > into
>> >> > file
>> > root at sip:/etc/ngcp-config/templates/etc/kamailio/proxy/proxy.cfg.tt2
>> >> >
>> >> > more specific:
>> >> >
>> >> >
> ########################################################################
>> >> > # Failure route 'base-standard-failure'
>> >> >
> ########################################################################
>> >> > failure_route[FAILURE_ROUTE_LOCAL]
>> >> > {
>> >> > xlog("L_INFO", "Failure route for local call - [% logreq -%]\n");
>> >> >
>> >> > # reset previous D-Uri, otherwise the wrong destination is
>> >> > # used for cfb
>> >> > $du = $null;
>> >> >
>> >> > # initialise variables when entering failure route
>> >> > $var(loose_routed) = 0;
>> >> > $var(no_acc) = 0;
>> >> > $var(no_auth) = 0;
>> >> > $var(forward) = 0;
>> >> > $var(redirected_forward) = 0;
>> >> > $var(external_domain) = 0;
>> >> > $var(ext_timeout) = 0;
>> >> > $var(no_auth) = 0;
>> >> > $var(from_trusted) = 0;
>> >> > $var(to_pstn) = 0;
>> >> > $var(reset_acc_callee) = 0;
>> >> > $var(no_sbc) = 0;
>> >> > $var(sendfax) = 0;
>> >> > $var(local_endpoint) = 0;
>> >> > route(ROUTE_STOP_RTPPROXY_BRANCH);
>> >> > .
>> >> > .
>> >> > .
>> >> > check_status
>> >> > 402|422|481|487
>> >> > 404
>> >> > 301|302
>> >> > 486
>> >> > .
>> >> > .
>> >> > .
>> >> > else if(t_check_status("408") && $var(ext_timeout) != 1)
>> >> > {
>> >> > *t_reply("480", "User offline");*
>> >> > * unregister("location", "$ru");*
>> >> > while($avp(s:callee_cft) != $null)
>> >> > {
>> >> > $var(cf_id) = $(avp(s:callee_cft)[0]);
>> >> > xlog("L_INFO", "CFT to CF map id '$var(cf_id)'
>> >> > found - [% logreq -%]\n");
>> >> > route(ROUTE_LOAD_CF_MAP);
>> >> > while($avp(s:cf_destinations) != $null &&
>> >> > $(avp(s:cf_destinations)[0]) =~ "^sip:localuser at .+\.local$")
>> >> > {
>> >> > xlog("L_INFO", "CFT breakout to local
>> >> > user skipped - [% logreq -%]\n");
>> >> > $(avp(s:cf_timeouts)[0]) = $null;
>> >> > $(avp(s:cf_destinations)[0]) = $null;
>> >> > }
>> >> > if($avp(s:cf_destinations) == $null)
>> >> > {
>> >> > xlog("L_INFO", "CFT skipped due to
>> >> > forward destinations definitions - [% logreq -%]\n");
>> >> > }
>> >> > else
>> >> > {
>> >> > route(ROUTE_CHECK_CF_PERIOD);
>> >> > if($rc == 1)
>> >> > {
>> >> > xlog("L_INFO", "CFT to
>> >> > destination '$(avp(s:cf_destinations)[0])' with timeout
>> >> > '$(avp(s:cf_timeouts)[0])' activated - [% logreq -%]\n");
>> >> > $ru = $(avp(s:cf_destinations)[0]);
>> >> > $(avp(s:cf_destinations)[0]) =
>> >> > $null;
>> >> > $(avp(s:callee_fr_inv_timer)[*])
>> >> > = $(avp(s:cf_timeouts)[0]) * 1000;
>> >> >
>> >> > t_set_fr("$avp(s:callee_fr_inv_timer)");
>> >> > $(avp(s:cf_timeouts)[0]) = $null;
>> >> > $(avp(s:cf_depth)[*]) =
>> >> > $(avp(s:cf_depth){s.int}) + 1;
>> >> > $(avp(s:acc_state)[*]) = "cft";
>> >> > $(avp(s:acc_caller_user)[*]) =
>> >> > $avp(s:acc_callee_user);
>> >> > $(avp(s:acc_caller_domain)[*]) =
>> >> > $avp(s:acc_callee_domain);
>> >> > append_branch();
>> >> > route(ROUTE_EXECUTE_CF_LOOP);
>> >> > exit;
>> >> > }
>> >> > else
>> >> > {
>> >> > xlog("L_INFO", "CFT skipped due
>> >> > to time period definitions - [% logreq -%]\n");
>> >> > }
>> >> > }
>> >> > $(avp(s:callee_cft)[0]) = $null;
>> >> > }
>> >> > $var(announce_handle) = "callee_tmp_unavailable";
>> >> > $var(announce_set) = $avp(s:callee_sound_set);
>> >> > $(avp(s:announce_code)[*]) = 408;
>> >> > $(avp(s:announce_reason)[*]) = "Request Timeout";
>> >> > route(ROUTE_EARLY_REJECT);
>> >> > }
>> >> > while($avp(s:callee_cfna) != $null)
>> >> > {
>> >> > $var(cf_id) = $(avp(s:callee_cfna)[0]);
>> >> > xlog("L_INFO", "CFNA to CF map id '$var(cf_id)' found -
>> >> > [% logreq -%]\n");
>> >> > route(ROUTE_LOAD_CF_MAP);
>> >> > while($avp(s:cf_destinations) != $null &&
>> >> > $(avp(s:cf_destinations)[0]) =~ "^sip:localuser at .+\.local$")
>> >> > {
>> >> > xlog("L_INFO", "CFNA breakout to local user
>> >> > skipped - [% logreq -%]\n");
>> >> > $(avp(s:cf_timeouts)[0]) = $null;
>> >> > $(avp(s:cf_destinations)[0]) = $null;
>> >> > }
>> >> > if($avp(s:cf_destinations) == $null)
>> >> > {
>> >> > xlog("L_INFO", "CFNA skipped due to forward
>> >> > destinations definitions - [% logreq -%]\n");
>> >> > }
>> >> > else
>> >> > {
>> >> > route(ROUTE_CHECK_CF_PERIOD);
>> >> > if($rc == 1)
>> >> > {
>> >> > xlog("L_INFO", "CFNA to destination
>> >> > '$(avp(s:cf_destinations)[0])' with timeout
> '$(avp(s:cf_timeouts)[0])'
>> >> > activated - [% logreq -%]\n");
>> >> > $ru = $(avp(s:cf_destinations)[0]);
>> >> > $(avp(s:cf_destinations)[0]) = $null;
>> >> > $(avp(s:callee_fr_inv_timer)[*]) =
>> >> > $(avp(s:cf_timeouts)[0]) * 1000;
>> >> > t_set_fr("$avp(s:callee_fr_inv_timer)");
>> >> > $(avp(s:cf_timeouts)[0]) = $null;
>> >> > $(avp(s:cf_depth)[*]) =
>> >> > $(avp(s:cf_depth){s.int}) + 1;
>> >> > $(avp(s:acc_state)[*]) = "cfna";
>> >> > $(avp(s:acc_caller_user)[*]) =
>> >> > $avp(s:acc_callee_user);
>> >> > $(avp(s:acc_caller_domain)[*]) =
>> >> > $avp(s:acc_callee_domain);
>> >> > append_branch();
>> >> > route(ROUTE_EXECUTE_CF_LOOP);
>> >> > exit;
>> >> > }
>> >> > else
>> >> > {
>> >> > xlog("L_INFO", "CFNA skipped due to time
>> >> > period definitions - [% logreq -%]\n");
>> >> > }
>> >> > }
>> >> > $(avp(s:callee_cfna)[0]) = $null;
>> >> > }
>> >> >
>> >> > $var(announce_handle) = "callee_tmp_unavailable";
>> >> > $var(announce_set) = $avp(s:callee_sound_set);
>> >> > $(avp(s:announce_code)[*]) = $T_rpl($rs);
>> >> > $(avp(s:announce_reason)[*]) = $T_rpl($rr);
>> >> > route(ROUTE_EARLY_REJECT);
>> >> > }
>> >> >
>> >> >
>> >> >
>> >> >> Date: Wed, 24 Jul 2013 10:43:21 +0200
>> >> >> From: dgrotti at sipwise.com
>> >> >> To: spce-user at lists.sipwise.com
>> >> >> Subject: Re: [Spce-user] How to force unregister a user
>> >> >>
>> >> >> Hi Andreas,
>> >> >>
>> >> >> it depends when you want to perform the de-registration.
>> >> >> The URI must be the SIP URI address of the user which to remove the
>> >> >> contact addresses for.
>> >> >>
>> >> >> Can you share your code?
>> >> >>
>> >> >> Daniel
>> >> >>
>> >> >>
>> >> >>
>> >> >> On 07/19/2013 04:57 PM, andreas tseiko wrote:
>> >> >> > Dear Daniel,
>> >> >> >
>> >> >> > I have used the following combinations but with no success:
>> >> >> > unregister("location", "$ru");
>> >> >> > unregister("location", "sip:$ru at example.com");
>> >> >> > unregister("location", "$avp(s:callee_user)");
>> >> >> > unregister("location", "sip:$avp(s:callee_user)@example.com");
>> >> >> >
>> >> >> > Could you please help regarding what is the correct variable
> that I
>> >> >> > should use for "URI" field?
>> >> >> >
>> >> >> > Best regards.
>> >> >> >
>> >> >> >> Date: Fri, 19 Jul 2013 16:46:35 +0200
>> >> >> >> From: dgrotti at sipwise.com
>> >> >> >> To: spce-user at lists.sipwise.com
>> >> >> >> Subject: Re: [Spce-user] How to force unregister a user
>> >> >> >>
>> >> >> >> Hi,
>> >> >> >>
>> >> >> >> you can use "unregister(domain, uri)" function:
>> >> >> >>
>> >> >> >>
>> >> >> >
>> >> >
>> >
> http://www.kamailio.org/docs/modules/3.3.x/modules_k/registrar.html#idp6222944
>> >> >> >>
>> >> >> >> br,
>> >> >> >> Daniel
>> >> >> >>
>> >> >> >>
>> >> >> >> On 07/19/2013 04:41 PM, andreas tseiko wrote:
>> >> >> >> > Hi Daniel,
>> >> >> >> >
>> >> >> >> > Yes , I want to unregister the user via kamailio.cfg during
> a call
>> >> >> > parsing.
>> >> >> >> >
>> >> >> >> > Best regards.
>> >> >> >> >
>> >> >> >> >> Date: Fri, 19 Jul 2013 16:35:29 +0200
>> >> >> >> >> From: dgrotti at sipwise.com
>> >> >> >> >> To: spce-user at lists.sipwise.com
>> >> >> >> >> Subject: Re: [Spce-user] How to force unregister a user
>> >> >> >> >>
>> >> >> >> >> Hi Andreas,
>> >> >> >> >>
>> >> >> >> >> do you want to unregister the user from kamailio.cfg during a
>> > call
>> >> >> >> >> parsing or what ?
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> br,
>> >> >> >> >> Daniel
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> On 07/19/2013 04:10 PM, andreas tseiko wrote:
>> >> >> >> >> > Dear John,
>> >> >> >> >> >
>> >> >> >> >> > Let me rephrase my question,
>> >> >> >> >> >
>> >> >> >> >> > I would like automaticaly a registered user to be
> unregistered
>> >> >> > when for
>> >> >> >> >> > example his network connection has been lost and another
>> > user is
>> >> >> > calling
>> >> >> >> >> > him.
>> >> >> >> >> >
>> >> >> >> >> > Best regards.
>> >> >> >> >> >
>> >> >> >> >> > Date: Fri, 19 Jul 2013 15:59:49 +0200
>> >> >> >> >> > From: jbonilla at sipwise.com
>> >> >> >> >> > To: spce-user at lists.sipwise.com
>> >> >> >> >> > Subject: Re: [Spce-user] How to force unregister a user
>> >> >> >> >> >
>> >> >> >> >> > El Fri, 19 Jul 2013 16:50:28 +0300
>> >> >> >> >> > andreas tseiko <a.tseiko at hotmail.com> escribió:
>> >> >> >> >> >
>> >> >> >> >> >> Dear All,
>> >> >> >> >> >> Is it possible to unregister a user if a specified
> criteria is
>> >> >> >> > matched before
>> >> >> >> >> >> his registration expires?If yes, what is the function
> that I
>> >> > should
>> >> >> >> > call?
>> >> >> >> >> >> Best regards.
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> > You can use "delete_subscriber_registered_device"
> function to
>> >> > delete
>> >> >> >> > any device
>> >> >> >> >> > registration.
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> > _______________________________________________ Spce-user
>> > mailing
>> >> >> > list
>> >> >> >> >> > Spce-user at lists.sipwise.com
>> >> >> > http://lists.sipwise.com/listinfo/spce-user
>> >> >> >> >> >
>> >> >> >> >> >
>> >> >> >> >> > _______________________________________________
>> >> >> >> >> > Spce-user mailing list
>> >> >> >> >> > Spce-user at lists.sipwise.com
>> >> >> >> >> > http://lists.sipwise.com/listinfo/spce-user
>> >> >> >> >> >
>> >> >> >> >>
>> >> >> >> >> _______________________________________________
>> >> >> >> >> Spce-user mailing list
>> >> >> >> >> Spce-user at lists.sipwise.com
>> >> >> >> >> http://lists.sipwise.com/listinfo/spce-user
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > _______________________________________________
>> >> >> >> > Spce-user mailing list
>> >> >> >> > Spce-user at lists.sipwise.com
>> >> >> >> > http://lists.sipwise.com/listinfo/spce-user
>> >> >> >> >
>> >> >> >>
>> >> >> >> _______________________________________________
>> >> >> >> Spce-user mailing list
>> >> >> >> Spce-user at lists.sipwise.com
>> >> >> >> http://lists.sipwise.com/listinfo/spce-user
>> >> >>
>> >> >> _______________________________________________
>> >> >> Spce-user mailing list
>> >> >> Spce-user at lists.sipwise.com
>> >> >> http://lists.sipwise.com/listinfo/spce-user
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > Spce-user mailing list
>> >> > Spce-user at lists.sipwise.com
>> >> > http://lists.sipwise.com/listinfo/spce-user
>> >> >
>> >>
>> >> _______________________________________________
>> >> Spce-user mailing list
>> >> Spce-user at lists.sipwise.com
>> >> http://lists.sipwise.com/listinfo/spce-user
>> >
>> >
>> > _______________________________________________
>> > Spce-user mailing list
>> > Spce-user at lists.sipwise.com
>> > http://lists.sipwise.com/listinfo/spce-user
>> >
>>
>> _______________________________________________
>> Spce-user mailing list
>> Spce-user at lists.sipwise.com
>> http://lists.sipwise.com/listinfo/spce-user
> 
> 
> _______________________________________________
> Spce-user mailing list
> Spce-user at lists.sipwise.com
> http://lists.sipwise.com/listinfo/spce-user
> 




More information about the Spce-user mailing list