SCP Messages

Introduction

The Logic Hand-Off SCP Application (LhoScpApp) uses SCP-... messages to instance to hand-off external call control of SCP processing. These messages are transmitted over the n2svcd message bus between the Logic Hand-Off SCP Application (LhoScpApp) and the Logic Application (LogicApp).

All calls in the SCP processing model are “inbound” calls, which are initiated by an InitialDP operation which is initially received by the SigtranApp, which delivers it to the LhoScpApp, which then sends SCP-HANDLE-ALEG-IDP message to the LogicApp.

So in summary:

  1. The SigtranApp handles the SCTP SIGTRAN connections and sends/receives TCAP-... messages.
  2. The LhoScpApp sends/receives TCAP-... messages, and sends/receives SCP-... messages.
  3. The LogicApp sends/receives SCP-... messages, and executes the Lua script logic.

For load-sharing purposes when executing on a multi-core environment, both the LhoScpApp and LogicApp applications are typically multiple process applications using the repeat parameter. The SigtranApp cannot be repeated because only one process may own the SCTP connection for each SCTP port number.

The SCP-... message names are divided into two categories depending on which direction the message is flowing.

a. SCP-HANDLE-... messages from LhoScpApp to LogicApp to request service logic assistance.
b. SCP-DO-... messages from LogicApp to LhoScpApp to perform service logic actions.

SCP Example Message Flow

Here is an example SIGTRAN and n2svcd message flow for a CAMEL2+ charged call (INAP Connect with no CallInformationReport) with a pre-call on-switch announcement, a single sucessful charge extension, a B-Party disconnect, and a final ReleaseCall.

Interaction with the Online Charging Server is implied but not shown.

SCP Message Flow (Out-Call)

SCP-DO-INAP-ALEG-INTERACTION

The SCP-DO-INAP-ALEG-INTERACTION is sent by the LogicApp to the LhoScpApp to request that the call perform user interaction via an on-switch ConnectToResource SRF or an external EstablishTemporaryConnect SRF.

The service logic must specify the name of the SRF to use, which must be a configured SRF in the LhoScpApplication.

If a different SRF is currently open then a prior DisconnectForwardConnection will first be sent on the SSP transaction, and any external SRF transaction will be ended according to the applicable SRF configuration.

If any detection points are still armed from a previous termination attempt then one or more prior RequestReportBCSMEvent operations will be sent on the SSP transaction in order to disarm all detection points.

If requested, a FurnishChargingInformation will be sent immediately prior to the ConnectToResource or EstablishTemporaryConnection.

After sending this message, the service logic should send no further messages until it receives one of the following messages from the LhoScpApp:

