Re: [OpenSIPS-Users] How to limit channel on bunch of called DIDs?

2010-01-10 Thread Johnson Pajayat
Hi Bogdan,

I was able to implement the channel limiting on one DID by using a variable
instead of AVP and replacing all instances of $tU to $rU. Now, I want to
limit the channels to a set of DIDs and I'm thinking of implementing a
while loop and counter in order to achieve it. Is this an efficient way
of doing the limiting on a set of DIDs? One problem I can think with the
while loop and counter will be how to deduct those calls that were
already hung up by the caller. Again, inputs will be greatly appreciated.

Thank you very much.

--conpaj--

On Fri, Jan 8, 2010 at 4:53 PM, Bogdan-Andrei Iancu
bog...@voice-system.rowrote:

 Hi

 It is hard to review scripts to see where the problem is, but I will
 help you with some hints on troubleshooting.

 First of all you need to be sure you put in the profiles the calls you
 wants - put some xlog() around the place where you add the call in the
 profile (in the script). Be sure you create the dialog (use
 create_dialog() before adding it into profile). After that, you can
 check with MI function to see the profile content
 (http://www.opensips.org/html/docs/modules/devel/dialog.html#id272772)

 Regards,
 Bogdan

 Johnson Pajayat wrote:
  Hello Bogdan,
 
  I appreciate a lot your response regarding my inquiry. I've been
  reading that tutorial as well as the AVPops and dialog modules
  documentation for about a month now. I tried to adapt that route block
  for inbound calls and here's a portion of what I have on our OpenSIPS
  1.5 config file:
 
 
 ---
  modparam(dialog, dlg_flag, 4)
  modparam(dialog, profiles_with_value, inbound)
 
  ..
 
  } else if (uri=~sip:1234567...@.*) {
  route(3);
  rewritehost(111.222.111.222);
 
  ...
 
  route[3]
  {
  ## have we done our checking on this call?
  if(!isflagset(31))
  {
  # user has max channel limit set as preference
  if(is_avp_set($avp(s:channels)/n) 
  avp_check($avp(s:channels), gt/i:0))
  {
  # get the current calls for DID
  get_profile_size(inbound,$tU,$var(calls));
 
  # check within limit
  if($avp(s:channels)  $var(calls))
  {
  xlog(L_INFO, Call control: DID
  '$tU' currently has
 '$var(calls)' of '$avp(s:channels)'
  active calls before this one\n);
  $var(setprofile) = 1;
  }
  else
  {
  xlog(L_INFO, Call control: DID
  '$tU' channel limit exceeded [$var(calls)/$avp(s:channels)]
  \n);
  send_reply(487, Request Terminated:
  Channel limit exceeded\n);
  exit;
  }
  }
  else
  {
  $var(setprofile) = 0;
  }
 
  call_control();
 
  switch ($retcode)
  {
  case 2:
  # Call with no limit
  case 1:
  # Call with a limit under callcontrol
  management (either prepaid or postpaid)
  break;
  case -1:
  # Not enough credit (prepaid call)
  xlog(L_INFO, Call control: not
  enough credit for prepaid call\n);
  acc_rad_request(402);
  sl_send_reply(402, Not enough
 credit);
  exit;
  break;
  case -2:
  # Locked by call in progress (prepaid
  call)
  xlog(L_INFO, Call control: prepaid
  call locked by another call in progress\n);
  acc_rad_request(403);
  sl_send_reply(403, Call locked by
  another call in progress);
  exit;
  break;
  default:
  # Internal error (message parsing,
  communication, ...)
  xlog(L_INFO, Call control: internal
  server error\n);
  acc_rad_request(500);
  sl_send_reply(500, Internal server
  error);
  exit;
  }
 
  if($var(setprofile)  0)
  {
  create_dialog();
  set_dlg_profile(inbound,$tU

Re: [OpenSIPS-Users] How to limit channel on bunch of called DIDs?

2010-01-08 Thread Johnson Pajayat
Hi Bogdan,

Thank you very much for the hints on troubleshooting. I'll work on that
troubleshooting and hopefully I might be able to fix the issues.

Regards,

--conpaj--

On Fri, Jan 8, 2010 at 4:53 PM, Bogdan-Andrei Iancu
bog...@voice-system.rowrote:

 Hi

 It is hard to review scripts to see where the problem is, but I will
 help you with some hints on troubleshooting.

 First of all you need to be sure you put in the profiles the calls you
 wants - put some xlog() around the place where you add the call in the
 profile (in the script). Be sure you create the dialog (use
 create_dialog() before adding it into profile). After that, you can
 check with MI function to see the profile content
 (http://www.opensips.org/html/docs/modules/devel/dialog.html#id272772)

 Regards,
 Bogdan

 Johnson Pajayat wrote:
  Hello Bogdan,
 
  I appreciate a lot your response regarding my inquiry. I've been
  reading that tutorial as well as the AVPops and dialog modules
  documentation for about a month now. I tried to adapt that route block
  for inbound calls and here's a portion of what I have on our OpenSIPS
  1.5 config file:
 
 
 ---
  modparam(dialog, dlg_flag, 4)
  modparam(dialog, profiles_with_value, inbound)
 
  ..
 
  } else if (uri=~sip:1234567...@.*) {
  route(3);
  rewritehost(111.222.111.222);
 
  ...
 
  route[3]
  {
  ## have we done our checking on this call?
  if(!isflagset(31))
  {
  # user has max channel limit set as preference
  if(is_avp_set($avp(s:channels)/n) 
  avp_check($avp(s:channels), gt/i:0))
  {
  # get the current calls for DID
  get_profile_size(inbound,$tU,$var(calls));
 
  # check within limit
  if($avp(s:channels)  $var(calls))
  {
  xlog(L_INFO, Call control: DID
  '$tU' currently has
 '$var(calls)' of '$avp(s:channels)'
  active calls before this one\n);
  $var(setprofile) = 1;
  }
  else
  {
  xlog(L_INFO, Call control: DID
  '$tU' channel limit exceeded [$var(calls)/$avp(s:channels)]
  \n);
  send_reply(487, Request Terminated:
  Channel limit exceeded\n);
  exit;
  }
  }
  else
  {
  $var(setprofile) = 0;
  }
 
  call_control();
 
  switch ($retcode)
  {
  case 2:
  # Call with no limit
  case 1:
  # Call with a limit under callcontrol
  management (either prepaid or postpaid)
  break;
  case -1:
  # Not enough credit (prepaid call)
  xlog(L_INFO, Call control: not
  enough credit for prepaid call\n);
  acc_rad_request(402);
  sl_send_reply(402, Not enough
 credit);
  exit;
  break;
  case -2:
  # Locked by call in progress (prepaid
  call)
  xlog(L_INFO, Call control: prepaid
  call locked by another call in progress\n);
  acc_rad_request(403);
  sl_send_reply(403, Call locked by
  another call in progress);
  exit;
  break;
  default:
  # Internal error (message parsing,
  communication, ...)
  xlog(L_INFO, Call control: internal
  server error\n);
  acc_rad_request(500);
  sl_send_reply(500, Internal server
  error);
  exit;
  }
 
  if($var(setprofile)  0)
  {
  create_dialog();
  set_dlg_profile(inbound,$tU);
  }
 
  ## mark checking done
  setflag(31);
  }
  }
 
  
 
  And here are the logs appearing on /var/log/messages:
 
  Jan  6 05:53:22 opensips cdrtool[20998]: MaxSessionTime Duration=36000
  callid=28a35ce1-4d7a175-25a58...@124.123.234.229
  mailto:28a35ce1

[OpenSIPS-Users] How to limit channel on bunch of called DIDs?

2010-01-06 Thread Johnson Pajayat
Hi!

I'm a newbie with OpenSIPS administration and configuration and I searched
on the mail archives regarding limiting the channels but only found the site
regarding Concurrent calls limitation. I've been trying to grasp the whole
idea about AVPops and dialog module but unfortunately I'm having a hard time
understanding it. If ever, does anyone here be kind enough to point me to
any available documents or sample configurations file that will help me
limit the channels on inbound calls to a single or group of DIDs?
Implementation will be done static first and hopefully once I got the whole
idea, will be implementing a dynamic one.

Thank you very much.

--conpaj--
___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users


Re: [OpenSIPS-Users] How to limit channel on bunch of called DIDs?

2010-01-06 Thread Johnson Pajayat
/local/sbin/opensips[1637]: Recive call
variable : null null

As for the channels limit value, do I have to define it on usr_preferences
table? I have these records on the said table:

mysql select * from usr_preferences;
++--+++---+--++-+
| id | uuid | username   | domain | attribute | type | value  |
last_modified   |
++--+++---+--++-+
|  1 |  | 1234567890 || channels  |0 | 3  |
1900-01-01 00:00:01 |
|  2 |  | 0  || called_number |0 | 12135551234 |
1900-01-01 00:00:01 |
++--+++---+--++-+
2 rows in set (0.00 sec)

Unfortunately, I'm not quite sure on what section or portion of opensips.cfg
file I will have to put the loading of user preferences to the AVPs. Any
inputs or suggestions will be greatly appreciated?

Thank you very much.

--conpaj--


On Wed, Jan 6, 2010 at 11:26 PM, Bogdan-Andrei Iancu bog...@voice-system.ro
 wrote:

 Hi Johnson,

 The idea is to use dialog profiles to keep trace of the ongoing calls
 (per resource). As a first step take a look at the following tutorial:

http://www.opensips.org/Resources/DocsTutConcurrentCalls

 Regards,
 Bogdan

 Johnson Pajayat wrote:
  Hi!
 
  I'm a newbie with OpenSIPS administration and configuration and I
  searched on the mail archives regarding limiting the channels but only
  found the site regarding Concurrent calls limitation. I've been
  trying to grasp the whole idea about AVPops and dialog module but
  unfortunately I'm having a hard time understanding it. If ever, does
  anyone here be kind enough to point me to any available documents or
  sample configurations file that will help me limit the channels on
  inbound calls to a single or group of DIDs? Implementation will be
  done static first and hopefully once I got the whole idea, will be
  implementing a dynamic one.
 
  Thank you very much.
 
  --conpaj--
 
  
 
  ___
  Users mailing list
  Users@lists.opensips.org
  http://lists.opensips.org/cgi-bin/mailman/listinfo/users
 


 --
 Bogdan-Andrei Iancu
 www.voice-system.ro


 ___
 Users mailing list
 Users@lists.opensips.org
 http://lists.opensips.org/cgi-bin/mailman/listinfo/users

___
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users