MetraPipeline.WeightedRate.1
The Weighted Rate plug-in figures out the rate for an event which that event spans one or more time periods. Examples of two time periods are peak and off-peak. The time periods and corresponding calendar codes are configured in the calendar file associated to this plug-in in the <calendar> tag. Any number of calendar codes can be configured, down to each second of the day if necessary.
When a session is processed by the weighted rate plug-in, it is first divided into segments, where each segment si fits into a single time period. A rate ri is then assigned to each segment.
The rate is calculated by calling a configurable external plug-in. This plug-in is passed a copy of the session with the property specified by calendar_code_prop_name holding the correct calendar code, and start_time_prop_name and end_time_prop_name adjusted appropriately. This external plug-in is typically a rule plug-in but can be any pipeline plug-in. The plug-in returns the rate by setting the property specified in rate_prop_name.
Each segment si makes up a certain percentage ni of the total time of the event. The sum of the percentages of each segment is 100% (the entire event); therefore, the weighted rate of the event is
rate = S (ni · ri)
The calculated rate is stored in the property named in rate_prop_name.
The time segments are rated in reverse order. The earliest segment is rated last. This way, any side effects of the external rate plug-in (such as setup charges, minimum cost calculations, etc.) will be based on the calendar code of the start of the event.
Tag name |
Value type |
Description |
start_time_prop_name |
Datetime |
Time event started. |
end_time_prop_name |
Datetime |
Time event ended. |
offset_prop_name |
Long |
No longer used, but required in configuration. |
timezoneid_prop_name |
Long |
Users timezone ID (see Remarks section for values) |
Tag name |
Value type |
Description |
rate_prop_name |
decimal |
Weighted rate (across all applicable time periods) for this event |
calendar_code_prop_name |
String |
Calendar code in which this event took place. If multiple calendar codes apply, the value of multi_period_calendar_code is used instead. |
Tag name |
Value type |
Description |
multi_period_calendar_code |
String |
Value of calendar_code_prop_name property if this transaction spans multiple calendar codes. |
stage_name |
String |
External plug-ins stage name (typically the name of the current stage) |
execute_plug_in |
String |
External plug-in executed to perform rating. |
calendar |
String |
Filename of the calendar information file holding all calendar code data. |
<configdata>
<rate_prop_name>Rate</rate_prop_name>
<calendar_code_prop_name>CalendarCode</calendar_code_prop_name>
<start_time_prop_name>ConnectTime</start_time_prop_name>
<end_time_prop_name>DisconnectTime</end_time_prop_name>
<offset_prop_name>timezoneoffset</offset_prop_name>
<timezoneid_prop_name>timezoneID</timezoneid_prop_name>
<multi_period_calendar_code>*</multi_period_calendar_code>
<stage_name>AudioConfConn</stage_name>
<execute_plug_in>RateConnections</execute_plug_in>
<calendar>calendar.xml</calendar>
</configdata>
The Unix zoneinfo database is used to do all time of day calculations. The following timezone IDs are supported.
ID |
Microsoft Time Zone Name |
Unix Zoneinfo Name |
1 |
Afghanistan Standard Time |
Asia/Kabul |
2 |
Alaskan Standard Time |
America/Anchorage |
3 |
Arabian Standard Time |
Asia/Muscat |
4 |
Atlantic Standard Time |
America/Halifax |
5 |
AUS Central Standard Time |
Australia/Darwin |
6 |
Azores Standard Time |
Atlantic/Azores |
7 |
Bangkok Standard Time |
Asia/Bangkok |
8 |
Canada Central Standard Time |
America/Regina |
9 |
Cen. Australia Standard Time |
Australia/Adelaide |
10 |
Central Asia Standard Time |
Asia/Almaty |
11 |
Central Europe Standard Time |
Europe/Prague |
12 |
Central Pacific Standard Time |
Asia/Magadan |
13 |
Central Standard Time |
America/Chicago |
14 |
China Standard Time |
Asia/Urumqi |
15 |
Dateline Standard Time |
Pacific/Kwajalein |
16 |
E. Europe Standard Time |
NOT SUPPORTED |
17 |
E. South America Standard Time |
NOT SUPPORTED |
18 |
Eastern Standard Time |
America/New_York |
19 |
Egypt Standard Time |
Africa/Cairo |
20 |
Fiji Standard Time |
Pacific/Fiji |
21 |
GFT Standard Time |
Europe/Athens |
22 |
GMT |
Europe/Dublin |
23 |
GMT Standard Time |
Africa/Monrovia |
24 |
Hawaiian Standard Time |
Pacific/Honolulu |
25 |
India Standard Time |
Asia/Calcutta |
26 |
Iran Standard Time |
Asia/Tehran |
27 |
Israel Standard Time |
Asia/Jerusalem |
28 |
Mexico Standard Time |
America/Mexico_City |
29 |
Mid-Atlantic Standard Time |
NOT SUPPORTED |
30 |
Mountain Standard Time |
America/Phoenix |
31 |
New Zealand Standard Time |
Pacific/Auckland |
32 |
Newfoundland Standard Time |
America/St_Johns |
33 |
Pacific Standard Time |
America/Los_Angeles |
34 |
Romance Standard Time |
Europe/Paris |
35 |
Russian Standard Time |
Europe/Moscow |
36 |
SA Eastern Standard Time |
America/Buenos_Aires |
37 |
SA Pacific Standard Time |
America/Bogota |
38 |
SA Western Standard Time |
America/Caracas |
39 |
Samoa Standard Time |
Pacific/Midway |
40 |
Saudi Arabia Standard Time |
Asia/Baghdad |
41 |
South Africa Standard Time |
Africa/Harare |
42 |
Sydney Standard Time |
Australia/Brisbane |
43 |
Taipei Standard Time |
Asia/Hong_Kong |
44 |
Tasmania Standard Time |
Australia/Hobart |
45 |
Tokyo Standard Time |
Asia/Tokyo |
46 |
US Eastern Standard Time |
America/Indianapolis |
47 |
US Mountain Standard Time |
America/Phoenix |
48 |
W. Europe Standard Time |
Europe/Berlin |
49 |
West Asia Standard Time |
Asia/Karachi |
50 |
West Pacific Standard Time |
Pacific/Guam |