CS1 ApplyCharging Configuration Example

This example uses custom ApplyCharging and ApplyChargingReport operations to enable charging for CS1 INAP calls.

Custom ApplyCharging Operation Definition

In the CS1 INAP protocol definition for the ApplyCharging operation, the contents of the AChBillingChargingCharacteristics operation are undefined, and the operator must specify a custom definition. In this example, the CS1 custom AChBillingChargingCharacteristics parameter is defined as follows in the ASN.1 dictionary:
AChBillingChargingCharacteristics ::= SEQUENCE {
    MaxDurationInSeconds [1] INTEGER,
    ReleaseIfDurationExceeded [2] BOOLEAN OPTIONAL,
    ToneRequired [3] BOOLEAN OPTIONAL,
}
This is like the CAP3 definition except that it has a simpler structure, and times are measured in seconds, not tenths of seconds.
The CAP3 definition is as follows:
AChBillingChargingCharacteristics {PARAMETERS-BOUND : bound} ::= OCTET STRING (SIZE
    (bound.&minAChBillingChargingLength .. bound.&maxAChBillingChargingLength))
    (CONSTRAINED BY {-- shall be the result of the BER-encoded value of the type --
    CAMEL-AChBillingChargingCharacteristics {bound}})

CAMEL-AChBillingChargingCharacteristics {PARAMETERS-BOUND : bound} ::= CHOICE {
    timeDurationCharging                    [0] SEQUENCE {
            maxCallPeriodDuration                [0] INTEGER (1..864000),
            releaseIfdurationExceeded            [1] BOOLEAN DEFAULT FALSE,
            tariffSwitchInterval                [2] INTEGER (1..86400)            OPTIONAL,
            tone                                [3] BOOLEAN DEFAULT FALSE,
            extensions                            [4] Extensions    {bound} OPTIONAL,
            ...
        }
    }

Custom ApplyChargingReport Operation Definition

In the CS1 INAP protocol definition for the ApplyChargingReport operation, the contents of the CallResult parameter are network operator specific. In this example, the CS1 custom CallResult parameter is defined as follows in the ASN.1 dictionary:
CallResult ::= SEQUENCE {
    PartyToCharge [1] INTEGER,
    CallActive [2] BOOLEAN DEFAULT TRUE,
    CallReleaseAtTcpExpiry [3] BOOLEAN DEFAULT FALSE,
    DurationInSecs [4] INTEGER
}
The CAP3 definition is as follows:
CAMEL-CallResult {PARAMETERS-BOUND : bound}        ::= CHOICE {
    timeDurationChargingResult                [0] SEQUENCE {
        partyToCharge                            [0] ReceivingSideID,
        timeInformation                            [1] TimeInformation,
        callActive                                [2] BOOLEAN                 DEFAULT TRUE,
        callReleasedAtTcpExpiry                    [3] NULL                    OPTIONAL,
        extensions                                [4] Extensions    {bound}        OPTIONAL,
        ...
        }
    }

TimeInformation                        ::= CHOICE {
     timeIfNoTariffSwitch                [0] TimeIfNoTariffSwitch,
     timeIfTariffSwitch                    [1] TimeIfTariffSwitch
    }
-- Indicates call duration information

TimeIfNoTariffSwitch                ::= INTEGER(0..864000)
-- TimeIfNoTariffSwitch is measured in 100 millisecond intervals

Example MDC Definitions

