Как система учитывает и тарифицирует вызовы в IP-телефонии

LANBilling получает информацию о звонках, определяет, какие именно абоненты и операторы участвовали в том или ином вызове, какой у них назначен тариф, к какой категории относится вызов. Согласно настройкам тарифа и категории биллинг рассчитывает стоимость звонка. Статистика звонков сохраняется в системе.

За тарификацию и управление доступом к услугам IP-телефонии отвечает агент VoIP. Он отвечает за взаимодействие с голосовыми шлюзами, аутентификацию, авторизацию и аккаунтинг по протоколу RADIUS.

Режимы работы: предоплата и постоплата

Агент VoIP может работать в одном из двух режимов.

  • Предоплата (карточные платформы) — в самом начале звонка агент VoIP определяет, какая длительность звонка доступна абоненту. Поддерживаются карточные платформы на базе оборудования Cisco Systems 53хх или ПО программной коммутации голосовых потоков Mera Networks Soft Switch, Alterteks PSS (Prepaid схема оплаты), Asterisk.

  • Постоплата — в этом режиме агент не ограничивает длительность звонка.

Режим зависит от оборудования и от настроек тарифа, назначенного в абонентской учётной записи.

Предоплата (карточные платформы)

Рассмотрим на примере оборудования Cisco Systems, как агент VoIP взаимодействует с коммутирующей системой в режиме обслуживания карточной платформы.

  1. Взаимодействие зависит от алгоритмов, описанных в tcl-скриптах. Скрипты управляют взаимодействием с VoIP-агентом со стороны шлюза. Оригинальный tcl-скрипт для карточной платформы поставляется в составе модуля VoIP.

  2. Шлюз отправляет запрос IVR (Interactive Voice Response).

  3. Абонент вводит серийный номер и код карты, приобретённой у оператора.

  4. Шлюз передаёт серийный номер и код карты агенту VoIP.

  5. Агент VoIP определяет, есть ли в системе учётная запись с таким серийным номером и кодом карты. Далее передает шлюзу ответ: найдены ли в БД данные, введенные абонентом или нет.

    • Учётной записи нет:
      • нет подходящей карты оплаты — отказ в обслуживании.
      • есть сформированная и не активированная системой карта оплаты за услуги — система создаёт учетную запись. Дальнейшая работа идёт с новой учётной записью. Баланс соответствует номиналу активированной карты.
    • Учётная запись есть — положительный ответ на запрос об аутентификации шлюза на первом этапе (AUTH-ACCEPT).
  6. Абонент вводит телефонный номер, на который нужно коммутировать звонок.

  7. Шлюз отправляет запрос на авторизацию — запрашивает у VoIP разрешение на звонок. В теле запроса передается номер, который ввёл абонент.

  8. По этому номеру агент VoIP определяет направление, в которое нужно коммутировать соединение. По категории тарифа определяет стоимость за минуту звонка в эту зону.

  9. Агент VoIP проверяет баланс абонента и вычисляет максимально возможную длительность звонка. Отправляет это значение в ответе шлюзу.

    Если таймаут получается меньше, чем количество бесплатных секунд в тарифе, происходит отказ в обслуживании из-за недостатка средств.

  10. Шлюз устанавливает таймаут на соединение и переключает звонок на номер, который ввёл абонент.

  11. Звонок прерывается:

    • если таймаут истекает — шлюз разрывает соединение.
    • абонент заканчивает звонок.
  12. С абонента списывается стоимость звонка. Агент VoIP может списывать средства, не дожидаясь окончания сеанса связи, а ориентируясь по данным, поступающим от шлюза в промежуточных пакетах (Interim Accounting Updates). Это гарантирует адекватное списание средств с баланса учетной записи, даже если завершающий RADIUS-пакет утерян.

Постоплата

  1. Шлюз отправляет запрос IVR (Interactive Voice Response).

  2. Агент VoIP определяет, есть ли в системе подходящий абонент. Либо по номеру, либо по логину учётной записи — в зависимости от настроек агента. Далее передаёт шлюзу ответ: найдены ли в БД данные.

    • Учётной записи нет — отказ в обслуживании.
    • Учётная запись есть — положительный ответ на запрос об аутентификации шлюза на первом этапе (AUTH-ACCEPT).
  3. Агент VoIP устанавливает неограниченный таймаут на звонок — вне зависимости от направления и категории.

  4. Абонент прерывает звонок.

  5. Агент VoIP рассчитывает стоимость звонка и списывает его с договора абонента.

