При оказании услуги оптовому покупателю владельцу Flysip Softswitch необходимо разрешить как можно больше одновременных сеансов, в то же время запретив покупателю злоупотреблять своим балансом.
Для достижения этой цели flysip Softswitch, начиная с версии 5.3 , увеличивает разрешенную максимальную продолжительность активного звонка в режиме реального времени. Алгоритм изменен только для баланса Аккаунтов и работает следующим образом:
- Поступает звонок. Флайсип пытается выделить деньги на первый период времени.
- Если баланс достаточен, вызову разрешается соединиться и продолжаться, по крайней мере, в течение этого первого периода.
- Вызов соединяется, и за некоторое время до истечения выделенного времени flysip пытается выделить дополнительный период времени, чтобы продлить продолжительность вызова.
- Если это распределение успешно, то максимально допустимая продолжительность вызова соответственно увеличивается.
- Это перераспределение повторяется до тех пор, пока либо не закончится баланс, либо не будет достигнуто максимальное время сеанса учетной записи.
- Когда следующее перераспределение не удается, f; больше не продлевает максимальную продолжительность вызова, и вызов отключается по тайм-ауту сеанса , когда он достигает максимальной продолжительности вызова, которая была установлена ранее.
Возможны два алгоритма распределения времени сеанса.
- Только средняя продолжительность вызова ( ACD ) — каждое новое распределение пытается получить ровно еще один ACD. Этот алгоритм дает сбой, если ACD составляет 5 секунд или меньше.
- Инкрементальный - флайсип сначала пытается получить 10 секунд и вдвое больше, чем предыдущая попытка, пока не достигнет либо 200 секунд, либо ACD, в зависимости от того, что больше. Дальнейшее распределение до Session Timeout осуществляется в соответствии с таблицами ниже
Новая попытка выделения выполняется за 5 секунд до истечения времени ожидания сеанса для вызова.
Пример
Предположим, что:
- Интервал 1 = 10 секунд
- Интервал N = 15 секунд
- Цена 1 = 6 долларов США в минуту.
- Цена N = $4/минута
Алгоритм ACD, ACD = 140 секунд
График | Попробуйте выделить |
Фактически выделенный период |
Время ожидания сеанса | Заблокированный баланс |
---|---|---|---|---|
Connect+ 0 секунд | 140 секунд | 145 секунд | 145 секунд | 1 доллар + 9 долларов = 10 долларов |
Connect+ 140 секунд | 140 секунд | 150 секунд | 295 секунд | 10 долларов + 10 долларов = 20 долларов |
Connect+ 290 секунд | 140 секунд | 150 секунд | 445 секунд | 20 долларов + 10 долларов = 30 долларов |
Инкрементальный алгоритм для случая, когда ACD >200 (ACD = 230)
График | Попробуйте выделить | Фактически выделенный период | Время ожидания сеанса | Заблокированный баланс |
---|---|---|---|---|
Connect+ 0 секунд | 10 секунд | 10 секунд | 10 секунд | 1 доллар |
Connect+ 5 секунд | 20 секунд | 30 секунд | 40 секунд | $1+$2=$3 |
Connect+ 35 секунд | 40 секунд | 45 секунд | 85 секунд | $3+$3=$6 |
Connect+ 80 секунд | 80 секунд | 90 секунд | 175 секунд | 6 долларов + 6 долларов = 12 долларов |
Connect+ 170 секунд | 160 секунд | 165 секунд | 340 секунд | 12 долларов + 11 долларов = 23 доллара |
Connect+ 335 секунд | 230 секунд | 240 секунд | 580 секунд | 23 доллара + 16 долларов = 39 долларов |
Connect+ 575 секунд | 230 секунд | 240 секунд | 820 секунд | 39 долларов + 16 долларов = 55 долларов |
Connect+ 815 секунд | 230 секунд | 240 секунд | 1060 секунд | 55 долларов + 16 долларов = 71 доллар |
Этот алгоритм доступен только в новой версии strackerd, которую можно включить, установив для параметра system/strackerd/binary значение pkg в таблице system_config. Эта опция недоступна через XML-RPC API и может быть настроена только вручную.
Алгоритм распределения времени можно выбрать с помощью параметра system/strackerd/next_duration_algorithm в таблице system_config. Доступные значения: «ACD» (по умолчанию) и «инкрементный». Эта опция недоступна через XML-RPC API и может быть настроена только вручную.