The following configuration in create_config.info adds two custom MATRIXX Data Containers (MDCs). One is named MutantChargingCharacteristics for the custom AChBillingChargingCharacteristics parameter fields, and a second MDC is named MutantCallResult for the custom CallResult parameter fields:
How many custom MDCs do you want to add?4
Added MDC:00003:What is the container's name?MutantChargingCharacteristics
Added MDC:00003:What is the container's key?-3
Added MDC:00003:What is the name of the base container (if any)?
Added MDC:00003:What is the created schema version?2
Added MDC:00003:What is the deleted schema version?0
Added MDC:00004:What is the container's name?MutantCallResult
Added MDC:00004:What is the container's key?-4
Added MDC:00004:What is the name of the base container (if any)?
Added MDC:00004:What is the created schema version?2
Added MDC:00004:What is the deleted schema version?0
New MutantChargingCharacteristics field:How many fields do you want to add?3
New MutantChargingCharacteristics field:00001:What is the field's name?MaxDurationInSeconds
New MutantChargingCharacteristics field:00001:What is the field's type?unsigned int32
New MutantChargingCharacteristics field:00001:Is this field a list (y/n)?n
New MutantChargingCharacteristics field:00001:Is this field an array (y/n)?n
New MutantChargingCharacteristics field:00001:What is the created schema version?2
New MutantChargingCharacteristics field:00001:What is the deleted schema version?0
New MutantChargingCharacteristics field:00002:What is the field's name?ReleaseIfDurationExceeded
New MutantChargingCharacteristics field:00002:What is the field's type?bool
New MutantChargingCharacteristics field:00002:Is this field a list (y/n)?n
New MutantChargingCharacteristics field:00002:Is this field an array (y/n)?n
New MutantChargingCharacteristics field:00002:What is the created schema version?2
New MutantChargingCharacteristics field:00002:What is the deleted schema version?0
New MutantChargingCharacteristics field:00003:What is the field's name?ToneRequired
New MutantChargingCharacteristics field:00003:What is the field's type?bool
New MutantChargingCharacteristics field:00003:Is this field a list (y/n)?n
New MutantChargingCharacteristics field:00003:Is this field an array (y/n)?n
New MutantChargingCharacteristics field:00003:What is the created schema version?2
New MutantChargingCharacteristics field:00003:What is the deleted schema version?0
New MutantCallResult field:How many fields do you want to add?4
New MutantCallResult field:00001:What is the field's name?PartyToCharge
New MutantCallResult field:00001:What is the field's type?unsigned int32
New MutantCallResult field:00001:Is this field a list (y/n)?n
New MutantCallResult field:00001:Is this field an array (y/n)?n
New MutantCallResult field:00001:What is the created schema version?2
New MutantCallResult field:00001:What is the deleted schema version?0
New MutantCallResult field:00002:What is the field's name?CallActive
New MutantCallResult field:00002:What is the field's type?bool
New MutantCallResult field:00002:Is this field a list (y/n)?n
New MutantCallResult field:00002:Is this field an array (y/n)?n
New MutantCallResult field:00002:What is the created schema version?2
New MutantCallResult field:00002:What is the deleted schema version?0
New MutantCallResult field:00003:What is the field's name?CallReleaseAtTcpExpiry
New MutantCallResult field:00003:What is the field's type?CallReleaseAtTcpExpiry
New MutantCallResult field:00003:Is this field a list (y/n)?n
New MutantCallResult field:00003:Is this field an array (y/n)?n
New MutantCallResult field:00003:What is the created schema version?2
New MutantCallResult field:00003:What is the deleted schema version?0
New MutantCallResult field:00004:What is the field's name?DurationInSecs
New MutantCallResult field:00004:What is the field's type?unsigned int32
New MutantCallResult field:00004:Is this field a list (y/n)?n
New MutantCallResult field:00004:Is this field an array (y/n)?n
New MutantCallResult field:00004:What is the created schema version?2
New MutantCallResult field:00004:What is the deleted schema version?0

Voice Service Configuration

The following configuration in create_config.info configures the default voice_mo service to:
  • Use the MutantChargingCharacteristics MDC for the custom AChBillingChargingCharacteristics parameter fields in CS1 ApplyCharging operations.
  • Use the MutantCallResult MDC for the custom CallResult parameter fields CS1 ApplyChargingReport operations.
  • Use the CS1 INAP protocol.
  • Set the charging method for the CS1 INAP calls to ApplyCharging.
Camel Gateway:VCS voice_mo:Which custom MDC type should be used for the AChBillingChargingCharacteristics type for CS1 INAP for the Voice MO calls
                                        service?MutantChargingCharacteristics
Camel Gateway:VCS voice_mo:Which custom MDC type should be used for CallResult type for CS1 INAP for the Voice MO calls service?MutantCallResult
Do calls to the Voice MO calls service use the CS1 INAP protocol (y/n)?y
What charging method do you want to use for CS1 INAP calls?ApplyCharging operation

Example CS1 Dictionary Definition

