Тарифные Планы

Для импорта из базы данных CGRateS используются файлы формата cvs. Процесс импорта может быть запущен столько раз, сколько потребуется, с одним или несколькими файлами CSV, при этом существующие значения переписываются. Если используется параметр -flush, то база данных очищается перед импортом. Подробности смотрите в описании инструмента cgr-loader в главе Tutorial.

В оставшейся части этого раздела описано содержание каждого из CSV-файлов.

4.2.1. Тарифный профиль (Rates profile)

В тарифном профиле записана стоимость, которая должна использоваться для различных вызовов в различные места и в разные периоды времени. При совершении вызова система CGRateS устанавливает местонахождение абонента и определяет стоимость с помощью тарифного профиля.

DirectionTenantCategorySubjectActivationTimeRatingPlanId --RatesFallbackSubject -- RatesFallbackSubject -
*out cgrates.org call *any 2014-01-14T00:00:00Z RP_RETAIL1 - -
*out cgrates.org call 1001 2014-01-14T00:00:00Z RP_RETAIL2 - -
*out cgrates.org call SPECIAL_1002 2014-01-14T00:00:00Z RP_SPECIAL_1002 - -
*out cgrates.org lcr_profile1 suppl1 2014-01-14T00:00:00Z RP_RETAIL1 STATS_SUPPL1 -
*out cgrates.org lcr_profile1 suppl2 2014-01-14T00:00:00Z RP_RETAIL2 STATS_SUPPL2 -
*out cgrates.org lcr_profile2 suppl1 2014-01-14T00:00:00Z RP_RETAIL2 STATS_SUPPL1 -
*out cgrates.org lcr_profile2 suppl2 2014-01-14T00:00:00Z RP_RETAIL1 STATS_SUPPL2 -
*out cgrates.org lcr_profile2 suppl3 2014-01-14T00:00:00Z RP_SPECIAL_1002 - -
Direction:
Может быть *in или *out для входящих и исходящих звонков.
Tenant:
Используется в качестве различительного признака между каналами связи, если их несколько на одну базу данных системы CGRates.
Category:
Тип записи, который определяет способ передачи, используемый для этого профиля тарификации.
Subject:
Клиент или пользователь, тарифы для которого записаны в данном профиле.
ActivationTime:
Для одного профиля можно создать несколько временных графиков (TIMINGS) или тарифов с разным временем активации. При совершении звонка для его тарификации будет использован соответствующий профиль. Следовательно, в нём можно указать будущие цены и установить подходящее время активации.
RatingPlanId:
Определяет профиль, который будет использоваться для установки направления вызова.
RatesFallbackSubject:
Определяет ещё один профиль, который будет применён, если цель вызова не обнаружится в текущем профиле. В нём будут использоваться те же самые tenant, tor и direction.
CdrStatQueueIds:
Статистическая очередь (Stat Queue), связанная с этой учетной записью

4.2.2. План тарификации (Rating Plans)

Этот файл связывает между собой тарифы (RATINGS) и расписания (TIMINGS), после чего их достаточно прописать только один раз, к тому же появляется возможность составления различных комбинаций.

