El Friday 05 September 2008 10:00:04 Adrian Georgescu escribió: > The problem with concurrent prepaid calls and single balance is that > you have to correlate between the call control and rating angine > somehow so that all calls terminate when balnce becomes zero. The > problem is a bit complex: > > Example: > > Balance = 10. > A call starts to destination XXX, for the sake of example max session > time = 2 minutes > After one minute, you start second call to destination YYY which has a > different price and your balance is not anymore 10 but depends on the > duration of the first call which is in progress. > > What is the maximum session time for it given that the first call is > already in progress? > What should happen with the first call? > > I am looking for suggestions on implementing a proper algorithm to > deal with this situation in the rating engine. If you have any I would > be glad to hear it. > > Adrian
Hi Adrian, A simple approach could be: - New Call1 to Dest XXX - Get cost per sec to dest XXX - Get connection cost to dest XXX (if any) - Set customer.balance =- thisCallConnectionCost - Set global var customer.costPerSec to customercostPerSec =+ thisCallCostPerSec - Notify externalWatcher new customer.costPerSec - BYE Call1 to Dest XXX - Get disconnection cost to dest XXX (if any) - Set customer.balance =- thisCallDisconnectionCost - Set global var customer.costPerSec to customercostPerSec =- thisCallCostPerSec - Notify externalWatchr new customer.costPerSec Then on a separate thread or proc or "something" ... - Every timeslice - while activeCustomers.next() - activeCustomer.balance =- activeCustomer.costPerSec - If (activeCustomer.balance <= activeCustomer.lowBalanceAlarm) and !activeCustomer.allreadyNotified - Send lowBalance Notify to customer - If (activeCustomer.balance <= activeCustomer.minAllowedBalance) - while activeCustomer.activeCall.next() - activeCustomer.activeCall.finish() - activeCustomer.lockNewCalls() I think it's a good approach -- Raúl Alexis Betancor Santana Dimensión Virtual S.L. _______________________________________________ Users mailing list Users@lists.kamailio.org http://lists.kamailio.org/cgi-bin/mailman/listinfo/users