The attributes of the SCP-DO-INAP-ALEG-INTERACTION message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.fci String Specify the content of the FCIBillingChargingCharacteristics in the FurnishChargingInformation to send immediately prior to sending ConnectToResource or EstablishTemporaryConnection at the start of the interaction.
(Default = do not send FurnishChargingInformation).
.srf_name String [Required] The SRF name as configured in the LhoScpApp.
.message_id Integer A single message ID to play. This ID must be coordiated with the SRF node that is playing the announcement.
Specify exactly one of .message_id or .message_ids.
.message_ids Array of Integer An array of message IDs to play. These IDs must be coordiated with the SRF node that is playing the announcement.
Specify exactly one of .message_id or .message_ids.
Playing of multiple message IDs is not compatible with `.variables`.
.language String Specifies an SRF language name as configured in the LhoScpApp.
This will be mapped to the associated numeric ID and sent to the SRF using the associated mechanism.
The language is used to select the preferred audio file, and to encode variable parts such as numbers and dates.
(Default = do not pass language to the SRF).
.repetition Integer Sets the `informationToSend.inbandInfo.numberOfRepetitions` sent to the SRF.
Interpretation of this value is specific to the SRF.
(Default = do not specifiy this value to the SRF).
.duration Integer Sets the `informationToSend.inbandInfo.duration` sent to the SRF.
Interpretation of this value is specific to the SRF.
(Default = do not specifiy this value to the SRF).
.interval Integer Sets the `informationToSend.inbandInfo.interval` sent to the SRF.
Interpretation of this value is specific to the SRF.
(Default = do not specifiy this value to the SRF).
.variables Array of Object Each variable part Object must specify exactly one of the indicated options.
Some SRFS may place a limit in the number of variable parts.
(Default = do not supply variable parts to the SRF).
.integer Positive Integer Indicates that the variable part should be "spoken" as an natural language integer by the SRF.
The SRF may place an upper bound on the supported integer range. Negative numbers are not supported.
The natural algorithm will use the preferred, or the default language.
.number_digits Digit String Indicates that the variable part should be "spoken" as a natural language digit string by the SRF.
The SRF may limit the characters supported in this string. Typically [0-9][A-F] and "*" and "#" are supported.
The natural algorithm will use the preferred, or the default language.
.date_yymmdd String Indicates that the variable part should be "spoken" as a natural language date string by the SRF.
The string is "YYMMDD" six-digits. The handling of century is SRF-dependent.
The natural algorithm will use the preferred, or the default language.
.date_yyyymmdd String Indicates that the variable part should be "spoken" as a natural language date string by the SRF.
The string is "YYYYMMDD" eight-digits.
The natural algorithm will use the preferred, or the default language.
.time_hhmm String Indicates that the variable part should be "spoken" as a natural language time string by the SRF.
The string is "HHMM" four-digits. The handling of am/pm, noon, and midnight is SRF-dependent.
The natural algorithm will use the preferred, or the default language.
.price_digits String Indicates that the variable part should be "spoken" as a natural language decimal price string by the SRF.
The string is "[DDDDDD]CC" from two to eight digits. The handling of zero cents is SRF-dependent.
The natural algorithm will use the preferred, or the default language.
.prompt 1 Set this field to 1 if you wish the interaction to collect user input digits.
(Default = do not collect user input digits).
.min_num_digits 1 - 32 The minimum number of digits which the SRF will be instructed to collect.
This field is relevant only when prompt is specified.
[Required] This required when prompt is specified.
.max_num_digits 1 - 32 The maximum number of digits which the SRF will be instructed to collect.
This value must be greater than or equal to min_num_digits.
This field is relevant only when prompt is specified.
[Required] This required when prompt is specified.
.first_digit_timeout Positive Integer The number of seconds allowed between completing the announcement and entering the first digit.
This field is relevant only when prompt is specified.
(Default = determined by the SRF).
.inter_digit_timeout Positive Integer The number of seconds allowed between entering one digit and entering the subsequent digit.
This field is relevant only when prompt is specified.
(Default = determined by the SRF).
.end_digit #*A-F0-9 The digit which specifies End of Input.
This field is relevant only when prompt is specified.
(Default = determined by the SRF).
.cancel_digit #*A-F0-9 The digit which specifies Cancel Input.
This field is relevant only when prompt is specified.
(Default = determined by the SRF).
.private_digits 0 / 1 Indicates that the collected digits are private, e.g. PIN entry, and the SCP should not log them to EDR.
This field is relevant only when prompt is specified.
Note that this disables only the logging of the digits by the SCP. The SRF is a separate, independent node element and this flag does not prevent the SRF from logging the collected digits.
(Default = the default behavior configured for the application).
.interruptable 0 / 1 Informs the SRF that the prompt should be interrupted by user input.
This field is relevant only when prompt is specified.
(Default = the prompt may be interrupted by the user).

SCP-DO-INAP-BLEG-TERMINATION-FINAL

The SCP-DO-INAP-BLEG-TERMINATION-FINAL is sent by the LogicApp to the LhoScpApp to request that a B-Leg be set-up by sending INAP Continue or INAP Connect on the SSP transaction, with optional FurnishChargingInformation and/or SendChargingInformation.

There will be no RequestReportBCSM and no CallInformationRequest.

If an SRF is currently open then a prior DisconnectForwardConnection will be sent on the SSP transaction, and any external SRF transaction will be ended according to the applicable SRF configuration.

No further SCP-... messages should be exchanged after this message is sent.

