4.2. Tariff Plans¶

Major concept within CGRateS architecture, implement mechanisms to load rating as well as account data into CGRateS. For importing the data into CGRateS database(s) we are using csv files. The import process can be started as many times it is desired with one ore more csv files and the existing values are overwritten.

Important

If -flushdb option is used when importing data with cgr-loader, then the database is cleaned before importing.

For more details see the cgr-loader tool from the tutorial chapter.

The rest of this section we will describe the content of every csv file.

4.2.1. Destinations¶

The destinations are binding together various prefixes / caller ids to define a logical destination group. A prefix can appear in multiple destination groups.

"Destinations.csv" - csv
"tp_destinations"  - stor_db

#Id Prefix
DST_1002 1002
DST_1001 1001
DST_FS 10
DST_1003 1003
[0] - Id:
Destination Id, a string by which this destination will be referenced in other places by.
[1] - Prefix:
Prefix(es) attached to this destination. The prefix or caller id to be added to the specified destination.

4.2.2. Timings¶

Holds time related definitions. Describes the time periods that have different rates attached to them.

"Timings.csv" - csv
"tp_timings"  - stor_db

[0] - Tag:
String by which this timing will be referenced in other places by.
[1] - Years:

Integers separated by semicolons (;) specifying the years for this time period.

*any in case of always.

[2] - Months:

Integers from 1=January to 12=December separated by semicolons (;) specifying the months for this time period.

*any in case of always (equivalent to 1;2;3;4;5;6;7;8;9;10;11;12).

[3] - MonthDays:

Integers from 1 to 31 separated by semicolons (;) specifying the month days for this time period.

*any in case of always.

[4] - WeekDays:

Integers from 1=Monday to 7=Sunday separated by semicolons (;) specifying the week days for this time period.

*any in case of always.

[5] - Time:

The start time for this time period.

If you set it to *asap (was *now) it will be replaced with the time of the data importing.

4.2.3. Rates¶

Defines price groups for various destinations which will be associated to various timings.

"Rates.csv" - csv
"tp_rates"  - stor_db

#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
RT_1CNT_PER_SEC 0 0.01 1s 1s 0s
[0] - Id:
Rate Id, a string by which this rate will be referenced in other places by.
[1] - ConnectFee:
ConnectFee applied once the call is answered. The price to be charged once at the beginning of the call to the specified destination.
[2] - Rate:
Number of billing units this rate applies to. The price for the billing unit expressed in cents.
[3] - RateUnit:
The billing unit expressed in seconds.
[4] - RateIncrement:
This rate will apply in increments of duration. The time gap for the rate
[5] - GroupIntervalStart:
When the rate starts

Rateincrement and GroupIntervalStart are when the calls has different rates in the timeframe. For example, the first 30 seconds of the calls has a rate of €0.1 and after that €0.2. The rate for this will the same TAG with two RateIncrements

4.2.4. Destination Rates¶

Attach rates to destinations.

"DestinationRates.csv" - csv
"tp_destination_rates" - stor_db

#Id DestinationId RatesTag RoundingMethod RoundingDecimals MaxCost MaxCostStrategy
DR_1001_20CNT DST_1001 RT_20CNT *up 4 0
DR_1002_20CNT DST_1002 RT_20CNT *up 4 0
DR_1003_MAXCOST_DISC DST_1003 RT_1CNT_PER_SEC *up 4 0.12 *disconnect
DR_1001_10CNT DST_1001 RT_10CNT *up 4 0

[0] - Id:
tbd
[1] - DestinationId:
tbd
[2] - RatesTag:
tbd
[3] - RoundingMethod:
tbd
[4] - RoundingDecimals:
tbd
[5] - MaxCost:
tbd
[6] - MaxCostStrategy:
tbd

4.2.5. Rating Plans¶

The rating plan makes the links between Rating Profiles, Timings and Destination Rates so each of them can be described once and various combinations are made possible.

"RatingPlans.csv" - csv
"tp_rating_plans" - stor_db

