4 Configuring the eserv.config
This chapter explains how to configure the ACS section of the eserv.config.
eserv.config Configuration
The eserv.config file is a shared configuration file, from which many Oracle Communications Convergent Charging Controller applications read their configuration. Each Convergent Charging Controller machine (SMS, SLC, and VWS) has its own version of this configuration file, containing configuration relevant to that machine. The eserv.config file contains different sections; each application reads the sections of the file that contains data relevant to it.
The eserv.config file is located in the /IN/service_packages/ directory.
The eserv.config file format uses hierarchical groupings, and most applications make use of this to divide the options into logical groupings.
Configuration File Format
To organize the configuration data within the eserv.config file, some sections are nested within other sections. Configuration details are opened and closed using either { } or [ ].
- Groups of parameters are enclosed with curly brackets – { }
- An array of parameters is enclosed in square brackets – [ ]
- Comments are prefaced with a # at the beginning of the line
To list things within a group or an array, elements must be separated by at least one comma or at least one line break. Any of the following formats can be used, as in this example:
{ name="route6", id = 3, prefixes = [ "00000148","0000473"] }
{ name="route7", id = 4, prefixes = [ "000001049" ] }{ name="route6"
id = 3
prefixes = [
"00000148"
"0000473"
]
}
{ name="route7"
id = 4
prefixes = [
"000001049"
]
}{ name="route6"
id = 3
prefixes = [ "00000148", "0000473" ]
}
{ name="route7", id = 4
prefixes = [ "000001049" ]
}Editing the File
Open the configuration file on your system using a standard text editor. Do not use text editors, such as Microsoft Word, that attach control characters. These can be, for example, Microsoft DOS or Windows line termination characters (for example, ^M), which are not visible to the user, at the end of each row. This causes file errors when the application tries to read the configuration file.
Always keep a backup of your file before making any changes to it. This ensures you have a working copy to which you can return.
ACS Configuration in the eserve.config File
ACS Section in eserv.config
The ACS section is part of the eserv.config file. See Example ACS configuration in eserv.config for a detailed example of the parameters.
Reread the configuration by sending a SIGHUP to slee_acs.
Here is the high-level structure of the section.
ACS = {
countryCodes = [codes]
macroNodes = {
macronodes_parameters
}
tracing = {
tracing_parameters
}
acsChassisActions = {
acsChassisActions_parameters
}
SessionTimeInformation = {
SessionTimeInformation_parameters
}
ServiceEntries = [
{
ServiceEntries_parameters
}
]
acsTriggerIF = {
acsTriggerIF_parameters
}
AdditionalCheckMOLIPrefix = {
checkMOLIPrefixes_parameters
}
FCI = {
FCI_parameters
}
NP = {
NP_parameters
}
}countrycodes| Syntax: | countryCodes = [codes] |
| Description: | The list of country codes supported for location number normalization. |
| Type: | Array |
| Optionality: | Optional (default used if not set) |
| Allowed: | International country codes |
| Default: | |
| Notes: | This is used when roaming to determine the location of the caller and add country code to called number if appropriate. |
| Example: | countryCodes = [
|
macroNodes Configuration
The macroNodes configuration in the ACSsection of the
eserv.config supports configuration of ACS feature nodes.
Here is an example of the macroNodes section.
macroNodes = {
ATPD = {
ReleaseInApplyCharging = true
}
}ReleaseInApplyCharging| Syntax: | ReleaseInApplyCharging = true|false |
| Description: | Used in ATPD (Attempt Terminate to Pending TN with Duration) feature nodes to send a TCAP Disconnect(2) operation instead of a TCAP Release operation. |
| Type: | Boolean |
| Optionality: | Optional (default used if not set) |
| Allowed: | true, false |
| Default: | true |
| Notes: | |
| Example: | ReleaseInApplyCharging = false |
Tracing Configuration
tracing = {
enabled = true
origAddress = [
"0064212",
"0064213",
"0064214"
]
destAddress = [
"0064213",
"0064214"
]
traceDebugLevel = "all"
}enabled
| Syntax: | enabled = true|false |
| Description: | Enables the tracing functionality. |
| Type: | Boolean |
| Optionality: | Optional, default used if not set. |
| Allowed: | true, false |
| Default: | false |
| Notes: | Turning on tracing may dramatically increase system load. Only turn on in a production system if you have specified very limited tracing. |
| Example: | enabled = true |
origAddress
| Syntax: | origAddress =
["address1","address2",...,"addressN"] |
| Description: | A list of Originating Addresses to trace. |
| Type: | Array of number strings |
| Optionality: | Optional |
| Allowed: | The full originating address number. |
| Default: | None |
| Notes: | This may be an empty array list [], however to trace anything there must be at least one address in either the origAddress or destAddress parameters. |
| Example: | origAddress =
["0064212","0064213","0064214"] |
destAddress
| Syntax: | destAddress =
["address1","address2",...,"addressN"] |
| Description: | A list of Destination Addresses to trace. |
| Type: | Array of number strings |
| Optionality: | Optional |
| Allowed: | The full destination address number. |
| Default: | None |
| Notes: | This may be an empty array list [], however to trace anything there must be at least one address in either the origAddress or destAddress parameters. |
| Example: | destAddress =
["0064213","0064214"] |
traceDebugLevel
| Syntax: | traceDebugLevel =
"flag1[,flag2,...]" |
| Description: | Identifies the debug level for the addresses being traced. |
| Type: | String |
| Optionality: | Required (if enabled=true) |
| Allowed: |
Any valid flag. A useful method of finding which flags are relevant to the tracing you want to do is to: Run your call on a model environment with DEBUG=all Result: Debug will report all relevant sections.
|
| Default: | "all,-COMMON_escher_detail,-COMMON_escher_dump,-slee_api,-cmnTimeout,-cmnCacheDetail,-Config,-beVWARS_detail,-beSyncDetail" |
| Notes: |
traceDebugLevel = flag turns only flag on. traceDebugLevel=all,-flag,-flag2 turns all debug on, and then turns flag and flag2 off. Any section can be removed from the trace by preceding with a minus sign. The output columns are also configurable, and can be turned off. By default the columns are: date file line pid section message Columns in output are: * display:name the program name registered with cmnErrorSetProgram(), off by default * display:date the date in YYYY/MM/DD HH:MM:SS format * display:file the source filename * display:line the source line number * display:pid the process ID * display:section the debug section The parameter string value must be enclosed in quotes. |
| Example: |
Traces everything for the original and or destination addresses.
Traces cmnConfig and slee_api sections for the original and or destination addresses.
Traces everything except cmnEscher section for the original and or destination addresses.
Traces everything except cmnEscher section for the original and or destination addresses, and removes the file column from the output. |
acsChassisActions Configuration
Here is a an example of the acsChassisActions configuration of the
ACS section of the eserv.config.
acsChassisActions = {
mscAddressForEdr = [
{
mscAddress = "123456789"
encoding = "BCD"
},
{
mscAddress = "987654321"
encoding = "ASCII"
}
]
}encoding
| Syntax: | encoding = "code" |
| Description: | The encoding of the MSC address |
| Type: | String |
| Optionality: | Optional |
| Allowed: |
Values:
|
| Default: | BCD |
| Notes: | Member of mscAddressForEdr (on page 2) array |
| Example: | encoding = "BCD" |
mscAddress
| Syntax: | mscAddress = "addr" |
| Description: | The MSC address (in the CallReferenceNumber) |
| Type: | String |
| Optionality: | Optional |
| Allowed: | |
| Default: | |
| Notes: | Member of mscAddressForEdr (on page 2) array |
| Example: | mscAddress = "123456789" |
mscAddressForEdr
| Syntax: | mscAddressForEdr = [addr_parameters] |
| Description: | Array of MSC addresses and their encoding. This is used by the Add EDR Field chassis action. |
| Type: | Array |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | All mscAddresses are encoded as BCD. |
| Notes: | |
| Example: |
|
SessionTimeInformation Configuration
The SessionTimeInformation configuration in the
ACS section of the eserv.config supports the facility for the
processing of session time information for inbound interfaces such as EDR post
processing control agents.
Here is a an example of the section
SessionTimeInformation = {
STIServiceKey = 122
IDPExtTypeEDRId = 901
extractEdrId = true
IDPExtTypeCallStartTime = 902
extractCallStartTime = true
callStartTimeFormat = "YYYYMMDDHH24MISS"
IDPExtTypeCallAnswerTime = 903
extractCallAnswerTime = true
callAnswerTimeFormat = "YYYYMMDDHH24MISS"
IDPExtTypeCallEndTime = 904
extractCallEndTime = true
callEndTimeFormat = "YYYYMMDDHH24MISS"
IDPExtTypeEDRTimeZone = 905
extractEdrTimeZone = truecallAnswerTimeFormat
| Syntax: | callAnswerTimeFormat = "format" |
| Description: | Specifies the format of the call answer time string |
| Type: | String |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | "YYYYMMDDHH24MISS" |
| Notes: | |
| Example: | callAnswerTimeFormat =
"YYYYMMDDHH24MISS" |
callEndTimeFormat
| Syntax: | callEndTimeFormat = "format" |
| Description: | The format of call end time time string. |
| Type: | String |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | "YYYYMMDDHH24MISS" |
| Notes: | |
| Example: | callEndTimeFormat =
"YYYYMMDDHH24MISS" |
callStartTimeFormat
| Syntax: | callStartTimeFormat = "format" |
| Description: | The format of call start time time string. |
| Type: | String |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | "YYYYMMDDHH24MISS" |
| Notes: | |
| Example: | callStartTimeFormat =
"YYYYMMDDHH24MISS" |
extractCallAnswerTime
| Syntax: | extractCallAnswerTime =
true|false |
| Description: | Enable or disable extraction of call answer time from IDP extension. |
| Type: | Boolean |
| Optionality: | Optional (default used if not set). |
| Allowed: | true, false |
| Default: | true |
| Notes: | |
| Example: | extractCallAnswerTime = true |
extractCallEndTime
| Syntax: | extractCallEndTime = true|false |
| Description: | Enable or disable extraction of EDR ID from IDP extension |
| Type: | Boolean |
| Optionality: | Optional (default used if not set). |
| Allowed: | true, false |
| Default: | true |
| Notes: | |
| Example: | extractCallEndTime = true |
extractCallStartTime
| Syntax: | extractCallStartTime =
true|false |
| Description: | Enable or disable extraction of call start time from IDP extension |
| Type: | Boolean |
| Optionality: | Optional (default used if not set). |
| Allowed: | true, false |
| Default: | true |
| Notes: | |
| Example: | extractCallStartTime = true |
extractEdrId
| Syntax: | extractEdrId = true|false |
| Description: | Enable or disable extraction of EDR ID from IDP extension. |
| Type: | Boolean |
| Optionality: | Optional (default used if not set). |
| Allowed: | true, false |
| Default: | true |
| Notes: | |
| Example: | extractEdrId = true |
extractEdrTimeZone
| Syntax: | extractEdrTimeZone = true|false |
| Description: | Enable or disable extraction of timezone from IDP extension |
| Type: | Boolean |
| Optionality: | Optional (default used if not set). |
| Allowed: | true, false |
| Default: | true |
| Notes: | |
| Example: | extractEdrTimeZone = true |
IDPExtTypeCallAnswerTime
| Syntax: | IDPExtTypeCallAnswerTime = id |
| Description: | The ID of IDP Extension in which the call answer time is passed to ACS. |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | 903 |
| Notes: | |
| Example: | IDPExtTypeCallAnswerTime = 903 |
IDPExtTypeCallEndTime
| Syntax: | IDPExtTypeCallEndTime = value |
| Description: | The ID of IDP Extension in which the Call end time is passed to ACS. |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | 904 |
| Notes: | |
| Example: | IDPExtTypeCallEndTime = 904 |
IDPExtTypeCallStartTime
| Syntax: | IDPExtTypeCallStartTime = id |
| Description: | The ID of IDP Extension in which the call start time is passed to ACS. |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | 901 |
| Notes: | |
| Example: | IDPExtTypeCallStartTime = 902 |
IDPExtTypeEDRId
| Syntax: | IDPExtTypeEDRId = id |
| Description: | The ID of IDP Extension in which the EDR ID is passed to ACS. |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | 901 |
| Notes: | |
| Example: | IDPExtTypeEDRId = 901 |
IDPExtTypeEDRTimeZone
| Syntax: | IDPExtTypeEDRTimeZone = id |
| Description: | The ID of IDP Extension in which the timezone is passed to ACS |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | 901 |
| Notes: | |
| Example: | IDPExtTypeEDRTimeZone = 905 |
STIServiceKey
| Syntax: | STIServiceKey = skey |
| Description: | The service key on which session time based (offline) calls are to be expected. |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | 0 - set to 0 to disable session data processing |
| Notes: | This must match the service key in slee.cfg that you wish to run this service for on slee_acs. |
| Example: | STIServiceKey = 122 |
ServiceEntries Configuration
You can optionally define ServiceEntries configuration in the ACS section of the eserv.config file to configure ACS services that will be handled by the specified service libraries. Each entry in the ServiceEntries array defines the service loaders that a particular service handle should use, and also defines how number selection should work for the service handle. This method of defining service entries has the same purpose as configuring ServiceEntry lines in the acs.conf configuration file, but it has the following advantages:
- The configuration is easy to read
- The configuration is very flexible because you can specify a list of service libraries for each service library function
Note:
Each service entry must be configured either in eserv.config or in acs.conf but not in both. For more information about configuring service entries in acs.conf, see acsChassis ServiceEntry ConfigurationServiceEntries = [
{
ServiceName = "MyTestService"
Methods = {
acsChassisInitSL = [ "lib1.so", "lib2.so", "lib3.so" ]
acsChassisLoadService = [ "lib1.so", "lib3.so" ]
acsChassisPrePOR = [ "lib2.so", "lib1.so" ]
acsChassisCallTerminated = [ "lib1.so" ]
acsChassisPreCTR = [ "lib1.so"]
acsChassisPreETC = [ "lib1.so"]
}
AddressSources = {
NetworkCP = [
{ source = "callingPartyNumber", screening = "network" }
{ source = "callingPartyNumber", screening = "user" }
{ source = "additionalCallingPartyNumber", screening ="network" }
{ source = "additionalCallingPartyNumber", screening ="user" }
{ source = "extensionNumber", extension=4 }
{ source = "cellIDorLAI" }
{ source = "Empty" }
]
LogicalCP = [
{ source = "callingPartyNumber", screening = "user" }
{ source = "callingPartyNumber", screening = "network" }
]
}
}
]
AddressSources
| Syntax: | AddressSources =
[AddressSources_parameters] |
| Description: | Lists the sources used to populate various ACS buffers that may then be used by the service loader, chassis actions, or control plan. For a list of allowed values, see Allowed. |
| Type: | Array |
| Optionality: | Optional (default used if not set) |
| Allowed: |
Use:
|
| Default: | |
| Notes: | |
| Example: |
|
Methods
| Syntax: | Methods = {Methods_parameters} |
| Description: | Array of ACS chassis functions that may be invoked by the service, and the service libraries to associate with each function. |
| Type: | Array |
| Optionality: | Required |
| Allowed: |
You must specify the following required ACS chassis functions:
You can specify one or more of the following optional ACS chassis functions:
For more information about the allowed functions, see SDK Developer's Guide. |
| Notes: |
The service libraries specified for a function run in
list order. For example, to run the
|
| Example: |
|
ServiceName
| Syntax: | ServiceName = "str" |
| Description: | The name of the service that will be handled by the service libraries
specified in the Methods section.
|
| Type: | String |
| Optionality: | Required |
| Allowed: | |
| Default: | |
| Notes: | |
| Example: | ServiceName = "MyTestService" |
screening
| Syntax: | screening = "user|network" |
| Description: | Sets the screening indicator for the source number to either user provided, or network provided. |
| Type: | Boolean |
| Optionality: | Required |
| Allowed: | user or network |
| Default: | |
| Notes: | |
| Example: | screening = "user" |
source
| Syntax: | source = "str" |
| Description: | Sets the ACS buffer to use for this variable in the AddressSources list. For more information address sources, see acsChassis ServiceEntry Configuration (SLC) Configuration. |
| Type: | String |
| Optionality: | Required |
| Allowed: |
Use any of the following values:
|
| Notes: | When ACS populates a buffer, ACS searches the list of number sources until it finds one that matches in the IDP. If ACS does not find a match then the buffer is left blank. |
| Example: | source = "callingPartyNumber" |
acsTriggerIF Configuration
Oracle Communications Billing and Revenue Management (BRM) is able to trigger notifications off the back of the AAA opcodes which drive the real-time charging interaction. The Convergent Charging Controller architecture takes advantage of the BRM In-Session Notifications by triggering control plans at the point they are received. See BRM Charging Driver Technical Guide for details on in-session notification mapping from BRM to Convergent Charging Controller.
See the Triggers topic in ACS User's Guide for control plan trigger definitions.
The ACS SLEE interface (acsTriggerIF) generates an IDP to trigger a control plan on receipt of a SLEE event containing control plan trigger details and IDP data.
acsTriggerIF
section:acsTriggerIF = {
# sleeInterfaceName = "acsTriggerIF"
# sleeServiceKey = 1
# overrideSleeServiceKey = 0
# inapServiceKey = 1
# statisticsEnabled = true
# noActivitySleepTime = 10000
# triggerTimeOutSecs = 10
deleteTagsAfterTrigger = [
1312070, # ISN Balance
1312052, # ISN Credit Threshold Balance
1312075, # ISN Failure Reason
1312074, # ISN Lifecycle State
1312050, # ISN Preferred Channel
1312051, # ISN Preferred Time
1312073, # ISN Rating Status
1312068, # ISN Streaming Threshold
1312066 # ISN Subscription Expiry
]
numberRules = [
{ prefix="", min=0, max = 100, remove=0, prepend="", resultNoa=4 }
]
}deleteTagsAfterTrigger
| Syntax: | deleteTagsAfterTrigger = [tags] |
| Description: | List of profile tags which should be deleted after they are sent in a trigger event. |
| Type: | Array |
| Optionality: | Optional (default used if not set) |
| Allowed: | Valid profile tags, matching those defined in the
bcdActionHandler.InSessionNotificationMapping
section of eserv.config. See BRM Charging Driver Technical
Guide.
|
| Default: | [ ] |
| Notes: | Not specified means no tags will be deleted. |
| Example: |
|
inapServiceKey
| Syntax: | inapServiceKey = int |
| Description: | The INAP service key that acsTriggerIF should use for generated IDP messages if not specified by the trigger event data. |
| Type: | Integer |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | 1 |
| Notes: | |
| Example: | inapServiceKey = 1 |
noActivitySleepTime
| Syntax: | noActivitySleepTime = usecs |
| Description: | Period (microseconds) to sleep if no activity detected by last poll. |
| Type: | Integer |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | 10000 |
| Notes: | Zero (0) means no sleep. |
| Example: | noActivitySleepTime = 10000 |
numberRules
| Syntax: | numberRules = [rules] |
| Description: | Rules for denormalizing numbers to send to slee_acs in an IDP. |
| Type: | Array |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | no rules applied |
| Notes: | The rule below assumes that all numbers in trigger events start with a country code# and should be sent in international format (NOA= 4). |
| Example: |
|
overrideSleeServiceKey
| Syntax: | overrideSleeServiceKey = int |
| Description: | The SLEE service key that acsTriggerIF should *always* send generated IDP messages to. This overrides the sleeServiceKey config option and the trigger event data. |
| Type: | Integer |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | 0 |
| Notes: | Zero (0) means no override. |
| Example: | overrideSleeServiceKey = 0 |
sleeInterfaceName
| Syntax: | sleeInterfaceName = "IFName" |
| Description: | The SLEE interface name of the acsTriggerIF process. |
| Type: | String |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | "acsTriggerIF" |
| Notes: | |
| Example: | sleeInterfaceName =
"acsTriggerIF" |
sleeServiceKey = int
| Syntax: | sleeServiceKey = int |
| Description: | The SLEE service key that acsTriggerIF should send generated IDP messages to if not specified by the trigger event data. |
| Type: | Integer |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | 1 |
| Notes: | |
| Example: | sleeServiceKey = 1 |
statisticsEnabled
| Syntax: | statisticsEnabled = true|false |
| Description: | Set whether acsTriggerIF should log statistics or not. |
| Type: | Boolean |
| Optionality: | Optional (default used if not set) |
| Allowed: | true, false |
| Default: | true |
| Notes: | |
| Example: | statisticsEnabled = true |
triggerTimeOutSecs
| Syntax: | triggerTimeOutSecs = seconds |
| Description: | The maximum period (in seconds) that acsTriggerIF should wait for a response to an IDP trigger event before giving up and closing the dialog. |
| Type: | Integer |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | 10 |
| Notes: | |
| Example: | triggerTimeOutSecs = 10 |
Statistics Updated by acsTriggerIF
| Statistic | Description |
|---|---|
| TRIGGER_FAIL | The number of failed control plan triggers. |
| TRIGGER_SUCCESS | The number of successful control plan triggers. |
| TRIGGER_TIMEOUT | The number of timed out control plan triggers. |
acsDbCleanup Configuration
The acsDbCleanup configuration in the ACS section of the
eserv.config supports configurations for DB cleanup.
acsDbCleanup = {
statsAge = 5
compileErrorAge = 1
commit = 100
} # acsDbCleanup statsAge
| Syntax: | statsAge = value |
| Description: | The number of days after which statistics records has to be deleted from ACS_STATISTICS_COUNT table. |
| Type: | Integer |
| Optionality: | Optional (default used if not set) |
| Allowed: | Any non zero, positive integer. |
| Default: | The default value is configured in acsDbCleanup.sh file. |
| Notes: | |
| Example: | statsAge = 5 |
compileErrorAge
| Syntax: | compileErrorAge = value |
| Description: | The number of days after which the compile error records has to be deleted from ACS_COMPILE_ERRORS table. |
| Type: | Integer |
| Optionality: | Optional (default used if not set) |
| Allowed: | Any non zero, positive integer. |
| Default: | The default value is configured in acsDbCleanup.sh file. |
| Notes: | |
| Example: | compileErrorAge = 1 |
commit
| Syntax: | commit = value |
| Description: | The number of rows that has to committed after making the changes in AC_STATISTICS_COUNT and ACS_COMPILE_ERRORS tables. |
| Type: | Integer |
| Optionality: | Optional (default used if not set) |
| Allowed: | Any non zero, positive integer. |
| Default: | The default value is configured in acsDbCleanup.sh file. |
| Notes: | |
| Example: | commit = 100 |
AdditionalCheckMOLIPrefix Configuration
The MoLI (Mobile origin Location Information) standard is used by Australian Telecommunications companies to identify the location of mobile callers.
The checkMOLIPrefix parameter, which you configure in the acs.conf file, enables you to specify only a single prefix on a dialed number that identifies the prefix as containing a MoLI code. If the dialed number has the prefix specified, then ACS removes the prefix and applies MoLI decoding rules in order to place the three digit MoLI code from the number into the calling network address field.
ACS = {
AdditionalCheckMOLIPrefix = {
checkMOLIPrefixes = [
"int",
"int",
..
]
}
}The checkMOLIPrefixes array has the following characteristics:
checkMOLIPrefixes
| Syntax: |
|
| Description: | The checkMOLIPrefixes array is a comma separated list of the additional MoLI prefixes to check, where int is a MoLI prefix. |
| Type: | Array |
| Optionality: | Optional |
| Allowed: | Up to 19 additional MoLI prefixes |
| Notes: | You must also configure the single MoLI prefix in the CheckMOLIPrefix (on page 2) parameter in acs.conf for the MoLI functionality to be available. |
| Example: |
|
FCI Configuration
For correct operation with a Siemens INAP (SINAP 5) switch, Convergent Charging Controller sends a Furnish Charging Information (FCI) operation before every Connect, Continue, ReleaseCall, EstablishTemporaryConnection, and ConnectToResurce operation. Convergent Charging Controller extracts the FCI content to send from the appropriate profile block and tags.
An FCI operation can contain between one and five billing items. If the extracted FCI content contains more than five billing items, slee_acs can send a second FCI operation that contains up to five additional billing items. A maximum of 10 billing items can be sent. Examples of billing items sent in FCI operations are "calling number", "called number", and "prepaid/postpaid flag".
In addition to billing items, the FCI contents can include the following information:
- Service number (from the original called party buffer or another buffer)
- Auto-incrementing counter (“A” for first FCI, “B” for second, and so on)
- Mobile location indicator from the calling party network address buffer or another buffer
- Country code from the service number profile
- Service code from the service number profile
- Profile tags populated by the FCI fields in the Edit Service Numbers dialog box
- Profile tags: FCI On (70), FCI Service Code (71), FCI Country Code (72)
The FCI operation for a Siemens INAP requires the following shared library, which is installed with Convergent Charging Controller:
/IN/service_packages/AAPT/lib/libfciService.soFCI = {
serviceKeys = [
9810, "91900001", "0xff1911100" etc.
]
}serviceKeys
| Syntax: | serviceKeys = [key1, ...] |
| Description: | Specifies which INAP service keys receive FCI data |
| Type: | Integer, String |
| Optionality: | Required |
| Allowed: | Integer, String, and String with Hex ("0x...") formats are supported. |
| Default: | [ ] |
| Example: | serviceKeys = [9810, "91900001",
"0xff1911100"] |
fciFlagProfileTag
| Syntax: | fciFlagProfileTag = tag |
| Description: | If the profile tag used for the FCI flag is not standard, specifies the profile tag to use for the FCI flag |
| Type: | Integer |
| Optionality: | Optional |
| Allowed: | |
| Default: | None |
| Example: | fciFlagProfileTag = 70 |
serviceIndicatorProfileTag
| Syntax: | serviceIndicatorProfileTag = tag |
| Description: | If the profile tag used for the service indicator flag is not standard, specifies the profile tag to use for the service indicator flag. |
| Type: | Integer |
| Optionality: | Optional |
| Allowed: | |
| Default: | None |
| Example: | serviceIndicatorProfileTag = 71 |
countryCodeProfileTag
| Syntax: | countryCodeProfileTag = tag |
| Description: | If the profile tag used for the country code is not standard, specifies the profile tag to use for the country code. |
| Type: | Integer |
| Optionality: | Optional |
| Allowed: | |
| Default: | None |
| Example: | countryCodeProfileTag = 72 |
NP Configuration
The following number portability (NP) shared library replaces the destination routing address in the Connect operation if the number has been ported to another operator:
/IN/service_packages/AAPT/lib/libnpService.so
For example, it might replace "02 1111 2222" with "1456 43 02 1111 2222".
The shared library queries the NP tables directly.
NP = {
enableService = true
mode = "whitelist"
serviceKeys = [
10, # Toll Free EWSD Private Plane
30 # Toll Free Genband National Plane
]
ignoredTermNumberPrefixes = [
"14"
]
additionalPrefix = "AA"
additionalPrefixServiceKeys = [
30 # Toll Free Genband National Plane
]
}enableService
| Syntax: | enableService = true | false |
| Description: | Specifies whether to execute the NP service logic (libnpService.so). |
| Type: | Boolean |
| Optionality: | Optional (default used if not set) |
| Allowed: | true, false |
| Default: | true |
| Example: | enableService = true |
mode
| Syntax: | mode = "whitelist" | "blacklist" |
| Description: |
Specifies how to treat the configured service keys.
|
| Type: | String |
| Optionality: | Optional (default used if not set) |
| Allowed: | "whitelist" or "blacklist" |
| Default: | "whitelist" |
| Example: | mode = "whitelist" |
serviceKeys
| Syntax: | serviceKeys = [key1, ...] |
| Description: | Specifies the service keys that trigger (whitelist) or do not trigger (blacklist) an NP lookup. |
| Type: | Array |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | [ ] |
| Example: |
|
ignoredTermNumberPrefixes
| Syntax: | ignoredTermNumberPrefixes = ["prefix",
...] |
| Description: | For a call that terminates to a DRA and matches a prefix in this list, specifies that it does not trigger an NP lookup regardless of its service key. |
| Type: | Array |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | [ ] |
| Example: | ignoredTermNumberPrefixes =
["14"] |
additionalPrefix
| Syntax: | additionalPrefix = "pre" |
| Description: | An additional prefix that is added to the DRA for calls that trigger an NP lookup and match one of the service keys specified by additionalPrefixServiceKeys |
| Type: | String |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | "" |
| Example: | additonalPrefix = "AA" |
additionalPrefixServiceKeys
| Syntax: | additionalPrefixServiceKeys = [key1,
...] |
| Description: | A list of service keys against which calls that trigger an NP lookup are matched. If the service key matches a service key in the list, adds the additionalPrefix prefix to the DRA after NP translation. Adds the prefix regardless of whether the NP lookup finds a PQYZ entry. |
| Type: | Array |
| Optionality: | Optional (default used if not set) |
| Allowed: | |
| Default: | [ ] |
| Example: |
|
ACS_Prefix Service Entry for FCI and NP Configurations
The FCI and NP configurations require the following service entry for the ACS_Prefix service name. See ServiceEntries Configuration (on page 2) for descriptions of the parameters.
There is only one ServiceEntries section so these service entry parameters for ACS_Prefix should be added to any existing sections for other service names.
Note:
The service name and the method order are important. You potentially might want to define the same entries for the service "ACS".ServiceEntries = [
{
...
AddressSources = {}
MinSleeEventSize = 102
ServiceName = "ACS_Prefix"
Methods = {
acsChassisLoadService = [ "libnpService.so", "libacsService.so",
"libfciService.so" ]
acsChassisPreETC = ["libacsService.so", "libfciService.so"]
acsChassisPreCTR = ["libacsService.so", "libfciService.so"]
acsChassisPrePOR = ["libnpService.so", "libacsService.so",
"libfciService.so" ]
acsChassisStoreProfile = ["libacsService.so" ]
acsChassisReLoadProfiles = ["libacsService.so" ]
acsChassisLoadProfiles = ["libacsService.so" ]
acsChassisProcessCall = ["libacsService.so" ]
acsChassisCallTerminated = ["libacsService.so" ]
acsChassisInitSL = ["libnpService.so", "libacsService.so" ,
"libfciService.so" ]
acsChassisGetCDRContent = ["libacsService.so" ]
}
}
]Example ACS Configuration in eserv.config
This is an example of the ACS section of the
eserv.config file.
ACS = {
countryCodes = [
"97"
"64"
"65"
"44"
"1"
]
macroNodes = {
ATPD = {
ReleaseInApplyCharging = true
}
}
tracing = {
enabled = true
origAddress = [
"0064212",
"0064213",
"0064214
]
destAddress = [
"0064213",
"0064214"
]
traceDebugLevel = "all"
}
acsChassisActions = {
mscAddressForEdr = [
{
mscAddress = "123456789"
encoding = "BCD"
},
{
mscAddress = "987654321"
encoding = "ASCII"
}
]
}
SessionTimeInformation = {
STIServiceKey = 122
IDPExtTypeEDRId = 901
extractEdrId = true
IDPExtTypeCallStartTime = 902
extractCallStartTime = true
callStartTimeFormat = "YYYYMMDDHH24MISS"
IDPExtTypeCallAnswerTime = 903
extractCallAnswerTime = true
callAnswerTimeFormat = "YYYYMMDDHH24MISS"
IDPExtTypeCallEndTime = 904
extractCallEndTime = true
callEndTimeFormat = "YYYYMMDDHH24MISS"
IDPExtTypeEDRTimeZone = 905
extractEdrTimeZone = true
}
ServiceEntries = [
{
ServiceName = "MyTestService"
Methods = {
acsChassisInitSL = [ "lib1.so", "lib2.so", "lib3.so"]
acsChassisLoadService = [ "lib1.so", "lib3.so" ]
acsChassisPrePOR = [ "lib2.so", "lib1.so" ]
acsChassisCallTerminated = [ "lib1.so" ]
acsChassisPreCTR = [ "lib1.so"]
acsChassisPreETC = [ "lib1.so"]
}
AddressSources = {
NetworkCP = [
{ source = "callingPartyNumber", screening = "network" }
{ source = "callingPartyNumber", screening = "user" }
{ source = "additionalCallingPartyNumber", screening = "network" }
{ source = "additionalCallingPartyNumber", screening = "user" }
{ source = "extensionNumber", extension=4 }
{ source = "cellIDorLAI" }
{ source = "Empty" }
]
LogicalCP = [
{ source = "callingPartyNumber", screening = "user" }
{ source = "callingPartyNumber", screening = "network" }
]
}
MinSleeEventSize = 1024
ServiceName = "ACS_Prefix"
Methods = {
acsChassisLoadService = [ "libnpService.so", "libacsService.so",
"libfciService.so" ]
acsChassisPreETC = [ "libacsService.so", "libfciService.so" ]
acsChassisPreCTR = [ "libacsService.so", "libfciService.so" ]
acsChassisPrePOR = [ "libnpService.so","libacsService.so",
"libfciService.so" ]
acsChassisStoreProfile = [ "libacsService.so" ]
acsChassisReLoadProfiles = [ "libacsService.so" ]
acsChassisLoadProfiles = [ "libacsService.so" ]
acsChassisProcessCall = [ "libacsService.so" ]
acsChassisCallTerminated = [ "libacsService.so" ]
acsChassisInitSL = [ "libnpService.so","libacsService.so",
"libfciService.so" ]
acsChassisGetCDRContent = [ "libacsService.so" ]
}
}
]
acsTriggerIF = {
# sleeInterfaceName = "acsTriggerIF"
# sleeServiceKey = 1
# overrideSleeServiceKey = 0
# inapServiceKey = 1
# statisticsEnabled = true
# noActivitySleepTime = 10000
# triggerTimeOutSecs = 10
deleteTagsAfterTrigger = [
1312070, # ISN Balance
1312052, # ISN Credit Threshold Balance
1312075, # ISN Failure Reason
1312074, # ISN Lifecycle State
1312050, # ISN Preferred Channel
1312051, # ISN Preferred Time
1312073, # ISN Rating Status
1312068, # ISN Streaming Threshold
1312066 # ISN Subscription Expiry
]
numberRules = [
{ prefix="", min=0, max = 100, remove=0, prepend="",resultNoa=4 }
]
}
AdditionalCheckMOLIPrefix = {
checkMOLIPrefixes = [
"121",
"122",
"123",
"124",
"125",
"126"
]
}
FCI = {
serviceKeys = [
9810, "91900001", "0xff1911100" etc.
]
}
NP = {
enableService = true
mode = "whitelist"
serviceKeys = [
10, # Toll Free EWSD Private Plane
30 # Toll Free Genband National Plane
]
ignoredTermNumberPrefixes = [
"14"
]
additionalPrefix = "AA"
additionalPrefixServiceKeys = [
30 # Toll Free Genband National Plane
]
}
}Subscriber Tracing
The SubscriberTracing configuration in eserv.config enables subscriber level tracing and also used to generate the trace for the subscribers for each call. This configuration is available only at SLC nodes.
Here is an example of the section.
enabled
| Syntax: | enabled = true|false |
| Description: | Enables the subscriber tracing and generates a trace file for each configured subscriber. |
| Type: | Boolean |
| Optionality: | Optional, default used if not set. |
| Allowed: | true, false |
| Default: | false |
| Notes: | |
| Example: | enabled = false |
sessionLevelTracing
| Syntax: | sessionLevelTracing = true|false |
| Description: | Used to generate one trace per call for each configured subscriber. |
| Type: | Boolean |
| Optionality: | Optional, default used if not set. |
| Allowed: | true, false |
| Default: | false |
| Notes: | |
| Example: | sessionLevelTracing = false |
subscriberList
| Syntax: | subscriberList =
["MSISDN1","MSISDN2",...,"MSISDNN"] |
| Description: | A list of subscribers for those the traces needs to be generated. |
| Type: | Array of number strings |
| Optionality: | Optional |
| Allowed: | MSISDN of any valid subscriber. |
| Default: | null |
| Notes: |
If Configuring a big list of subscribers for tracing could impact the system performance. |
| Example: | subscriberList =
["321100001","3211000002"] |
traceLocation
| Syntax: | traceLocation = "path" |
| Description: | The path where the trace files are saved. |
| Type: | String |
| Optionality: | Optional, default used if not set. |
| Allowed: | Any valid path on SLC where smf_oper user has permission to write. |
| Default: | "/tmp" |
| Notes: | |
| Example: | traceLocation =
"/IN/service_packages/ACS/tmp" |
MRC Configuration
locationInfoRetrieval Configuration
In order to make slee_acs send AnyTimeInterrogation, so that it can do
mid-call tariff changes if the subscriber moves, you need to configure the
locationInfoRetrieval parameters in the MRC section of
eserv.config.
MRC = {
locationInfoRetrieval = {
LocationInfoPollEnabled = true
LocationInfoTcapInterfaceName = "m3ua_if"
LocationInfoGSMScfAddress = "12345678"
LocationInfoGSMScfMapNoa = 1
LocationInfoOriginatingSubsystemNumber = 147
LocationInfoDestinationSubsystemNumber = 6 # HLR
LocationInfoRequestTimeout = 5The locationInfoRetrieval parameter is optional. However, if the
parameter is present, to configure the parameter to send AnyTimeInterrogation, the
following parameters must be set to a valid value other than their default:
LocationInfoGSMScfAddressLocationInfoPollEnabledLocationInfoTcapInterfaceName
The following parameters specify parts of the GSM SCF address parameter of AnyTimeInterrogation. They are also used for the SCCP originating address of the message containing the AnyTimeInterrogation:
LocationInfoGSMScfAddressLocationInfoGSMScfMapNoaLocationInfoOriginatingSubsystemNumberLocationInfoDestinationSubsystemNumberLocationInfoRequestTimeout
LocationInfoDestinationSubsystemNumber
| Syntax: | LocationInfoDestinationSubsystemNumber =
num |
| Description: | The SCCP subsystem number to put in the destination address. |
| Type: | Integer |
| Optionality: | Required if locationInfoRetrieval is
present
|
| Allowed: | |
| Default: | 0 |
| Notes: | |
| Example: | LocationInfoDestinationSubsystemNumber =
6 |
LocationInfoGSMScfAddress
| Syntax: | LocationInfoGSMScfAddress =
"address" |
| Description: | The digits of the GSM SCF address and Global Title. |
| Type: | String |
| Optionality: | Required if locationInfoRetrieval is
present
|
| Allowed: | |
| Default: | "" |
| Notes: | The default setting will turn off the function. |
| Example: | LocationInfoGSMScfAddress =
"12345678" |
LocationInfoGSMScfMapNoa = NoA
| Syntax: | LocationInfoGSMScfMapNoa = NoA |
| Description: | The nature of address of the GSM SCF address. |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | 1 (International) |
| Notes: | The SCCP Global Title NOA is hard-coded to 4 = international. |
| Example: | LocationInfoGSMScfMapNoa = 1 |
locationInfoOriginatingSubsystemNumber
| Syntax: | locationInfoOriginatingSubsystemNumber =
num |
| Description: | The SCCP subsystem number to put in the originating address. |
| Type: | Integer |
| Optionality: | Required if locationInfoRetrieval is
present
|
| Allowed: | |
| Default: | 0 |
| Notes: | |
| Example: | locationInfoOriginatingSubsystemNumber =
147 |
locationInfoPollEnabled
| Syntax: | locationInfoPollEnabled =
true|false |
| Description: | Send AnyTimeInterrogation |
| Type: | Boolean |
| Optionality: | Required if locationInfoRetrieval is
present
|
| Allowed: | true, false |
| Default: | false |
| Notes: | The default setting will turn off the function |
| Example: | locationInfoPollEnabled = true |
LocationInfoRequestTimeout
| Syntax: | LocationInfoRequestTimeout =
seconds |
| Description: | The minimum number of seconds to wait before giving up waiting for a response to AnyTimeInterrogation. |
| Type: | Integer |
| Optionality: | Optional (default used if not set). |
| Allowed: | |
| Default: | 5 |
| Notes: | |
| Example: | LocationInfoRequestTimeout = 5 |
locationInfoTcapInterfaceName
| Syntax: | locationInfoTcapInterfaceName =
"name" |
| Description: | The name of the TCAP interface to use to send MAP2 AnyTimeInterrogation. |
| Type: | String |
| Optionality: | Required if locationInfoRetrieval is
present
|
| Allowed: | |
| Default: | "" |
| Notes: | The default setting will turn off the function. |
| Example: | LocationInfoTcapInterfaceName =
"m3ua_if" |
Example MRC Configuration in eserv.config
MRC = {
locationInfoRetrieval = {
LocationInfoPollEnabled = true
LocationInfoTcapInterfaceName = "m3ua_if"
LocationInfoGSMScfAddress = "12345678"
LocationInfoGSMScfMapNoa = 1
LocationInfoOriginatingSubsystemNumber = 147
LocationInfoDestinationSubsystemNumber = 6 # HLR
LocationInfoRequestTimeout = 5
}
}