The following configuration in the asn1_dictionary_base_xml_sed.extra file adds the definitions for the custom AChBillingChargingCharacteristics and CallResult parameters to the cs1 dictionary. It also maps the custom parameters to the MutantChargingCharacteristics and MutantCallResult custom MDCs.
/<dictionary dictionary_name="cs1" base_on_dictionary_name="base_inap">/ a\
\
        <mdc name="MutantChargingCharacteristics" asn1_name="MutantChargingCharacteristics" asn1_type="SEQUENCE"> \
            <mdc_field field_name="MaxDurationInSeconds" asn1_parameter_name="MaxDurationInSeconds" asn1_type="INTEGER" optional="false"> \
                <tag class="context" p_or_c="primitive" number="1"\/> \
            <\/mdc_field> \
            <mdc_field field_name="ReleaseIfDurationExceeded" asn1_parameter_name="ReleaseIfDurationExceeded" asn1_type="BOOLEAN" optional="true"> \
                <tag class="context" p_or_c="primitive" number="2"\/> \
            <\/mdc_field> \
            <mdc_field field_name="ToneRequired" asn1_parameter_name="ToneRequired" asn1_type="BOOLEAN" optional="true"> \
                <tag class="context" p_or_c="primitive" number="3"\/> \
            <\/mdc_field> \
        <\/mdc>\
\
        <mdc name="MutantCallResult" asn1_name="MutantCallResult" asn1_type="SEQUENCE"> \
            <default_tag class="universal" p_or_c="primitive" number="4"\/> \
            <mdc_field field_name="PartyToCharge" asn1_parameter_name="PartyToCharge" asn1_type="INTEGER" optional="false"> \
                <tag class="context" p_or_c="primitive" number="1"\/> \
            <\/mdc_field> \
            <mdc_field field_name="CallActive" asn1_parameter_name="CallActive" asn1_type="BOOLEAN" optional="true"> \
                <tag class="context" p_or_c="primitive" number="2"\/> \
            <\/mdc_field> \
            <mdc_field field_name="CallReleaseAtTcpExpiry" asn1_parameter_name="CallReleaseAtTcpExpiry" asn1_type="BOOLEAN" optional="true"> \
                <tag class="context" p_or_c="primitive" number="3"\/> \
            <\/mdc_field> \
            <mdc_field field_name="DurationInSecs" asn1_parameter_name="DurationInSecs" asn1_type="INTEGER" optional="false"> \
                <tag class="context" p_or_c="primitive" number="4"\/> \
            <\/mdc_field> \
        <\/mdc>
s/<mdc_field field_name="CustomChargingCharacteristics" asn1_parameter_name="aChBillingChargingCharacteristics" asn1_type="ANY" optional="false">/<mdc_field field_name="CustomChargingCharacteristics" asn1_parameter_name="aChBillingChargingCharacteristics" asn1_type="ANY" optional="false" default_mdc_name_for_any="MutantChargingCharacteristics">/g
s/<mdc_field field_name="CustomCallResult" asn1_parameter_name="CallResult" asn1_type="ANY" optional="false"/<mdc_field field_name="CustomCallResult" asn1_parameter_name="CallResult" asn1_type="ANY" optional="false" default_mdc_name_for_any="MutantCallResult"/g

Selective Updates to Convert CallResult from CS1 to CAP