В итоге у абонента может появиться задолженность перед оператором. Задолженность нужно погасить в конце расчетного периода. Как правило, расчётный период — один календарный месяц.

Определение операторов и тарификация вызова для них

Для каждого вызова определяются не только абоненты, но и операторы. Например, звонок может быть определён: - как входящий — для абонента Алексеева и оператора «Местный» - как исходящий — для оператора «Вышестоящий».

При этом с каждой стороны может быть только один абонент и один оператор.

Действия системы зависят от того, какой способ определения оператора выбран в параметре «Определять оператора» в настройках агента VoIP:

  • По признаку оператора. Признак — это транк либо номер телефона, присвоенный оператору.

  • По каталогу телефонных номеров. Система сначала определит номера участников вызова, найдёт тарифы в их учётных записях, а по категориям тарифа определит операторов.

Рассмотрим на примере. Получены сведения о вызове:

  • номер А — 555 (с какого номера поступил звонок);
  • номер Б — 777 (на какой номер поступил звонок);
  • исходящий транк — 1;
  • входящий транк — 2;
  • длительность — 5 минут.
  1. LANBilling ищет учётные записи операторов по номерам входящего и исходящего транков.

    • Для исходящего транка (1) найдена учётная запись с логином operator_m.
    • Для входящего транка (2) найдена учётная запись с логином operator_v.
  2. Биллинг определяет для операторских учётных записей тарифы, договоры и карточки пользователей.

    • operator_m:

      • тариф — «Межоператорский_М»;
      • договор — Contract_1;
      • договор находится в карточке оператора «Местный».
    • operator_v:

      • тариф — «Межоператорский_В»;
      • договор — Contract_2;
      • договор находится в карточке оператора «Вышестоящий».
  3. В операторских тарифах биллинг ищет маски направлений, к которым можно отнести номера 777 и 555. Затем определяет, к каким категориям относятся эти направления.

    • Для 777 — в исходящих направлениях тарифа «Межоператорский_М», потому что совершён исходящий звонок на этот номер.

      Найдено направление 77* — категория «Междугородние исходящие». В категории задана стоимость звонка — 1,5 руб/мин.

    • Для 555 — во входящих направлениях тарифа «Межоператорский_В», потому что звонок совершён с этого номера.

      Найдено направление 55* — категория «Междугородние входящие». В категории задана стоимость звонка — 0,5 руб/мин.

    Если не удастся определить направление и категорию, система отнесёт вызов к категории Default.

  4. Длительность звонка умножается на стоимость за минуту звонка из настроек категории.

    • 5 × 1,5 = 7,5 руб. Эта сумма списывается с договора Contract_1 (договор оператора «Местный»).
    • 5 × 0,5 = 2,5 руб. Эта сумма списывается с договора Contract_2 (договор оператора «Вышестоящий»).

Подробные данные обо всех вызовах и списаниях можно посмотреть в статистическом отчёте.

