Описание возможностей
В Carbon Billing 5 по оператору связи возможно тарифицировать несколько видов взаиморасчетов:
- Входящий трафик
- Исходящий трафик
- Транзитный трафик
- Факт совершения вызова по всем типам трафика(завершения и инициирования вызова)
Настройка услуг операторов
Оператор связи для обсчета звонка выбирается по транкам.
Если транк у звонка задан, но оператор не найден - звонок считается ошибочным.
Если транк в звонке не задан, это вызовет некритичную ошибку операторских взаиморасчетов.
Чтобы начать обсчет звонков на оператора связи, нужно:
- Создать операторов в папке "Операторы связи"

- Создать услуги необходимых типов
- Загрузить в них цены на направления
- Подключить операторам
| Если требуется разделить в акте направления звонков по нескольким услугам (например, междугородний или международный трафик) , это можно сделать по статье "Местная связь, Внутризоновая связь, Междугородняя и международная (дальняя) связь" |
Начисления по агентской схеме, расчет завершения вызова и расчет инициирования вызова
Исходящие вызовы абонентов прошедшие с Вашей номерной ёмкости на транк другого оператора учитываются как исходящие по агентской схеме, а так же для расчета инициирования вызова
Входящие вызовы абонентов прошедшие на Вашу номерную ёмкость с транка другого оператора учитываются как входящие по агентской схеме, а так же для расчета завершения вызова
| Услугу с типом "Входящий" необходимо создать и заполнить в ней встречающиеся в CDR направления даже если вы не тарифицируете завершение вызова |
- Создайте услуги IP телефонии по инструкции "Услуги. IP Телефония", необходимо создать две услуги: с типом трафика "Исходящий"и "Входящий" (статья "Тип трафика")
- Исходящий: необходима для расчетов по агентской схеме и расчета инициирования вызова
- Входящий: необходима для расчета завершения вызова
- Загрузите в них цены на направления
- Подключить эти услуги оператору, указав маску транка или несколько масок через запятую.
Имя транка может содержать любой текст, но если в нем задано 2 целых числа через дефис, то при поиске транк будет проверяться на вхождение в этот промежуток.
Транк может содержать и произвольные символы, не только числа.

Пример:100-200,301,#01
В диапазон будут попадать транки с 100 по 200 (включительно), 301 и #01

Вы так же можете указать маску транка, используя регулярное выражение из двух знаков (точка и звездочка). Например: RTK-.*
Для данной маски транка подойдут все значения, начинающиеся с RTK-

Если в качестве транка написать слово default, то это будет оператор по умолчанию для всех остальных транков не отнесенных к кому-либо из операторов. 
В звонке обязательно должны быть заполнены поля SRC_CHAN и DST_CHAN. При пустых полях звонок не будет посчитан у оператора связи. - Ваши услуги телефонии

- Услуги телефонии партнера

- Ваши услуги телефонии
Транзитный трафик
Транзитным считается трафик прошедший через Вашу сеть, но не относящийся к Вашей номерной ёмкости. Прохождение через Вашу сеть определяется по транкам, которые должны быть настроены в услугах телефонии у операторов-партнёров (от кого и кому идет транзитный звонок). Вызовы пришедшие на транки Ваших партнёров, отразятся у них в расходе.
Настройте оборудование
По статье Настройка VOIP NAS в настройках NAS включите опцию "Через АТС проходят транзитные звонки"
Настройте услуги
- Для тарификации транзитного трафика абонентов необходимо создать услугу телефонии с типом "Транзит".

- Загрузить в операторскую услугу цены на направления.
Подключите их операторам
- Подключите услугу оператору связи. Заполните поле "Маска trunk", значение соответствует маске оператора из CDR.
Пример cdr:71110000001;72220000002;2018-02-12 10:00:00;2018-02-12 10:04:08;248;248;subscribers;Operator1