IdDestinationRatesIdTimingTagWeight
RP_RETAIL1 DR_FS_40CNT PEAK 10
RP_RETAIL1 DR_FS_10CNT OFFPEAK_MORNING 10
RP_RETAIL1 DR_FS_10CNT OFFPEAK_EVENING 10
RP_RETAIL1 DR_FS_10CNT OFFPEAK_WEEKEND 10
RP_RETAIL1 DR_1007_MAXCOST_DISC ALWAYS 10
RP_RETAIL2 DR_1002_20CNT PEAK 10
RP_RETAIL2 DR_1003_20CNT PEAK 10
RP_RETAIL2 DR_FS_40CNT PEAK 10
RP_RETAIL2 DR_1002_10CNT OFFPEAK_MORNING 10
RP_RETAIL2 DR_1002_10CNT OFFPEAK_EVENING 10
RP_RETAIL2 DR_1002_10CNT OFFPEAK_WEEKEND 10
RP_RETAIL2 DR_1003_10CNT OFFPEAK_MORNING 10
RP_RETAIL2 DR_1003_10CNT OFFPEAK_EVENING 10
RP_RETAIL2 DR_1003_10CNT OFFPEAK_WEEKEND 10
RP_RETAIL2 DR_FS_10CNT OFFPEAK_MORNING 10
RP_RETAIL2 DR_FS_10CNT OFFPEAK_EVENING 10
RP_RETAIL2 DR_FS_10CNT OFFPEAK_WEEKEND 10
RP_RETAIL2 DR_1007_MAXCOST_FREE ALWAYS 10
RP_SPECIAL_1002 DR_SPECIAL_1002 ALWAYS 10
Tag:
Строка, по которой на график (TIMING) данного тарифа можно сослаться из других мест.
DestinationRatesTag:
Тег стоимости (RATING), записанный в файле тарификации.
TimingTag:
Тег тайминга (TIMING), записанный в файле расписания (TIMING FILE).
Weight:
Если для звонка используется несколько графиков (TIMINGS), приоритет получает тот, у которого меньше вес. Для примера возьмём Рождество: для этого праздника может быть установлен специальный график (TIMING), однако обычное расписание, действующее в этот день недели, также будет действовать. Различие между двумя графиками (TIMINGS) в их весе.

4.2.3. Тарифы (Rates)

Определяют ценовые группы для различных направлений, которые затем привязываются к различным временным графикам (TIMINGS).

Id- ConnectFee -- Rate -- RateUnit -- RateIncrement -- GroupIntervalStart
RT_10CNT 0.2 0.1 60s 60s 0s
RT_10CNT 0 0.05 60s 1s 60s
RT_20CNT 0.4 0.2 60s 60s 0s
RT_20CNT 0 0.1 60s 1s 60s
RT_40CNT 0.8 0.4 60s 30s 0s
RT_40CNT 0 0.2 60s 10s 60s
RT_1CNT 0 0.01 60s 60s 0s
Tag:
Строка, по которой на данный тариф можно сослаться из других мест.
ConnectFee:
Цена взимается один раз в начале вызова на указанное направление.
Rate:
Стоимость единицы тарификации, выраженная в центах.
RateUnit:
Единица тарификации, выраженная в секундах.
RateIncrement:
Временной интервал для данного тарифа
GroupIntervalStart:
Начало интервала тарификации

Параметры Rateincrement и GroupIntervalStart нужны, когда вызовы обслуживаются по разным тарифам в зависимости от времени разговора. Например, первые 30 секунд вызова оплачиваются по цене €0,1, а после этого по €0.2. В тарифе для этого случая будет использоваться один TAG с двумя RateIncrements

4.2.4. Временные графики (TIMINGS)

Описывают периоды времени, к которым привязаны различные тарифы,

TagYearsMonthsMonthDaysWeekDaysTime
ALWAYS *any *any *any *any 00:00:00
ASAP *any *any *any *any *asap
PEAK *any *any *any 1;2;3;4;5 08:00:00
OFFPEAK_MORNING *any *any *any 1;2;3;4;5 00:00:00
OFFPEAK_EVENING *any *any *any 1;2;3;4;5 19:00:00
OFFPEAK_WEEKEND *any *any *any 6;7 00:00:00
Tag:
Строка, по которой на временной график (TIMING) данного тарифа можно сослаться из других мест.
Years:
Целые числа или значение *any для работы в любое время
Months:
Целые числа от 1=января до 12=декабря, разделённые точкой с запятой (;) и указывающие месяц для нужного периода.
MonthDays:
Целые числа от 1 до 31, разделённые точкой с запятой (;) и указывающие дни в месяце нужного периода.
WeekDays:
Целые числа от 1=понедельника до 7=воскресенья, разделённые точкой с запятой (;) и указывающие дни недели нужного периода.
Time:
Время начала заданного периода. *будет заменено на время импорта данных.

4.2.5. Назначения (Destinations)

Назначения связывают воедино различные префиксы / ID вызывающих абонентов для определения логических целевых групп. Один префикс может появляться в нескольких целевых группах.