#Id DestinationRatesId TimingTag Weight
RP_1001 DR_1002_20CNT *any 10
RP_1001 DR_1003_MAXCOST_DISC *any 10
RP_1002 DR_1001_20CNT *any 10
RP_1002_LOW DR_1001_10CNT *any 10
RP_1003 DR_1001_10CNT *any 10
[0] - Id:
A string by which this rating plan will be referenced in other places by.
[1] - DestinationRatesId:
The rating id/tag described in the Destination rates file. (DestinationRates.csv - Id)
[2] - TimingTag:
The timing tag described in the Timings file. (Timings.csv - Tag)
[3] - Weight:
If multiple timings cab be applied to a call the one with the lower weight wins. An example here can be the Christmas day: we can have a special timing for this day but the regular day of the week timing can also be applied to this day. The weight will differentiate between the two timings.

4.2.6. Rating profiles¶

The rating profile describes the prices to be applied for various calls to various destinations in various time frames. When a call is made the CGRateS system will locate the rates to be applied to the call using the rating profiles.

"RatingProfiles.csv" - csv
"tp_rating_profiles" - stor_db

#Direction Tenant Category Subject ActivationTime RatingPlanId RatesFallbackSubject CdrStatQueueIds
*out cgrates.org call 1001 2014-01-14T00:00:00Z RP_1001
*out cgrates.org call 1002 2014-01-14T00:00:00Z RP_1002
*out cgrates.org call 1003 2014-01-14T00:00:00Z RP_1003
[0] - Direction:
Can be *in or *out for the INBOUND and OUTBOUND calls.
[1] - Tenant:
Used to distinguish between carriers if more than one share the same database in the CGRates system.
[2] - Category:
Type of record specifies the kind of transmission this rate profile applies to.
[3] - Subject:
The client/user for who this profile is detailing the rates.
[4] - ActivationTime:
Multiple rates timings/prices can be created for one profile with different activation times. When a call is made the appropriate profile(s) will be used to rate the call. So future prices can be defined here and the activation time can be set as appropriate.
[5] - RatingPlanId:

The rating plan id/tag described in the Rating Plans file. (RatingPlans.csv - Id)

This specifies the profile to be used in case the call destination.

[6] - RatesFallbackSubject:
This specifies another profile to be used in case the call destination will not be found in the current profile. The same tenant, tor and direction will be used.
[7] - CdrStatQueueIds:

The cdr stats id described in the Cdr Stats file. (CdrStats.csv - Id)

Stat Queue associated with this account.

4.2.7. Account actions¶

Describes the actions to be applied to the clients/users accounts. There are two kinds of actions: timed and triggered. For the timed actions there is a scheduler application that reads them from the database and executes them at the appropriate timings. The triggered actions are executed when the specified balance counters reach certain thresholds.

The accounts hold the various balances and counters to activate the triggered actions for each the client.

Balance types are: MONETARY, SMS, INTERNET, INTERNET_TIME, MINUTES.

"AccountActions.csv" - csv
"tp_account_actions" - stor_db

#Tenant Account ActionPlanId ActionTriggersId AllowNegative Disabled
cgrates.org 1001 AP_PACKAGE_10
cgrates.org 1002 AP_PACKAGE_10
cgrates.org 1003 AP_PACKAGE_10
[0] - Tenant:
Used to distinguish between carriers if more than one share the same database in the CGRates system.
[1] - Account:
The identifier for the user’s account.
[2] - Direction:
Can be *in or *out for the INBOUND and OUTBOUND calls.
[3] - ActionPlanId:

The action plan id/tag described in the Action plans file. (ActionPlans.csv - Id)

Forwards to a timed action group that will be used on this account.

[4] - ActionTriggersId:

The action trigger id/tag described in the Action triggers file. (ActionTriggers.csv - Tag)

Forwards to a triggered action group that will be applied to this account.

[5] - AllowNegative:
TBD
[6] - Disabled:
TBD

4.2.8 Action triggers¶