The following selective updates on the CAMEL Gateway SCCP input interface convert the custom CS1 CallResult parameter in ApplyChargingReport operations received from the SSF to the CAP CallResult parameter:
SelectiveUpdate:CamelGateway:SCCP:Input:What are the element IDs?1;2
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Enter an optional description of what this element is doing?Translate MutantCallResult to CamelCallResult for TCAP CONTINUE
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:What is the container's name?MtxTcapMsg
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:What are the selection key IDs?1;2
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:SelectionKey 1:What method do you want to perform?all
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:SelectionKey 1:What is the sequence's name?main:InTcapInfo.ContinueData.ComponentList
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:What action do you want to take on a match?select
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:What method do you want to perform?equal
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:What is the sequence's name?
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:What is the field's name?selected:ExecuteData.TcapOp
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:What is the field value?36
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:What is the field mask in hex?
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:How many operations do you want to enter?4
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:What operation do you want to perform?copy_field
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:CopyField:What is the destination field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:StationToCharge
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Operation 1:CopyField:What is the source field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CustomCallResult.MutantCallResult:PartyToCharge
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Operation 2:What operation do you want to perform?copy_field
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Operation 2:CopyField:What is the destination field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CallActive
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Operation 2:CopyField:What is the source field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CustomCallResult.MutantCallResult:CallActive
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Operation 3:What operation do you want to perform?copy_field
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Operation 3:CopyField:What is the destination field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CallReleaseTcpExpiry
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Operation 3:CopyField:What is the source field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CustomCallResult.MutantCallResult:CallReleaseAtTcpExpiry
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Operation 4:What operation do you want to perform?calculate_field
SelectiveUpdate:CamelGateway:SCCP:Input:Element 1:Operation 4:CalculateField:What is the equation?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:TimeInfo.TimeIfNoTariffSwitch = selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CustomCallResult.MutantCallResult:DurationInSecs * 10
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Enter an optional description of what this element is doing?Translate MutantCallResult to CamelCallResult for TCAP END
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:What is the container's name?MtxTcapMsg
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:What are the selection key IDs?1;2
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:SelectionKey 1:What method do you want to perform?all
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:SelectionKey 1:What is the sequence's name?main:InTcapInfo.EndData.ComponentList
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:SelectionKey 2:What method do you want to perform?equal
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:SelectionKey 2:What is the sequence's name?
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:SelectionKey 2:What is the field's name?selected:ExecuteData.TcapOp
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:SelectionKey 2:What is the field value?36
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:SelectionKey 2:What is the field mask in hex?
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:How many operations do you want to enter?4
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 1:What operation do you want to perform?copy_field
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 1:CopyField:What is the destination field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:StationToCharge
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 1:CopyField:What is the source field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CustomCallResult.MutantCallResult:PartyToCharge
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 2:What operation do you want to perform?copy_field
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 2:CopyField:What is the destination field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CallActive
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 2:CopyField:What is the source field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CustomCallResult.MutantCallResult:CallActive
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 3:What operation do you want to perform?copy_field
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 3:CopyField:What is the destination field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CallReleaseTcpExpiry
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 3:CopyField:What is the source field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CustomCallResult.MutantCallResult:CallReleaseAtTcpExpiry
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 4:What operation do you want to perform?calculate_field
SelectiveUpdate:CamelGateway:SCCP:Input:Element 2:Operation 4:CalculateField:What is the equation?selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:TimeInfo.TimeIfNoTariffSwitch = selected:ExecuteData.TcapParameter.MtxAsn1Cap2CamelCallResultData:CustomCallResult.MutantCallResult:DurationInSecs * 10

Selective Updates to Convert AChBillingChargingCharacteristics from CAP to CS1

The following selective updates on the CAMEL Gateway SCCP output interface convert the CAP AChBillingChargingCharacteristics parameter, sent from MATRIXX Engine in ApplyCharging operations, to the custom CS1 AChBillingChargingCharacteristics parameter:
SelectiveUpdate:CamelGateway:SCCP:Output:What are the element IDs?1
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:Enter an optional description of what this element is doing?Copy CAP2 AC.aChBillingChargingCharacteristics to custom CS1 AC.aChBillingChargingCharacteristics
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:What is the container's name?MtxTcapMsg
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:What are the selection key IDs?1;2;3
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 1:What method do you want to perform?all
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 1:What is the sequence's name?main:OutTcapInfoList
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 1:What action do you want to take on a match?select
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 2:What method do you want to perform?all
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 2:What is the sequence's name?selected:ContinueData.ComponentList
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 2:What action do you want to take on a match?select
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 3:What method do you want to perform?equal
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 3:What is the sequence's name?
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 3:What is the field's name?selected:ExecuteData.TcapOp
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 3:What is the field value?35
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:SelectionKey 3:What is the field mask in hex?
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:How many operations do you want to enter?3
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:Operation 1:What operation do you want to perform?calculate_field
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:Operation 1:CalculateField:What is the equation?selected:ExecuteData.TcapParameter.MtxAsn1Cap2ApplyChargingParameterData:CustomChargingCharacteristics.MutantChargingCharacteristics:MaxDurationInSeconds = selected:ExecuteData.TcapParameter.MtxAsn1Cap2ApplyChargingParameterData:ChargingCharacteristics.MaxCallPeriodDuration / 10
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:Operation 2:What operation do you want to perform?copy_field
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:Operation 2:CopyField:What is the destination field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2ApplyChargingParameterData:CustomChargingCharacteristics.MutantChargingCharacteristics:ReleaseIfDurationExceeded
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:Operation 2:CopyField:What is the source field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2ApplyChargingParameterData:ChargingCharacteristics.ReleaseIfDurationExceededFlag
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:Operation 3:What operation do you want to perform?copy_field
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:Operation 3:CopyField:What is the destination field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2ApplyChargingParameterData:CustomChargingCharacteristics.MutantChargingCharacteristics:ToneRequired
SelectiveUpdate:CamelGateway:SCCP:Output:Element 1:Operation 3:CopyField:What is the source field's name?selected:ExecuteData.TcapParameter.MtxAsn1Cap2ApplyChargingParameterData:ChargingCharacteristics.Tone