IdPrefix
DST_1002 1002
DST_1003 1003
DST_1007 1007
DST_FS 10
Tag:
Строка, по которой на данное назначение можно сослаться из других мест.
Prefix:
К указанному назначению должен быть добавлен префикс или идентификатор вызывающего абонента.

4.2.6. Действия со счётом (Account actions)

Описывает действия, использующиеся для счетов клиентов/пользователей. Существует два вида действий: запланированные и инициированные. Для запланированных действий предусмотрено приложение "Планировщик" (scheduler ), которое берёт информацию о действиях из базы данных и выполняет их в указанное время. Инициированные действия выполняются, когда специально настроенные счётчики достигают определённых пороговых значений.

В учётной записи содержатся различные счетчики, запускающие инициированные действия для каждого клиента.

Существуют следующие типы балансов: MONETARY, SMS, INTERNET, INTERNET_TIME, MINUTES.

TenantAccountActionPlanIdActionTriggersIdAllowNegativeDisabled
cgrates.org 1001 PACKAGE_1001 STANDARD_TRIGGERS - -
cgrates.org 1002 PACKAGE_10 STANDARD_TRIGGERS - -
cgrates.org 1003 PACKAGE_10 STANDARD_TRIGGERS - -
cgrates.org 1004 PACKAGE_10 STANDARD_TRIGGERS - -
cgrates.org 1007 USE_SHARED_A STANDARD_TRIGGERS - -
Tenant:
Используется в качестве различительного признака между каналами связи, если их несколько на одну базу данных системы CGRates.
Account:
Идентификатор учетной записи пользователя.
Direction:
Может быть *in или *out для входящих и исходящих звонков.
ActionPlanTag:
Направляет к группе запланированных действий, которые будут использоваться на этом счёте.
ActionTriggersTag:
Направляет к группе инициированных действий, которые будут применены к этому счёту.

4.2.7 Активаторы действий (Action triggers)

Для каждого аккаунта предусмотрены счётные устройства, фиксирующие активность на различных счетах. Триггеры действий активируют группы действий, когда счётчик достигает пороговых значений. После выполнения триггер помечается как использованный и больше не учитываются до тех пор, пока не будет осуществлён сброс триггеров. Подробности в описании процесса сброса триггеров.

.. csv-table::
    :file: ../data/tariffplans/tutorial/ActionTriggers.csv
    :header-rows: 1
Tag:
Строка, по которой на данный триггер действия можно сослаться из других мест.
UniqueID:
Уникальный идентификатор триггера, находящегося среди нескольких ActionTriggers
ThresholdType:

Тип порогового значения. Может быть одним из следующих:

  • *min_counter: Срабатывает, если значение на счётчике меньше ThresholdValue

  • *max_counter: Срабатывает, если значение на счётчике больше, чем ThresholdValue

  • *min_balance: Срабатывает, если баланс меньше, чем ThresholdValue

  • *max_balance: Срабатывает, если баланс больше, чем ThresholdValue

  • *min_asr: Срабатывает, если ASR (средний коэффициент успешности) меньше, чем ThresholdValue

  • *max_asr: Срабатывает, если ASR больше, чем ThresholdValue

  • *min_acd: Срабатывает, если ACD (средняя продолжительность вызова) меньше, чем ThresholdValue

  • *max_acd: Срабатывает, если ACD больше, чем ThresholdValue

  • *min_acc: Срабатывает, если ACC (средняя стоимость звонка) меньше, чем ThresholdValue

  • *max_acc: Срабатывает, если ACC больше, чем ThresholdValue

  • *min_tcc: Срабатывает, если TCC (общая стоимость звонка) меньше, чем ThresholdValue

  • *max_tcc: Срабатывает, если TCC больше, чем ThresholdValue

  • *min_tcd: Срабатывает, если TCD (общая продолжительность вызова) меньше, чем ThresholdValue

  • *max_tcd: Срабатывает, если TCD больше, чем ThresholdValue

  • *min_pdd: Срабатывает, если PDD (пауза после набора номера) меньше, чем ThresholdValue

  • *max_pdd: Срабатывает, если PDD больше, чем ThresholdValue
