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

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

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

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

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

Direction

Tenant

Category

Subject

ActivationTime

RatingPlanId -

-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), после чего их достаточно прописать только один раз, к тому же появляется возможность составления различных комбинаций.

Id

DestinationRatesId

TimingTag

Weight

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)

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

Tag

Years

Months

MonthDays

WeekDays

Time

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 вызывающих абонентов для определения логических целевых групп. Один префикс может появляться в нескольких целевых группах.

Id

Prefix

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.

Tenant

Account

ActionPlanId

ActionTriggersId

AllowNegative

Disabled

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)

Id

ActionsId

TimingId -

- 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:

Триггеры действий, связанных с этой очередью