- Затем нажмите кнопку "Сохранить"
- Также сделайте для второго оператора указав второй транк.
| Важно: биллинг работает только с диапазонами чисел. Если маска указана в формате символ+число, транк будет отображаться некорректно. |
Алгоритм расчёта звонка
Звонок рассчитывается по следующему алгоритму:
- Поиск оператора связи
Звонок считается одновременно у двух оператор связи. Звонок приходит от источника - "Оператора стороны A" к назначению "Оператору стороны B". Поиск оператора происходит с помощью сопоставления маски транка с полями SRC_CHAN и DST_CHAN соответственно.
Маска транка может соответствовать только одному оператору. Хотя маска транка указывается в услуге телефонии, при поиске оператора связи будут учтены маски транка из всех услуг оператора, независимо от направления звонка. Например, вы указали маску транка TestTrunk во входящей услуги трафика, а в исходящей оставили маску транка пустой. Теперь звонки всех направлений с маской транка TestTrunk будут учтены по этому оператору. - Поиск услуги телефонии внутри оператора связи
Услуга телефонии так же будет найдена по маске транка, только внутри оператора связи. На этом этапе будет учтено направление звонка. - Далее звонок будет рассчитан по алгоритму из статьи по услугам с одинаковой маской транка и направлением.
Отладка
Как понять, что звонок был посчитан по агентской схеме?
Необходимо проверить поля в таблице VOIP_LOG по конкретному звонку.
При агенстской схеме звонок одновременно считается у двух операторов связи. В таблице VOIP_LOG задействованы поля:
- SRC_OPERATOR_ - сторона источника - Оператор стороны A
- OPERATOR_ - сторона назначения - Оператор стороны B
Исходящие вызовы и инициирование вызова
В таблице VOIP_LOG будут заполнены поля тарификации:
- Оператор стороны A
- SRC_OPERATOR_ID: ID вашего оператора
- SRC_OPERATOR_USLUGA_ID: ID услуги исходящей связи вашего оператора
- SRC_OPERATOR_STEP_PRICE: стоимость шага тарификации услуги в вашем операторе
- Оператор стороны B
- OPERATOR_ID: ID оператора-партнёра
- OPERATOR_USLUGA_ID: ID услуги исходящей связи оператора-партёра
- OPERATOR_STEP_PRICE: стоимость шага тарификации услуги оператора-партнёра
- V_TYPE_ID: 2 - ID типа направления - Исодящий
В логе проводок ARCH_ACCOUNT_STACK должны быть две записи с ARCH_ACCOUNT_STACK.LOG_ID=VOIP_LOG.ID
- По оператору-партнёру
- По вашему оператору
Входящие звонки и завершение вызова
В таблице VOIP_LOG будут заполнены поля тарификации:
- Оператор стороны A
- SRC_OPERATOR_ID: ID оператора-партнёра
- SRC_OPERATOR_USLUGA_ID: ID услуги исходящей связи оператора-партнёра
- SRC_OPERATOR_STEP_PRICE: стоимость шага тарификации услуги в операторе-партнёре
- Оператор стороны B
- OPERATOR_ID: ID вашего оператора
- OPERATOR_USLUGA_ID: ID услуги исходящей связи вашего оператора
- OPERATOR_STEP_PRICE: стоимость шага тарификации услуги вашего оператора
- V_TYPE_ID: 2 - ID типа направления - Входящий
В логе проводок ARCH_ACCOUNT_STACK должны быть записи с ARCH_ACCOUNT_STACK.LOG_ID=VOIP_LOG.ID
- По вашему оператору
- По оператору-партнёру
Транзит
В таблице VOIP_LOG должны быть заполнены поля тарификации оператора:
- Оператор стороны A
- SRC_OPERATOR_ID: ID оператора, из сети которого пришел вызов
- SRC_OPERATOR_USLUGA_ID: ID услуги оператора, из сети которого пришел вызов
- SRC_OPERATOR_STEP_PRICE: стоимость шага тарификации услуги оператора, из сети которого пришел вызов
- Оператор стороны B
- OPERATOR_ID: ID оператора, в сеть которого ушел вызов
- OPERATOR_USLUGA_ID: ID услуги оператора, в сеть которого ушел вызов
- OPERATOR_STEP_PRICE: стоимость шага тарификации услуги оператора, в сеть которого ушел вызов
- V_TYPE_ID: 3 - ID типа направления - Транзит
В логе проводок ARCH_ACCOUNT_STACK должны быть две записи с ARCH_ACCOUNT_STACK.LOG_ID=VOIP_LOG.ID
- По оператору из сети которого пришел вызов
- По оператору в чью сеть ушел вызов
Особенности проводок
Если вы тарифицируете и минуты и факт завершения звонка, то по одному звонку будет четыре проводки. По две у каждого оператора связи. Типы проводок:
- Стоимость вызова
- Инициирование вызова