For each account there are counters that record the activity on various balances. Action triggers allow when a counter reaches a threshold to activate a group of actions. After the execution the action trigger is marked as used and will no longer be evaluated until the triggers are reset. See actions for action trigger resetting.

"ActionTriggers.csv" - csv
"tp_action_triggers" - stor_db

[0] - Tag:
A string by which this action trigger will be referenced in other places by.
[1] - UniqueID:
Unique id for the trigger in multiple ActionTriggers
[2] - ThresholdType:

The threshold type. Can have one of the following:

• *min_counter: Fire when counter is less than ThresholdValue
• *max_counter: Fire when counter is greater than ThresholdValue
• *min_balance: Fire when balance is less than ThresholdValue
• *max_balance: Fire when balances is greater than ThresholdValue
• *min_asr: Fire when ASR(Average success Ratio) is less than ThresholdValue
• *max_asr: Fire when ASR is greater than ThresholdValue
• *min_acd: Fire when ACD(Average call Duration) is less than ThresholdValue
• *max_acd: Fire when ACD is greater than ThresholdValue
• *min_acc: Fire when ACC(Average call cost) is less than ThresholdValue
• *max_acc: Fire when ACC is greater than ThresholdValue
• *min_tcc: Fire when TCC(Total call cost) is less than ThresholdValue
• *max_tcc: Fire when TCC is greater than ThresholdValue
• *min_tcd: fire when TCD(total call duration) is less than thresholdvalue
• *max_tcd: fire when TCD is greater than thresholdvalue
• *min_pdd: Fire when PDD(Post Dial Delay) is less than ThresholdValue
• *max_pdd: Fire when PDD is greater than ThresholdValue
[3] - ThresholdValue:
The value of the balance counter that will trigger this action.
[4] - Recurrent(Boolean):
In case of trigger we can fire recurrent while it’s active, or only the first time.
[5] - MinSleep:
When Threshold is triggered we can sleep for the time specified.
[6] - ExpiryTime
TBD
[7] - ActivationTime
TBD
[8] - BalanceTag:

Specifies the balance counter by which this action will be triggered. Can be:

• MONETARY
• SMS
• INTERNET
• INTERNET_TIME
• MINUTES
[9] - BalanceType:

Specifies the balance type for this action:

• *voice: units of call minutes
• *sms: units of SMS
• *data: units of data
• *monetary: units of money
[10] - BalanceDirections:
Can be *in or *out for the INBOUND and OUTBOUND calls.
[11] - BalanceCategories:
Category of the call/trigger
[12] - BalanceDestinationIds:

The destination id/tag described in the Destinations file. (Destinations.csv - Id) - rinor: need verification

Destination of the call/trigger

[13] - BalanceRatingSubject:
TBD
[14] - BalanceSharedGroup:
Shared Group of the call/trigger
[15] - BalanceExpiryTime:
TBD
[16] - BalanceTimingIds:
TBD
[17] - BalanceWeight:
TBD
[18] - BalanceBlocker
TBD
[19] - BalanceDisabled:
TBD
[20] - StatsMinQueuedItems:
Min of items that need to have a queue to reach this Trigger. Trigger actions only if this number is hit (stats only).
[21] - ActionsId:

The actions id/tag described in the Actions file. (Actions.csv - ActionsId)

Forwards to an action group to be executed when the threshold is reached.

[22] - Weight:
Specifies the order for these triggers to be evaluated. If there are multiple triggers are fired in the same time the ones with the lower weight will be executed first.

4.2.9. Action Plans¶

TBD

"ActionPlans.csv"  - csv
"tp_action_plans" - stor_db

#Id ActionsId TimingId Weight
AP_PACKAGE_10 ACT_TOPUP_RST_10 *asap 10
[0] - Id:
A string by which this action timing will be referenced in other places by.
[1] - ActionsId:
Forwards to an action group to be executed when the timing is right.
[2] - TimingId:
A timing (one time or recurrent) at which the action group will be executed
[3] - Weight:
Specifies the order for these timings to be evaluated. If there are multiple action timings set to be execute on the same time the ones with the lower weight will be executed first.