ThresholdValue:
Значение на счётчике, при котором запускается действие.
Recurrent(Boolean):
Можно активировать периодическое срабатывание триггера, если он запущен впервые.
MinSleep:
Здесь можно установить продолжительность паузы при достижении порогового значения.
BalanceTag:

Задаёт значение счётчика баланса, при котором запускается действие. Может быть:

  • MONETARY
  • SMS
  • INTERNET
  • INTERNET_TIME
  • MINUTES
BalanceType:

Указывает тип баланса для действия:

  • *voice: единицы разговора (минуты)
  • *sms: единицы SMS
  • *data: единицы данных
  • *monetary: денежные единицы
BalanceDirection:
Может быть *in или *out для входящих и исходящих звонков.
BalanceCategory:
Категория вызова/триггера
BalanceDestinationTag:
Назначение вызова/триггера

BalanceRatingSubject:

BalanceSharedGroup:
Разделённая группа для вызова/триггера

BalanceExpiryTime:

BalanceTimingTags:

BalanceWeight:

StatsMinQueuedItems:
Минимальное количество элементов в очереди, необходимое для срабатывания триггера
ActionsTag:
Определяет группу действий, которая будет выполнена при достижении порогового значения.
Weight:
Указывает порядок, в котором должны оцениваться данные триггеры. Если одновременно срабатывает несколько триггеров, первыми будут выполнены те, у которых меньше вес.
DestinationTag:
Это поле используется, только если значением поля balanceTag является MINUTES. Если счётчик баланса отслеживает протяжённость звонков, в этом поле указывается назначение тех вызовов, для которых ведётся учёт времени.

4.2.8. Планы действий (Action Plans)

IdActionsIdTimingId -- Weight
PACKAGE_10 TOPUP_RST_10 *asap 10
PACKAGE_10_SHARED_A_5 TOPUP_RST_5 *asap 10
PACKAGE_10_SHARED_A_5 TOPUP_RST_SHARED_5 *asap 10
USE_SHARED_A SHARED_A_0 *asap 10
PACKAGE_1001 TOPUP_RST_5 *asap 10
PACKAGE_1001 TOPUP_RST_SHARED_5 *asap 10
PACKAGE_1001 TOPUP_120_DST1003 *asap 10
Tag:
Строка, по которой на график (TIMING) данного действия можно сослаться из других мест.
ActionsTag:
Определяет группу действий, которая будет выполнена, если график (TIMING) составлен верно
TimingTag:
График, по которому выполняется группа действий (один раз или периодически)
Weight:
Указывает порядок, в котором должны оцениваться данные графики (TIMINGS). Если одновременно должно быть выполнено несколько графиков действий, первыми будут те, у которых меньше вес.

4.2.9. Действия (Actions)

.. csv-table::
    :file: ../data/tariffplans/tutorial/Actions.csv
    :header-rows: 1
Tag:
Строка, по которой на данное действие можно сослаться из других мест.
Action

Тип действия. Может быть одним из следующих:

  • *allow_negative: Позволяет балансу счёта принимать отрицательные значения
  • *call_url: Отправить http-запрос на следующий URL-адрес
  • *call_url_async: Отправлять асинхронные http-запросы на следующий URL-адрес
  • *cdrlog: Запись текущих действий в storeDB
  • *debit: Остаток на дебетовом счёте.
  • *deny_negative: Запрещает балансу счёта принимать отрицательные значения
  • *disable_account: Отключить счёт для данной платформы
  • *enable_account: Активировать счёт для данной платформы
  • *log: Запись остальных действий (для отладки).
  • *mail_async: Отправлять электронную почту на данное направление
  • *reset_account: Сбросить на 0 все счётчики
  • *reset_counter: Сбросить на 0 данный счётчик для BalanceTag
  • *reset_counters: Сбросить все счётчики для BalanceTag на 0
  • *reset_triggers: сброс всех триггеров для данного счётчика
  • *set_recurrent: (находится в разработке)
  • *topup: Добавить баланс счёта. Если конкретный баланс не определён, необходимо это сделать (например, в минутах для заданного направления).
  • *topup_reset: Добавить баланс счёта Если предыдущий баланс относится к тому же типу, перед добавлением необходимо сбросить его параметры.
  • *unset_recurrent: (находится в разработке)
  • *unlimited: (находится в разработке)
