Описание настроек тарифного плана CGRates
Тарифные Планы
Для импорта из базы данных 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:
Триггеры действий, связанных с этой очередью