4.2.10. Actions¶

TBD

"Actions.csv" - csv
"tp_actions"  - stor_db

#ActionsId[0] Action[1] ExtraParameters[2] Filter[3] BalanceId[4] BalanceType[5] Directions[6] Categories[7] DestinationIds[8] RatingSubject[9] SharedGroup[10] ExpiryTime[11] TimingIds[12] Units[13] BalanceWeight[14] BalanceBlocker[15] BalanceDisabled[16] Weight[17]
ACT_TOPUP_RST_10 *topup_reset       *monetary *out   *any     *unlimited   10 10 false false 10
ACT_LOG_WARNING *log                           false false 10
[0] - ActionsId:
A string by which this action will be referenced in other places by.
[1] - Action:

The action type. Can have one of the following:

• *allow_negative: Allow to the account to have negative balance
• *call_url: Send a http request to the following url
• *call_url_async: Send a http request to the following url Asynchronous
• *cdrlog: Log the current action in the storeDB
• *debit: Debit account balance.
• *deny_negative: Deny to the account to have negative balance
• *disable_account: Disable account in the platform
• *enable_account: Enable account in the platform
• *log: Logs the other action values (for debugging purposes).
• *mail_async: Send a email to the direction
• *reset_account: Sets all counters to 0
• *reset_counter: Sets the counter for the BalanceTag to 0
• *reset_counters: Sets all the counters for the BalanceTag to 0
• *reset_triggers: reset all the triggers for this account
• *set_recurrent: (pending)
• *topup: Add account balance. If the specific balance is not defined, define it (example: minutes per destination).
• *topup_reset: Add account balance. If previous balance found of the same type, reset it before adding.
• *unset_recurrent: (pending)
• *unlimited: (pending)
[2] - ExtraParameters:
In Extra Parameter field you can define an argument for the action. In case of call_url Action, extraParameter will be the url action. In case of mail_async the email that you want to receive.
[3] - Filter
TBD
[4] - BalanceId:
The balance on which the action will operate
[5] - BalanceType:

Specifies the balance type for this action:

• *voice: units of call minutes
• *sms: units of SMS
• *data: units of data
• *monetary: units of money
[6] - Directions:
Can be *in or *out for the INBOUND and OUTBOUND calls.
[7] - Categories:
TBD
[8] - DestinationIds:

The destination id/tag described in the Destinations file. (Destinations.csv - Id)

This field is used only if the BalanceId is MINUTES. Specifies the destination of the minutes to be operated.

[9] - RatingSubject:
The ratingSubject of the Actions
[10] - SharedGroup:
In case of the account uses any shared group for the balances.
[11] - ExpiryTime:
TBD
[12] - TimingIds:
Timming tag when the action can be executed. Default ALL.
[13] - Units:
Number of units for decrease the balance. Only use if BalanceType is voice.
[14] - BalanceWeight:
TBD
[15] - BalanceBlocker
TBD
[16] - BalanceDisabled:
TBD
[17] - Weight:
If there are multiple actions in a group, they will be executed in the order of their weight (smaller first).

4.2.11. Derived Chargers¶

For each call we can bill more than one time, for that we need to use the following options:

"DerivedChargers.csv" - csv
"tp_derived_chargers" - stor_db


In derived charges we have 2 different kind of options, FILTERS and ACTIONS :

Filters: With the following fields we filter the calls that need to run a extra billing parameter.

[0] - Direction:
TBD
[1] - Tenant:
TBD
[2] - Category:
TBD
[3] - Account:
TBD
[4] - Subject:
TBD
[5] - DestinationIds:
TBD

Actions: In case of the filter options match, platform creates extra runid with the fields that we want to modify.

[6] - RunId:
TBD
[7] - RunFilter:
TBD
[8] - ReqTypeField:
TBD
[9] - DirectionField:
TBD
[10] - TenantField:
TBD
[11] - CategoryField:
TBD
[12] - AccountField:
TBD
[13] - SubjectField:
TBD
[14] - DestinationField:
TBD
[15] - SetupTimeField:
TBD
[16] - PddField:
TBD
TBD
[18] - UsageField:
TBD
[19] - SupplierField:
TBD
[20] - DisconnectCause:
TBD
[21] - RatedField:
TBD
[22] - CostField:
TBD