Рассмотрим на примере. Получены сведения о вызове:

  • номер А — 555 (с какого номера поступил звонок);
  • номер Б — 777 (на какой номер поступил звонок);
  • длительность — 5 минут.
  1. LANBilling ищет учётные записи абонентов по номерам А и Б.

    • Для номера А (555) найдена учётная запись с логином alexeev.
    • Для номера Б (777) не найдена учётная запись.
  2. Биллинг определяет для учётной записи alexeev:

    • тариф — «Абонентский»;
    • договор — Contract_10;
    • договор находится в карточке абонента Алексеева.
  3. В тарифе «Абонентский» биллинг ищет маски направлений, к которым можно отнести номера 777 и 555. Это нужно, чтобы:

    • найти категории и протарифицировать вызов для абонента;
    • найти операторов, которым принадлежат эти направления.

    Маски направлений должны как можно точнее совпадать с номерами. Например, в тарифе есть два направления: 7* и 77* — номер 777 будет отнесён к направлению 77*.

    • Для 777 поиск идёт в исходящих направлениях, потому что совершён исходящий звонок на этот номер. Найдено направление 77*.

      • Направление 77* относится к категории «Междугородние». В категории задана стоимость звонка — 3 руб/мин. Длительность звонка умножается на стоимость за минуту звонка из настроек категории: 5 × 3 = 15 руб. Эта сумма списывается с договора Contract_10.
      • Направление 77* входит в каталог оператора «Вышестоящий».
    • Для 555 найдено направление 55*, оно входит в каталог оператора «Местный».

  4. Определив, каким операторам принадлежат направления, биллинг ищет их договоры и учётные записи.

    • Для оператора «Вышестоящий»:

      • договор — Contract_2;
      • учётная запись с логином operator_v;
      • тариф в учётной записи — «Межоператорский_В».
    • Для оператора «Местный»:

      • договор — Contract_1;
      • учётная запись с логином operator_m;
      • тариф в учётной записи — «Межоператорский_М».
  5. В операторских тарифах биллинг ищет маски направлений, к которым можно отнести номера 777 и 555. Затем определяет, к каким категориям относятся эти направления.

    • Для 777 — в исходящих направлениях тарифа «Межоператорский_М», потому что совершён исходящий звонок на этот номер.

      Найдено направление 77* — категория «Междугородние исходящие». В категории задана стоимость звонка — 1,5 руб/мин.

    • Для 555 — во входящих направлениях тарифа «Межоператорский_В», потому что звонок совершён с этого номера.

      Найдено направление 55* — категория «Междугородние входящие». В категории задана стоимость звонка — 0,5 руб/мин.

    Если не удастся определить направление и категорию, система отнесёт вызов к категории Default.

  6. Длительность звонка умножается на стоимость за минуту звонка из настроек категории.

    • 5 × 1,5 = 7,5 руб. Эта сумма списывается с договора Contract_1 (договор оператора «Местный»).
    • 5 × 0,5 = 2,5 руб. Эта сумма списывается с договора Contract_2 (договор оператора «Вышестоящий»).

Подробные данные обо всех вызовах и списаниях можно посмотреть в статистическом отчёте.

Особенности тарификации при мультитарифах

В учётной записи абонента может быть настроен мультитариф, то есть сочетание сразу нескольких тарифов. В этом случае есть некоторые особенности при учёте и тарификации звонков.

Всего в LANBilling существует два типа списаний.

  • Абонентская плата — ежемесячные или ежедневные списания определённой суммы. Например, 500 руб. в конце каждого месяца. При мультитарифе размер и срок списания абонентской платы зависит только от основного тарифа.

  • Списания за трафик — система собирает данные о количестве, длительности и направлениях вызовов и рассчитывает их стоимость. Расчёт зависит от того, в каком тарифе и в какой его категории находится направление. Стоимость звонка рассчитывается согласно настройкам категории.

Как система определяет направления при мультитарифах

Когда поступает вызов, LANBilling проверяет, кому из абонентов назначены номера, участвующие в звонке. Как только система находит учётную запись абонента, она определяет указанный в ней тариф. В нём проверяет категории и ищет в них направления.

Если в учётной записи настроен мультитариф, то LANBilling проверяет направления и в основном тарифе, и в дополнительных. Если направление не найдено ни в одном из них, вызов относится к категории Default в основном тарифе.

Одно направление может быть добавлено к нескольким дополнительным тарифам. В этом случае система отнесёт звонок к направлению, которое добавлено в тариф с наименьшим tar_id.

Настроить приоритет при поиске направлений для IP-телефонии

Для мультитарифов в IP-телефонии можно указать, какой тариф считается более приоритетным при определении направления.

  1. Перейдите в раздел «Настройки» — «Параметры».

    image

  1. В блоке «Общие» задайте приоритет при поиске направлений.

    • Направления основного тарифа — если система обнаружит подходящее направление в основном тарифе, то отнесёт звонок к нему и не будет проверять дополнительные.

    • Наилучшее совпадение среди направлений всех тарифов — LANBilling проверит все тарифы в учётной записи. Звонок будет отнесён к тому тарифу, в котором найдётся наиболее точное значение направления.

      Пример. Абонент Алексеев позвонил на номер +7 494 255-55-55.

      В основном тарифе есть направление «7494 Костромская область», а в дополнительном — «74942 Кострома». Так как направление из дополнительного тарифа содержит более точное значение, система отнесёт звонок именно к нему.

    image