ExtraParameters:
Поле дополнительных параметров, в котором можно определить аргумент для действия. В случае call_url дополнительным параметром будет действие с URL-адресом. В случае mail_async — электронная почта, которую вы хотели бы получить.
BalanceTag:
Баланс, при котором будет работать это действие
Units
Единицы, которые будут использоваться на балансе BalanceTag.
BalanceType:

Указывает тип баланса для этого действия:

  • *voice: единицы разговора (минуты)
  • *sms: единицы SMS
  • *data: единицы данных
  • *monetary: денежные единицы
BalanceDirection:
Может быть *in или *out для входящих и исходящих звонков.
DestinationTag:
Это поле используется, только если значением поля balanceTag является MINUTES. Указывает назначение для единиц, которые будут использоваться.
RatingSubject:
Субъект тарификации для действия
SharedGroup:
В случае, если для баланса счёта используется какая-либо разделённая группа.

ExpiryTime:

TimingTag:
Тег графика, по которому выполняется действие По умолчанию ALL.
Units:
Количество единиц для уменьшения баланса. Используется только, если BalanceType — голос.

BalanceWeight:

Weight:
If there are multiple actions in a group, they will be executed in the order of their weight (smaller first).

4.2.10. Производные высчеты (Derived Chargers)

Средства за каждый вызов можно снять более одного раза, для этого необходимо использовать следующие опции:

.. csv-table::
    :file: ../data/tariffplans/tutorial/DerivedChargers.csv
    :header-rows: 1

Для производных высчетов существует две разновидности опций: фильтры и действия.

Фильтры: С помощью следующих полей осуществляется фильтрация вызовов, для которых требуется применение дополнительных параметров тарификации.
- Direction - Tenant - Category - Account - Subject
Действия: Если установлены какие-либо параметры фильтра, в системе создаются дополнительные идентификаторы RunId с полями, в которые можно вносить изменения.
  • RunId
  • RunFilter
  • ReqTypeField
  • DirectionField
  • TenantField
  • CategoryField
  • AccountField
  • SubjectField
  • DestinationField
  • SetupTimeField
  • AnswerTimeField
  • UsageField

В данном примере у всех вызовов direction=out, tenant=cgrates.org, category="call" а номер счёта и субъекта равен 1001. В таблице rated_cdrs создаётся новый cdr-файл, с runID derived_run1 и номером субъекта 1002.

Эта функция полезна в случае, если вы хотите тарифицировать звонки 2 раза, например специально для разных тенантов или посредников.

4.2.10. CDR Stats

CDR Stats позволяет в реальном времени собирать в вашей платформе статистические данные для различных целей. Более подробно можно узнать в разделе cdrstats-main

.. csv-table::
    :file: ../data/tariffplans/tutorial/CdrStats.csv
    :header-rows: 1
ID:
Название тега для ID очереди
QueueLength:
Максимальное количество вызовов в очереди
TimeWindow:
Интервал времени для сохранения звонков
Save Interval:
Каждый из интервалов очереди статистических данных будет сохраняться в stordb
Metric:
Тип метрики, смотрите cdrstats-metric

SetupInterval:

TOR:

CdrHost

CdrSource:

ReqType:
Фильтровать по reqtype
Tenant:
Используется в качестве различительного признака между каналами связи, если их несколько на одну базу данных системы CGRates.
Category:
Тип записи, который определяет способ передачи, используемый для этого профиля тарификации.
Account:
Идентификатор учетной записи пользователя.
Subject:
Клиент или пользователь, тарифы для которого записаны в данном профиле.
DestinationPrefix:
Фильтровать только по префиксу назначения. Можно указать несколько префиксов, разделенных точкой с запятой (;)

PDDInterval:

UsageInterval:

Supplier:

DisconnectCause:

MediationRunids:

RatedAccount:
Фильтровать по счёту
RatedSubject:
Фильтровать по рассчитываемому субъекту
CostInterval
Фильтровать по стоимости
ActionTriggers:
Триггеры действий, связанных с этой очередью