In the example, all the calls with direction=out, tenant=cgrates.org, category=”call” and account and subject equal 1001. Will be created a new cdr in the table rated_cdrs with the runID derived_run1, and the subject 1002.

This feature it’s useful in the case that you want to rated the calls 2 times, for example rated for different tenants or resellers.

4.2.12. CDR Stats¶

CDR Stats enables some realtime statistics in your platform for multiple purposes, you can read more, see CDR Stats Server

"CdrStats.csv" - csv
"tp_cdr_stats" - stor_db

[0] - Id:
Tag name for the Queue id
[1] - QueueLength:
Maximum number of calls in this queue
[2] - TimeWindow:
Window frame to store the calls
[3] - SaveInterval:
Each interval queue stats will save in the stordb
[4] - Metric:
Type of metric see Metrics Types
[5] - SetupInterval:
TBD
[6] - TOR:
TBD
[7] - CdrHost
TBD
[8] - CdrSource:
TBD
[9] - ReqType:
Filter by reqtype
[10] - Direction:
TBD
[11] - Tenant:
Used to distinguish between carriers if more than one share the same database in the CGRates system.
[12] - Category:
Type of record specifies the kind of transmission this rate profile applies to.
[13] - Account:
The identifier for the user’s account.
[14] - Subject:
The client/user for who this profile is detailing the rates.
[15] - DestinationIds:
Filter only by destinations prefix. Can be multiple separated with ;
[16] - PddInterval:
TBD
[17] - UsageInterval:
TBD
[18] - Supplier:
TBD
[19] - DisconnectCause:
TBD
[20] - RunIds:
TBD
[21] - RatedAccount:
Filter by rated account
[22] - RatedSubject:
Filter by rated subject
[23] - CostInterval:
Filter by cost
[24] - ActionTriggers:
ActionTriggers associated with this queue

4.2.13. Shared groups¶

TBD

"SharedGroups.csv" - csv
"tp_shared_groups" - stor_db

[0] - Id:
TBD
[1] - Account:
TBD
[2] - Strategy:
TBD
[3] - RatingSubject:
TBD

4.2.14. LCR rules¶

TBD

"LcrRules.csv" - csv
"tp_lcr_rules" - stor_db

[0] - Direction:
TBD
[1] - Tenant:
TBD
[2] - Category:
TBD
[3] - Account:
TBD
[4] - Subject:
TBD
[5] - DestinationTag:
TBD
[6] - RpCategory:
TBD
[7] - Strategy:
TBD
[8] - StrategyParams:
TBD
[9] - ActivationTime:
TBD
[10] - Weight:
TBD

4.2.15. Users¶

TBD

"Users.csv" - csv
"tp_users"  - stor_db

[0] - Tenant:
TBD
TBD
TBD
[3] - AttributeName:
TBD
[4] - AttributeValue:
TBD
[5] - Weight:
TBD

4.2.16. Aliases¶

TBD

"Aliases.csv" - csv
"tp_aliases"  - stor_db

[0] - Direction:
TBD
[1] - Tenant:
TBD
[2] - Category:
TBD
[3] - Account:
TBD
[4] - Subject:
TBD
[5] - DestinationId:
TBD
[6] - Context:
TBD
[7] - Target:
TBD
[8] - Original:
TBD
[9] - Alias:
TBD
[10] - Weight:
TBD

4.2.17. Resource Limits¶

TBD

"Resources.csv" - csv
"tp_resources" - stor_db

[0] - Tag
TBD
[1] - FilterType
TBD
[2] - FilterFieldName
TBD
[3] - FilterFieldValues
TBD
[4] - ActivationTime
TBD
[5] - Weight
TBD
[6] - Limit
TBD
[7] - ActionTriggerIds
TBD