Интерактивный биллинг - подсистема биллинга Smartswitch, выполняющая обновление и контроль баланса в режиме реального времени.
В отличие от стандартной схемы обновление балансов, описанной в разделе Балансы, Интерактивный биллинг обновляет балансы во время разговора абонентов, а не по завершению вызова.
В системе постоянно запущен отдельный процесс-демон.
Этот процесс периодически проходит по всем активным каналам и вычисляет стоимость вызова на текущий момент.
Вычислив стоимость, процесс обновляет соответствующие балансы.
Также обновляется Отчет по кодам.
После обновления балансов процесс проверяет, не должна ли сработать отсечка по балансу для изменившегося баланса.
Если процесс определяет, что должна сработать отсечка, то он дает команду Телефонии для отбоя этого вызова.
После отбоя вызова система биллинга определяет, что вызов был отбит через процедуру интерактивного биллинга и не проводит полное обновление балансов, потому что они уже обновлены в процессе работы демона.
Обновляется в балансе только та часть вызова, которая была между предыдущим обновлением вызова и его завершением.
Весь остальной биллинг, включая сохранение CDR, происходит как обычно.
Такой режим работы очень нужен для биллинга клиентов, которым разрешена оригинация более 1 вызова одновременно и для которых требуется режим предоплаты, то есть выведения баланса в 0.
Использование стандартного режима отсечки по балансу не подходит для этого случая.
Предположим, пришел первый вызова от клиента с положительным балансом.
В стандартном режиме выполняется вычисление стоимости минуты для набранного номера.
Потом на основании текущего баланса вычисляется и устанавливается ограничение на сессию в секундах.
Предположим, что после этого момента, но до завершения первого вызова, придет второй вызов от этого же клиента.
Система биллинга опять вычислит ограничение на сессию в секундах для второго вызова.
Но первый звонок, который все еще активен сейчас, не учитывается! Ведь он еще не завершился и не обновил балансы!
И после завершения обоих вызовов баланс клиента станет отрицательным.
Эта ситуация была бы невозможна, если бы для клиента стояло ограничение на кол-во одновременных вызовов равное 1.
Возможным вариантом решения этой проблемы является деление баланса на кол-во допустимых одновременных вызовов.
Но в этом случае клиенту будет выделено неправильно кол-во секунд, если он будет генерировать только 1 вызов.
Прекрасно справляется с этой проблемой интерактивный биллинг.
Однако есть и ограничения.
Период проверки для интерактивного биллинг конфигурируем.
При выставлении слишком большого периода, контролер баланса "слишком поздно" обнаружит, что вызовы вышли за пределы положительного баланса.
И балансы уйдут в небольшой минус.
При выставлении слишком маленького периода, контролёр будет потреблять много ресурсов CPU при проверке и обновлении балансов.
Потому для каждого случая установки следует подбирать период индивидуально, опираясь на кол-во одновременных вызовов, обслуживаемых системой и на аппаратные возможности системы.
Оптимальной стратегией является установить период 60 сек и уменьшать его до тех пор, пока не станут заметны проблемы с производительностью.
Интерактивный биллинг тесно сотрудничает с Профили потребления и может использоваться совместно.