If you want flags, then dialog flags, as I wrote before.

Cheers,
Daniel


On 08.03.18 15:03, Fabian Borot wrote:
> Thank you Daniel, I ended up using htables. It works fine .. I just want to 
> see if there was a light weight and ready to use "flag" that would work for 
> me.
>
>
> -----Original Message-----
> From: Daniel-Constantin Mierla [mailto:mico...@gmail.com] 
> Sent: Thursday, March 8, 2018 3:17 AM
> To: Kamailio (SER) - Users Mailing List <sr-users@lists.kamailio.org>; Fabian 
> Borot <fbo...@hotmail.com>
> Subject: Re: [SR-Users] ways to track all messages of a dialog
>
> Hello,
>
> transaction flags are not the right solution here, because if you set the 
> flag for INVITE, you don't get it set for requests within dialog like ACK, 
> BYE, ...
>
> You can use dialog flags -- see dialog module docs for the functions related 
> to them. You have to call first dlg_manage() (might work also with 
> is_known_dlg()) for these requests and then test the dialog flag.
>
> Alternative, if you don't have dialog module loaded, then use htable to mark 
> the dialog -- so store in htable keys with the call ids of the calls to be 
> tracked. For first invite do:
>
> $sht(x=>$ci) = 1;
>
> And then test for the rest of requests:
>
> if($sht(x=>$ci) == 1) { ... }
>
> Cheers,
> Daniel
>
> On 14.02.18 15:12, Fabian Borot wrote:
>> Thank you , but what I need is to be used inside the script, aside from 
>> logging the processing of the messages for those call I also need to apply 
>> certain logic in the kamailio script file, that is why I need something that 
>> can be used from there.  Sipcapture or sngrep are outside the scope of what 
>> I need.
>>
>> Can somebody confirm whether the flags are suitable for this case ?
>>
>>
>> -----Original Message-----
>> From: Fabian Borot
>> Sent: Tuesday, February 13, 2018 5:06 PM
>> To: 'sr-users@lists.kamailio.org' <sr-users@lists.kamailio.org>
>> Subject: ways to track all messages of a dialog
>>
>> I need to track all messages (SIP Requests, SIP Responses) for some SIP 
>> dialogs. Let's say I need to log something specific on each state for calls 
>> initiated from a certain IP (initial request, temporary replies, rejection 
>> with a negative response, call was accepted with 200, termination with BYE, 
>> termination with CANCEL  etc. ).
>> I am thinking on using flags but I am not sure after reading the tutorial  
>> on flags 
>> (http://www.kamailio.org/dokuwiki/doku.php/tutorials:openser-flag-operations)
>>  if that is going to work properly. The doc says: "They provide a very easy 
>> and fast way of keeping states during processing a request or during a 
>> transaction". I am afraid that the ACK if the call is accepted and the BYE 
>> won't be tracked properly because they are not part of the initial 
>> transaction. Also the doc does not mention if the flag is preserved among 
>> branches spawned during the processing of the call.
>>
>> The idea is for example: 
>>
>> request_route {
>>      if (is_method("INVITE")){
>>              if ($si == "192.168.168.100"){          #condition that would 
>> set the flag, INVITE came from "my_IP"
>>                      #flag/mark dialog
>>                      setflag(1);
>>                      #log call from "my_IP" was received
>>              }
>>              route("INCOMING);
>>      }
>>      If(loose_route() ){
>>              if (is_method("ACK")){
>>                      if(isflagset(1)){
>>                              #log ACK related to "my_IP" was received
>>                      }
>>              }
>>              if (is_method("CANCEL")){
>>                      if(isflagset(1)){
>>                              #log CANCEL related to "my_IP" was received
>>                      }
>>              }
>>              if (is_method("BYE")){
>>                      if(isflagset(1)){
>>                              #log BYE related to "my_IP" was received
>>                      }
>>              }
>>      }
>> }
>>
>> Then :
>>
>> route["INCOMING"] {
>>      # do some processing
>>      # do some processing
>>      
>>      t_onreply("INCOMING");
>>      t_on_failure("INCOMING");       
>>      t_relay();
>> }
>>
>> onreply_route[INCOMING] {
>>      #do some processing
>>      if(isflagset(1)){
>>              #log a reply related to "my_IP" was received
>>      }
>> }
>>
>> failure_route[INCOMING] {
>>      #do some processing
>>      if(isflagset(1)){
>>              #log a negative reply related to "my_IP" was received
>>      }
>> }
>>
>>
>> Will the flags work on this case ?
>>
>> My 2nd approach is to use a htable and use the call_id for my calls as the 
>> key. The on each route section (reply, failure_reply, ACK processing etc.) 
>> find the $ci on the htable and if it is there do the appropriate action. But 
>> I need to delete the key:value once the call ends or leave it autoexpire 
>> with a expire value bigger than the max_call_duration_time that we have in 
>> our system.
>>
>>
>>
>>
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> sr-users@lists.kamailio.org
>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> --
> Daniel-Constantin Mierla
> www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio Advanced 
> Training - April 16-18, 2018, Berlin - www.asipto.com Kamailio World 
> Conference - May 14-16, 2018 - www.kamailioworld.com
>

-- 
Daniel-Constantin Mierla
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio Advanced Training - April 16-18, 2018, Berlin - www.asipto.com
Kamailio World Conference - May 14-16, 2018 - www.kamailioworld.com


_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

Reply via email to