The attributes of the SCP-DO-INAP-BLEG-TERMINATION-FINAL message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.fci String Specify the content of the FCIBillingChargingCharacteristics in the FurnishChargingInformation to send.
(Default = do not send FurnishChargingInformation).
.sci String Specify the content of the sCIBillingChargingCharacteristics in the SendChargingInformation to send.
(Default = do not send SendChargingInformation).
.address_digits Digit String Specify the normalised destinationRoutingAddress digits (only 0-9A-F).
The applicable configured 'called_party' denormalisation on the LhoScpApp will be applied.
If this field is present, then INAP Connect will be used, else INAP Continue is sent.
.orig_called_digits Digit String This field is only relevant when address_digits is specified.
Specify the normalised destinationRoutingAddress digits (only 0-9A-F).
The applicable configured 'calling_party' denormalisation on the LhoScpApp will be applied.
(Default = not present).
.copy_original_called 0 / 1 This field is only relevant when address_digits is specified and when orig_called_digits is not specified.
Set to 1 if the originally-received originalCalledPartyID, should be included if available.
(Default = 0, don't include received original called party).
.redirecting_digits Digit String This field is only relevant when address_digits is specified.
Specify the normalised redirectingPartyID digits (only 0-9A-F).
The applicable configured 'calling_party' denormalisation on the LhoScpApp will be applied.
(Default = not present).
.copy_redirecting_party 0 / 1 This field is only relevant when address_digits is specified and when redirecting_digits is not specified.
Set to 1 if the originally-received redirectingPartyId, should be included if available.
(Default = 0, don't include received redirecting party).
.redirection_info Object This field is only relevant when address_digits is specified.
(Default = not present).
.copy_redirection_info 0 / 1 This field is only relevant when address_digits is specified and when redirection_info is not specified.
Set to 1 if the originally-received redirectionInformation, should be included if available.
(Default = 0, don't include received redirection information).
.orig_reason 0 - 15 Specify an explicit redirection information original reason.
(Default = 0).
.indicator 0 - 7 Specify an explicit redirection information indicator.
(Default = 0).
.reason 0 - 15 Specify an explicit redirection information reason.
(Default = 0).
.national_use 0 / 1 Specify an explicit redirection information national use value.
(Default = 0).
.counter 0 - 7 Specify an explicit redirection information counter.
(Default = 1).

SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT

The SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT is sent by the LogicApp to the LhoScpApp to request that a B-Leg B-Leg be set-up by sending INAP Continue or INAP Connect on the SSP transaction, with optional FurnishChargingInformation and/or SendChargingInformation.

There are three very distinct modes supported for this termination, each with their own message sequence and parameters. The modes are:

A RequestReportBCSMEvent will always be sent to arm for the Answer, NoAnswer, Busy, RouteSelectFailure, and Abandon event detection points.

In addition, the Disconnect EDPs are armed in the following cases:

Note that CallInformationReport is only supported with Monitored or Charged termination types.

If an SRF is currently open then a prior DisconnectForwardConnection will be sent on the SSP transaction, and any external SRF transaction will be ended according to the applicable SRF configuration.

After sending this message, the service logic should send no further messages until it receives one of the following messages from the LhoScpApp:

The attributes of the SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.no_answer_timeout Integer Specify the value to send in the dPSpecificCriteria.applicationTimer.
For CAMEL1 MSCs this value is used for an internal SCP NoAnswer timer.
This value must not exceed the configured possible maximum value for the SSP model.
(Default = use the default configured for the SSP model, if any).
.fci String Specify the content of the FCIBillingChargingCharacteristics in the FurnishChargingInformation to send.
(Default = do not send FurnishChargingInformation).
.sci String Specify the content of the sCIBillingChargingCharacteristics in the SendChargingInformation to send.
(Default = do not send SendChargingInformation).
.address_digits Digit String Specify the normalised destinationRoutingAddress digits (only 0-9A-F).
The applicable configured 'called_party' denormalisation on the LhoScpApp will be applied.
If this field is present, then INAP Connect will be used, else INAP Continue is sent.
.orig_called_digits Digit String This field is only relevant when address_digits is specified.
Specify the normalised destinationRoutingAddress digits (only 0-9A-F).
The applicable configured 'calling_party' denormalisation on the LhoScpApp will be applied.
(Default = not present).
.copy_original_called 0 / 1 This field is only relevant when address_digits is specified and when orig_called_digits is not specified.
Set to 1 if the originally-received originalCalledPartyID, should be included if available.
(Default = 0, don't include received original called party).
.redirecting_digits Digit String This field is only relevant when address_digits is specified.
Specify the normalised redirectingPartyID digits (only 0-9A-F).
The applicable configured 'calling_party' denormalisation on the LhoScpApp will be applied.
(Default = not present).
.copy_redirecting_party 0 / 1 This field is only relevant when address_digits is specified and when redirecting_digits is not specified.
Set to 1 if the originally-received redirectingPartyId, should be included if available.
(Default = 0, don't include received redirecting party).
.redirection_info Object This field is only relevant when address_digits is specified.
(Default = not present).
.copy_redirection_info 0 / 1 This field is only relevant when address_digits is specified and when redirection_info is not specified.
Set to 1 if the originally-received redirectionInformation, should be included if available.
(Default = 0, don't include received redirection information).
.orig_reason 0 - 15 Specify an explicit redirection information original reason.
(Default = 0).
.indicator 0 - 7 Specify an explicit redirection information indicator.
(Default = 0).
.reason 0 - 15 Specify an explicit redirection information reason.
(Default = 0).
.national_use 0 / 1 Specify an explicit redirection information national use value.
(Default = 0).
.counter 0 - 7 Specify an explicit redirection information counter.
(Default = 1).
.bparty_beep Object Specify a simple Boolean value true to request that a post-answer B-Party beep be played (if supported).
(Default = do not request B-Party Beep).
.play Boolean Specifies that the beep should be played.
(Default = true when the bparty_beep container is present).
.id Integer Override the default announcement ID.
(Default = use the default configured for the SSP model).
.monitored 1 Set this flag to indicated that the Monitored Termination type is to be used.
(Default = do not use the Monitored Termination type).
.charged 1 Set this flag to indicated that the Charged Termination type is to be used.
(Default = do not use the Charged Termination type).
.max_call_secs Integer When the call is being terminated using the Monitored or Charged Termination type, this is the requested hard-cap maximum permitted talk-time (in seconds).
(Default = default maximum call duration for the applicable SSP model).
.monitor_interval_secs Integer When the call is being terminated using the Monitored Termination type, this is the requested monitor report interval (in seconds).
(Default = default monitor report interval for the applicable SSP model).
.grant_secs Integer [Required for Charged] When the call is being terminated using the Charged termination type, this is the grant time (in seconds).
.release_at_expiry 0 / 1 Is this the last grant? Should the call (both legs) be released when this grant is entirely exhausted.
(Default = 0, this is not the only grant).
.release_tone 0 / 1 Whether to play a tone or not. Overrides the [SSP model definition](../config/common_scp/ssps.html#ssp-models) default_release_tone.
Only applicable if release_at_expiry is set.
(Default = 0, tone is controlled by the SSP model).
.cause 0 - 127 Specify an explicit release cause to when releasing the call at expiry of the grant time.
(Default = default release cause for the applicable SSP model).
.release_tone 0 / 1 Should we set the release tone flag (if supported) when performing this final grant.
(Default = default release tone flag value for the applicable SSP model).

SCP-DO-INAP-EXTENSION-ALLOW

The SCP-DO-INAP-EXTENSION-ALLOW message is sent from the LogicApp to the LhoScpApp after the service logic receives SCP-HANDLE-CHARGE-REPORT-ONGOING.

This message indicates that additional talk-time is granted, and the call should continue.

The message may optionally specify that this is the final grant and that the call should be released automatically when this grant expires.

After sending this message, the service control logic will be in the same “charging” state as after the receipt of SCP-HANDLE-BLEG-ANSWER-ONGOING, and should wait for one of the following messages to be received.

However, the service logic may send the following force-shutdown SCP control messages:

The attributes of the SCP-DO-INAP-EXTENSION-ALLOW message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.grant_secs Integer [Required] The total addtional talk-time (in seconds) to grant to the network.
.release_at_expiry 0 / 1 Is this the final grant? Should the call (both legs) be released when this grant is entirely exhausted.
(Default = this is not the final grant).
.cause 0 - 127 Specify an explicit release cause to when releasing the call at expiry of the grant time.
(Default = default release cause for the applicable SSP model).
.release_tone 0 / 1 Should we set the release tone flag (if supported) when performing this final grant.
(Default = default release tone flag value for the applicable SSP model).

SCP-DO-INAP-EXTENSION-DENY

The SCP-DO-INAP-EXTENSION-DENY message is sent from the LogicApp to the LhoScpApp after the service logic receives SCP-HANDLE-CHARGE-REPORT-ONGOING.

This message indicates that additional talk-time is denied, and the call should be released immediately. The service logic should wait for one of the following SCP control messages to be received.

The attributes of the SCP-DO-INAP-EXTENSION-DENY message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.cause 0 - 127 Specify an explicit release cause to when releasing the call.
(Default = default release cause for the applicable SSP model).

SCP-DO-INAP-RELEASE-CALL-FINAL

The SCP-DO-INAP-RELEASE-CALL-FINAL is sent by the LogicApp to the LhoScpApp to request that the call be ended by sending INAP ReleaseCall on the SSP transaction.

If an SRF is currently open then a prior DisconnectForwardConnection will be sent on the SSP transaction, and any external SRF transaction will be ended according to the applicable SRF configuration.

No further SCP-... messages should be exchanged after this message is sent.

The attributes of the SCP-DO-INAP-RELEASE-CALL-FINAL message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.cause 0 - 127 Specify an explicit release cause.
(Default = default release cause for the applicable SSP model).

SCP-DO-SHUTDOWN

The SCP-DO-SHUTDOWN is sent by the LogicApp to the LhoScpApp to indicate that service logic processing has failed unexpectedly and cannot continue. The LhoScpApp will perform any necessary TCAP transaction closure, typically using TCAP_ABORT. The LhoScpApp will raise a warning, in addition to the service logic warning which usually arises.

No further SCP-... messages should be exchanged after this message is sent.

The attributes of the SCP-DO-SHUTDOWN message are:

Field Type Description
success 0 [Required] Indicator that the logic was not successful.
error String [Required] A descriptive error message to record in the warning.

SCP-DO-TCAP-SSP-ABORT-FINAL

The SCP-DO-TCAP-SSP-ABORT-FINAL is sent by the LogicApp to the LhoScpApp to request that the call be deliberately ended using TCAP_ABORT on the SSP transaction. Any open external SRF transction will also be ended according to the applicable SRF configuration.

No further SCP-... messages should be exchanged after this message is sent.

The attributes of the SCP-DO-TCAP-SSP-ABORT-FINAL message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.u_info_0_octets String Specify content for the TCAP_ABORT user-information[0].encoding.octet-aligned information element.
By convention this is a brief error description.

SCP-HANDLE-ALEG-IDP

The SCP-HANDLE-ALEG-IDP message is sent from the LhoScpApp to the LogicApp as the first message in all Logic Hand-Off SCP calls. It occurs when the INAP/CAMEL InitialDP is received. The LhoScpApp is configured with the name of the LogicApp to which it should send the SCP-HANDLE-ALEG-IDP.

When the SCP-HANDLE-ALEG-IDP arrives at the LogicApp, there must be a configured LhoScpLuaService present to receive and process it. The LhoScpLuaService will examine the request contents and compare that to its configured triggers list (or database equivalent) in order to determine which Lua script to execute.

The actual logic for selecting and loading the Lua script depends on the specific service. The matching and loading will typically come from a database, e.g. for the N2ACD-SCP implementation for Toll-Free SCP call handling.

After receiving SCP-HANDLE-ALEG-IDP, the call is “controlled” by the service logic.
The service logic must (within the service logic timer) send one of the following SCP control messages:

The attributes of the SCP-HANDLE-ALEG-IDP message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.ssp_inap String [Required] INAP/CAMEL variant.
The name of the INAP/CAMEL variant for the selected SSP Model handling this call.
E.g. camel2. See the list of supported INAP/CAMEL variants.
.supported Object [Required] Container for supported feature flags.
.release_tone 0 / 1 [Required] Does the SSP Model support setting of `release_tone`.
If this flag is not = 1 then service logic attempts to set `release_tone` in charged call terminations or extensions will result in call-processing failure.
.fci 0 / 1 [Required] Does the SSP Model support reception of FurnishChargingInformation (FCI).
If this flag is not = 1 then service logic attempts to send FCI content in call terminations will result in call-processing failure.
.sci 0 / 1 [Required] Does the SSP Model support reception of SendChargingInformation (SCI).
If this flag is not = 1 then service logic attempts to send SCI content in call terminations will result in call-processing failure.
.interaction 0 / 1 [Required] Does the SSP Model support use of interaction using PlayAnnouncement or PromptAndCollectUserInformation.
If this flag is not = 1 then service logic attempts to perform interaction during the call control will result in call-processing failure.
.call_information 0 - 31 [Required] Which information does the SSP Model support reporting via CallInformationReport (CIR).
Bitmask:
  • 1 = call attempt elapsed time (CAET); "ring time"
  • 2 = call stop time (CST)
  • 4 = call connected elapsed time (CCET); "talk time"
  • 8 = called address
  • 16 = release cause
If this field value = 0 then service logic attempts to use CIR features in call terminations or extensions will result in call-processing failure.
.activity_test 0 / 1 [Required] Does the SSP Model support the use of gap-filling ActivityTest.
If this flag is not = 1 then service logic attempts to enable gap-filling ActivityTest in call terminations or extensions will result in call-processing failure.
.monitored 0 / 1 Are monitored calls supported for this SSP.
This will be true if and only if the SSP is configured as supporting ActivityTest.
.charged 0 / 1 Are charged calls supported for this SSP.
This will be true if and only if the SSP is configured as supporting ApplyCharging.
.remote_sccp Object [Required] The address of the SCCP node that triggered the call to us.
This is the actual on-the-wire address extracted from the TCAP BEGIN.
The remote address typically does not change during the transaction. Yes, in theory the far-end may perform some sort of service handover but in practice this would be very unusual behavior.
.ri 0 / 1 [Required] Routing Indicator.
1 = route on PC + SSN, 0 = Route on GT)
.pc Integer Point Code.
This field is present if and only if the address specifies a point code.
.ssn Integer Sub-System Number.
This field is present if and only if the address specifies a sub-system number.
.gt_digits Hex Digits Hex Digits for Global Title address.
This field is present if and only if the address specifies a global title.
.gt_noa Integer Global Title Nature of Address (0-127).
This field is present if and only if the address specifies a global title. (Default = 0)
.gt_np Integer Global Title Numbering Plan (0-7).
This field is present if and only if the address specifies a global title. (Default = 1, E.164)
.gt_tt Integer Global Title Translation Type (0-255).
This field is present if and only if the address specifies a global title.
.local_sccp Object [Required] The address of the SCCP node that received the call trigger.
This is the actual on-the-wire address extracted from the TCAP BEGIN.
In practice this will typically be the load-sharing "virtual" address, and when the SigtranApp continues the transaction, it will replace this address with a different address which is specifically assigned only to this particular SCP node.
.ri 0 / 1 [Required] Routing Indicator.
1 = route on PC + SSN, 0 = Route on GT)
.pc Integer Point Code.
This field is present if and only if the address specifies a point code.
.ssn Integer Sub-System Number.
This field is present if and only if the address specifies a sub-system number.
.gt_digits Hex Digits Hex Digits for Global Title address.
This field is present if and only if the address specifies a global title.
.gt_noa Integer Global Title Nature of Address (0-127).
This field is present if and only if the address specifies a global title. (Default = 0)
.gt_np Integer Global Title Numbering Plan (0-7).
This field is present if and only if the address specifies a global title. (Default = 1, E.164)
.gt_tt Integer Global Title Translation Type (0-255).
This field is present if and only if the address specifies a global title.
.call_trigger ORIG / TERM / FWD [Required] Indicator of the call trigger.
This distinguishes between originating, terminating, and forwarded call triggers.
.normalised_calling_party Digit String [Required] (Normalised) Calling Party Number address digits.
This is the calling party address digits after any configured 'calling_party' normalisation rules have been applied.
It is determined from the callingPartyNumber element of the InitialDP.
It is guaranteed to contain only 0-9A-F digits.
.normalised_called_party Digit String [Required] (Normalised) Called Party (BCD) Number address digits.
This is the called party address digits after any configured 'called_party' or 'called_party_bcd' normalisation rules have been applied.
It is determined from the calledPartyBCDNumber or calledPartyNumber element of the InitialDP.
It is guaranteed to contain only 0-9A-F digits.
.normalised_redirecting_party Digit String (Normalised) Redirecting Party ID address digits.
This is the redirecting party address digits after any configured 'calling_party' normalisation rules have been applied.
It is determined from the redirectingPartyID element of the InitialDP, if present.
It is guaranteed to contain only 0-9A-F digits.
.normalised_original_called_party Digit String (Normalised) Original Called Party address digits.
This is the original called party address digits after any configured 'called_party' normalisation rules have been applied.
It is determined from the originalCalledPartyID element of the InitialDP, if present.
It is guaranteed to contain only 0-9A-F digits.
.normalised_logical_party Digit String [Required] (Normalised) Logical Party address digits.
This field contains the normalised address digits for the logical subscriber. The logical subscriber is the party that would be charged for a call.
When call_trigger is ORIG this will be the same as normalised_calling_party.
When call_trigger is FWD this will be the same as normalised_redirecting_party.
When call_trigger is TERM this will be the same as normalised_called_party.
It is guaranteed to contain only 0-9A-F digits.
.normalised_other_party Digit String [Required] (Normalised) Other Party address digits.
This field contains the normalised address digits for the party who received the call from a charging perspective.
When call_trigger is ORIG this will be the same as normalised_called_party.
When call_trigger is FWD this will be the same as normalised_called_party.
When call_trigger is TERM this will be the same as normalised_calling_party.
It is guaranteed to contain only 0-9A-F digits.
.forwarding_pending 1 This field is present and 1 if and only if the gsm-ForwardingPending or callForwardingSS-Pending element is present in the InitialDP.
.pending_tn Digit String [Required]
The normalised pending termination number inferred from the InitialDP.
.initialdp_arg Object [Required] Complete decoded InitialDP structure.

SCP-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING

The SCP-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING message is sent from the LhoScpApp to the LogicApp as a response to SCP-DO-INAP-ALEG-INTERACTION if the interaction completes with the A-Leg still active.

After receiving SCP-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING, the call is still “controlled” by the service logic. The service logic must (within the service logic timer) send one of the following SCP control messages:

The attributes of the SCP-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.error String Note that .error and .digits are mutually exclusive.
This field is present if and only if the SRF indicated a problem playing the announcement. This could relate to the message ID not being known on the platform, or could indicate a problem with the language or the variable parts not being supported.
When prompting for digits input, this field is present if the SRF could not collect sufficient digits prior to reaching the digit entry timeout limit.
When present, the service logic should assume that the user did not successfully interact with the SRF.
Interrupting an interruptable announcement does not cause this field to be set.
.digits #*A-F0-9 Note that .error and .digits are mutually exclusive.
This field contains the digits successfully retrieved by the user during the interaction.
In theory, the SRF should return no digits at all in the case where insufficient digits are entered. However, that behavior can vary according to SRF manufacturer, and the service logic should always validate the number of digits returned.

SCP-HANDLE-ALEG-INTERACTION-ABANDONED-FINAL

The SCP-HANDLE-ALEG-INTERACTION-ABANDONED-FINAL message is sent from the LhoScpApp to the LogicApp as a response to SCP-DO-INAP-ALEG-INTERACTION if the interaction completes with the A-Leg no longer active.

After receiving SCP-HANDLE-ALEG-TEARDOWN-FINAL, the call is no longer “controlled” by the service logic.

No further SCP-... messages should be exchanged after this message is sent.

The attributes of the SCP-HANDLE-ALEG-INTERACTION-ABANDONED-FINAL message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.reason String [Required] A brief description of the reason for the abandonment of the session.
This string is useful for debugging SRF behavior but is not generally relevant to the service logic.
.error String Note that .error and .digits are mutually exclusive.
Note that .error may be present even when .reason is present.
This field is present if and only if the SRF indicated a problem playing the announcement. This could relate to the message ID not being known on the platform, or could indicate a problem with the language or the variable parts not being supported.
When prompting for digits input, this field is present if the SRF could not collect sufficient digits prior to reaching the digit entry timeout limit.
When present, the service logic should assume that the user did not successfully interact with the SRF.
Interrupting an interruptable announcement does not cause this field to be set.
.digits #*A-F0-9 Note that .error and .digits are mutually exclusive.
This field contains the digits successfully retrieved by the user during the interaction.
In theory, the SRF should return no digits at all in the case where insufficient digits are entered. However, that behavior can vary according to SRF manufacturer, and the service logic should always validate the number of digits returned.

Note that it is possible to have digits returned even if the interaction was abandoned. This may happen with some SRF behaviors, and/or some timing conditions.

SCP-HANDLE-ALEG-TEARDOWN-FINAL

The SCP-HANDLE-ALEG-TEARDOWN-FINAL message is sent from the LhoScpApp to the LogicApp as a response to SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT in two specific cases:

After receiving SCP-HANDLE-ALEG-TEARDOWN-FINAL, the call is no longer “controlled” by the service logic.

No further SCP-... messages should be exchanged after this message is sent.

The attributes of the SCP-HANDLE-ALEG-TEARDOWN-FINAL message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.edp_name String [Required] The name of the Event Detection Point which fired.
One of: oAbandon_leg1, tAbandon_leg1, oDisconnect_leg1, or tDisconnect_leg1.
.ring_dsm Integer The ring-time (in deci-seconds) as measured by us, present if and only if the call was answered.
This is the same value as originally reported in SCP-HANDLE-BLEG-ANSWER-ONGOING or SCP-HANDLE-BLEG-ANSWER-FINAL.
.talk_ds_total Integer The total talk-time (in deci-seconds) reported by the network.
This value is present only if the Termination type was Charged, and the call was answered.
.talk_ds_last Integer The portion of the talk-time (in deci-seconds) used from the last approved grant.
This value is present only if the Termination type was Charged, and the call was answered.
.talk_dsm_total Integer The total measured talk time (in deci-seconds) from receiving answer notification to receiving disconnect notification.
This value is present only if the Termination type was Charged or Montored, and the call was answered.
.cause Integer The value of the received tBusySpecificInfo/tBusyCause_cause OR tNoAnswerSpecificInfo/tNoAnswerCause if received.
.forward 1 Present with value 1 iff tBusySpecificInfo/forwardedCall OR tNoAnswerSpecificInfo/forwardedCall was received.
.cir Object Container for any returned CallInformationReport fields which were received.
.callAttemptElapsedTimeValue Integer The value from the received CallInformationReport.
.callStopTimeValue_yyyymmddhhmmss String The 14-character value from the received CallInformationReport in YYYYMMDDHHMMSS format.
.callConnectedElapsedTimeValue Integer The value from the received CallInformationReport.
.calledAddressValue_digits Hex Digits The value from the received CallInformationReport.
.calledAddressValue_noa Integer The value from the received CallInformationReport.
.calledAddressValue_nqi Integer The value from the received CallInformationReport.
.calledAddressValue_ni Integer The value from the received CallInformationReport.
.calledAddressValue_npi Integer The value from the received CallInformationReport.
.calledAddressValue_pri Integer The value from the received CallInformationReport.
.calledAddressValue_si Integer The value from the received CallInformationReport.
.releaseCauseValue_cause Integer The value from the received CallInformationReport.

SCP-HANDLE-BLEG-ANSWER-FINAL

The SCP-HANDLE-BLEG-ANSWER-FINAL message is sent from the LhoScpApp to the LogicApp as a response to SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT if and when the termination attempt is Answered (i.e. the oAnswer or tAnswer EDP fires) but the call is not monitored or charged.

After receiving SCP-HANDLE-BLEG-ANSWER-FINAL, the call is no longer “controlled” by the service logic.

No further SCP-... messages should be exchanged after this message is sent.

The attributes of the SCP-HANDLE-BLEG-ANSWER-FINAL message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.edp_name String [Required] The name of the Event Detection Point which fired.
One of: oAnswer_leg2, or tAnswer_leg2.
.ring_dsm Integer [Required] The ring-time (in deci-seconds) as measured by us.
This is the time between us sending the Connect or Continue and us receiving the EventReportBCSM (Answer).

SCP-HANDLE-BLEG-ANSWER-ONGOING

The SCP-HANDLE-BLEG-ANSWER-ONGOING message is sent from the LhoScpApp to the LogicApp as a response to SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT if and when the termination attempt is Answered (i.e. the oAnswer or tAnswer EDP fires) when the call is monitored or charged.

The service does not have control over the call at this time, and should instead wait for one of the following messages to be received.

However, the service logic may send the following force-shutdown SCP control messages:

The attributes of the SCP-HANDLE-BLEG-ANSWER-ONGOING message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.edp_name String [Required] The name of the Event Detection Point which fired.
One of: oAnswer_leg2, or tAnswer_leg2.
.ring_dsm Integer [Required] The ring-time (in deci-seconds) as measured by us.
This is the time between us sending the Connect or Continue and us receiving the EventReportBCSM (Answer).
.max_call_secs Integer When the call is being terminated using the Monitored or Charged termination type, this returned value is the hard-cap maximum permitted talk-time (in seconds).
If the service logic requested a specific maximum talk time, then this will be that value, adjusted for any boundary constraints.
If the service logic did not request a specific value, then this will be the configured applicable default value for the SSP model.
.monitor_interval_secs Integer When the call is being terminated using the Monitored termination type, this returned value is monitor reporting interval (in seconds).
If the service logic requested a specific monitor reporting interval, then this will be that value, adjusted for any boundary constraints.
If the service logic did not request a specific value, then this will be the configured applicable default value for the SSP model.
.grant_secs Integer When the call is being terminated using the Charged termination type, this returned value is grant time (in seconds).
This is the value as requested by the service logic, adjusted for any boundary constraints.

SCP-HANDLE-BLEG-TEARDOWN-ONGOING

The SCP-HANDLE-BLEG-TEARDOWN-ONGOING message is sent from the LhoScpApp to the LogicApp as a response to SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT in two specific cases:

After receiving SCP-HANDLE-BLEG-TEARDOWN-ONGOING, the call is still “controlled” by the service logic, in a mode essentially equivalent to the control available when the script was originally initiated by the receipt of InitialDP.

The service logic must (within the service logic timer) send one of the following SCP control messages:

The attributes of the SCP-HANDLE-BLEG-TEARDOWN-ONGOING message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.edp_name String [Required] The name of the Event Detection Point which fired.
One of: oCalledPartyBusy_leg2, tBusy_leg2, oNoAnswer_leg2, tNoAnswer_leg2, routeSelectFailure_leg2, oDisconnect_leg2, or tDisconnect_leg2.
.ring_dsm Integer The ring-time (in deci-seconds) as measured by us, present if and only if the call was answered.
This is the same value as originally reported in SCP-HANDLE-BLEG-ANSWER-ONGOING or SCP-HANDLE-BLEG-ANSWER-FINAL.
.talk_ds_total Integer The total talk-time (in deci-seconds) reported by the network.
This value is present only if the Termination type was Charged, and the call was answered.
.talk_ds_last Integer The portion of the talk-time (in deci-seconds) used from the last approved grant.
This value is present only if the Termination type was Charged, and the call was answered.
.talk_dsm_total Integer The total measured talk time (in deci-seconds) from receiving answer notification to receiving disconnect notification.
This value is present only if the Termination type was Charged or Montored, and the call was answered.
.cause Integer The value of the received tBusySpecificInfo/tBusyCause_cause OR tNoAnswerSpecificInfo/tNoAnswerCause if received.
.forward 1 Present with value 1 iff tBusySpecificInfo/forwardedCall OR tNoAnswerSpecificInfo/forwardedCall was received.
.cir Object Container for any returned CallInformationReport fields which were received.
This object has the same sub-field values as described for SCP-HANDLE-ALEG-TEARDOWN-FINAL.

SCP-HANDLE-MONITOR-REPORT-ONGOING

The SCP-HANDLE-MONITOR-REPORT-ONGOING message is sent from the LhoScpApp to the LogicApp periodically as notification that a Termination (Monitored) call is still in progress.

Before sending this message, the LhoSipApp will use ActivityTest/ActivityTestResult to validate that the call is still active.

Receiving SCP-HANDLE-MONITOR-REPORT-ONGOING does not change the state of the service control of the call. No action is required by the service when receiving this message. However, the service logic may force-interrupt the call by sending one of the following SCP control messages:

The attributes of the SCP-HANDLE-MONITOR-REPORT-ONGOING message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.monitored_secs Integer The total time (in seconds) which the call has been in progress at the time of this monitor report.

SCP-HANDLE-CHARGE-REPORT-ONGOING

The SCP-HANDLE-CHARGE-REPORT-ONGOING message is sent from the LhoScpApp to the LogicApp as notification that a Termination (Charged) call is still in progress, and that it has now used all of the granted time allocation.

After receiving SCP-HANDLE-CHARGE-REPORT-ONGOING, the service logic should send one of the following SCP control messages:

However the service logic may also perform a force-shutdown by sending one of the following SCP control messages:

The attributes of the SCP-HANDLE-CHARGE-REPORT-ONGOING message are:

Field Type Description
scp Object [Required] The SCP control parameters for the message.
.talk_ds_total Integer The total talk-time (in deci-seconds) reported by the network.
.talk_ds_last Integer The portion of the talk-time (in deci-seconds) used from the last approved grant.
In general this will be equal to the last grant time.

SCP-HANDLE-SHUTDOWN

The SCP-HANDLE-SHUTDOWN is sent by the LhoScpApp to the LogicApp to indicate that call processing has failed unexpectedly and cannot continue. The LhoScpApp has perform any necessary TCAP transaction closure, typically using TCAP_ABORT, and has raised a warning.

No further SCP-... messages should be exchanged after this message is sent.

The attributes of the SCP-HANDLE-SHUTDOWN message are:

Field Type Description
success 0 [Required] Indicator that the call processing was not successful.
error String [Required] The descriptive error message raised in the warning.