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:
- The SigtranApp handles the SCTP SIGTRAN connections and sends/receives TCAP-...messages.
- The LhoScpApp sends/receives TCAP-...messages, and sends/receivesSCP-...messages.
- 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-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:
- SCP-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING
- SCP-HANDLE-ALEG-INTERACTION-ABANDONED-FINAL
- SCP-HANDLE-SHUTDOWN
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 FCIBillingChargingCharacteristicsin theFurnishChargingInformationto send immediately prior to sendingConnectToResourceorEstablishTemporaryConnectionat
      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_idor.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_idor.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 1if 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 promptis specified.[Required] This required when promptis 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 promptis specified.[Required] This required when promptis 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 promptis 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 promptis specified.(Default = determined by the SRF). | 
| .end_digit | #*A-F0-9 | The digit which specifies End of Input. This field is relevant only when promptis specified.(Default = determined by the SRF). | 
| .cancel_digit | #*A-F0-9 | The digit which specifies Cancel Input. This field is relevant only when promptis 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 promptis 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 promptis 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 FCIBillingChargingCharacteristicsin theFurnishChargingInformationto send.(Default = do not send FurnishChargingInformation). | 
| .sci | String | Specify the content of the sCIBillingChargingCharacteristicsin theSendChargingInformationto send.(Default = do not send SendChargingInformation). | 
| .address_digits | Digit String | Specify the normalised destinationRoutingAddressdigits (only0-9A-F).The applicable configured 'called_party' denormalisation on the LhoScpApp will be applied. If this field is present, then INAP Connectwill be used, else INAPContinueis sent. | 
| .orig_called_digits | Digit String | This field is only relevant when address_digitsis specified.Specify the normalised destinationRoutingAddressdigits (only0-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_digitsis specified and whenorig_called_digitsis not specified.Set to 1if the originally-receivedoriginalCalledPartyID,
      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_digitsis specified.Specify the normalised redirectingPartyIDdigits (only0-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_digitsis specified and whenredirecting_digitsis not specified.Set to 1if the originally-receivedredirectingPartyId,
      should be included if available.(Default = 0, don't include received redirecting party). | 
| .redirection_info | Object | This field is only relevant when address_digitsis specified.(Default = not present). | 
| .copy_redirection_info | 0/1 | This field is only relevant when address_digitsis specified and whenredirection_infois not specified.Set to 1if the originally-receivedredirectionInformation,
      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:
- “Attempt” - The default type. If the call is answered then call control is over.
- “Monitored” - For Monitored Termination type, the call will be supervised with ActivityTestand optionalCallInformationReport.
- “Charged” - For Charged Termination type, the call will be charge-controlled with ApplyChargingand optionalCallInformationReport.
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:
- B-Party Beep is requested.
- The Monitored Termination type is used.
- The Charged Termination type is used.
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:
- SCP-HANDLE-ALEG-TEARDOWN-FINAL
- SCP-HANDLE-BLEG-ANSWER-FINAL(Attempt)
- SCP-HANDLE-BLEG-ANSWER-ONGOING(Monitored or Charged)
- SCP-HANDLE-BLEG-TEARDOWN-ONGOING
- SCP-HANDLE-SHUTDOWN
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 FCIBillingChargingCharacteristicsin theFurnishChargingInformationto send.(Default = do not send FurnishChargingInformation). | 
| .sci | String | Specify the content of the sCIBillingChargingCharacteristicsin theSendChargingInformationto send.(Default = do not send SendChargingInformation). | 
| .address_digits | Digit String | Specify the normalised destinationRoutingAddressdigits (only0-9A-F).The applicable configured 'called_party' denormalisation on the LhoScpApp will be applied. If this field is present, then INAP Connectwill be used, else INAPContinueis sent. | 
| .orig_called_digits | Digit String | This field is only relevant when address_digitsis specified.Specify the normalised destinationRoutingAddressdigits (only0-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_digitsis specified and whenorig_called_digitsis not specified.Set to 1if the originally-receivedoriginalCalledPartyID,
      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_digitsis specified.Specify the normalised redirectingPartyIDdigits (only0-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_digitsis specified and whenredirecting_digitsis not specified.Set to 1if the originally-receivedredirectingPartyId,
      should be included if available.(Default = 0, don't include received redirecting party). | 
| .redirection_info | Object | This field is only relevant when address_digitsis specified.(Default = not present). | 
| .copy_redirection_info | 0/1 | This field is only relevant when address_digitsis specified and whenredirection_infois not specified.Set to 1if the originally-receivedredirectionInformation,
      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 trueto 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 = truewhen thebparty_beepcontainer 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_expiryis 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.
- SCP-HANDLE-MONITOR-REPORT-ONGOING(for monitored calls only)
- SCP-HANDLE-CHARGE-REPORT-ONGOING(for charged calls only)
- SCP-HANDLE-BLEG-TEARDOWN-ONGOING
- SCP-HANDLE-ALEG-TEARDOWN-FINAL
However, the service logic may send the following force-shutdown SCP control messages:
- SCP-DO-SHUTDOWN
- SCP-DO-TCAP-SSP-ABORT-FINAL
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.
- SCP-HANDLE-BLEG-TEARDOWN-ONGOING
- SCP-HANDLE-ALEG-TEARDOWN-FINAL
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-alignedinformation 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:
- SCP-DO-SHUTDOWN
- SCP-DO-TCAP-SSP-ABORT-FINAL
- SCP-DO-INAP-RELEASE-CALL-FINAL
- SCP-DO-INAP-BLEG-TERMINATION-FINAL
- SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT
- SCP-DO-INAP-ALEG-INTERACTION
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 = 1then 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 = 1then 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 = 1then 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 = 1then 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: 
 0then 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 = 1then 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 callingPartyNumberelement of the InitialDP.It is guaranteed to contain only 0-9A-Fdigits. | 
| .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 calledPartyBCDNumberorcalledPartyNumberelement of the InitialDP.It is guaranteed to contain only 0-9A-Fdigits. | 
| .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 redirectingPartyIDelement of the InitialDP, if present.It is guaranteed to contain only 0-9A-Fdigits. | 
| .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 originalCalledPartyIDelement of the InitialDP, if present.It is guaranteed to contain only 0-9A-Fdigits. | 
| .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_triggerisORIGthis will be the same asnormalised_calling_party.When call_triggerisFWDthis will be the same asnormalised_redirecting_party.When call_triggerisTERMthis will be the same asnormalised_called_party.It is guaranteed to contain only 0-9A-Fdigits. | 
| .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_triggerisORIGthis will be the same asnormalised_called_party.When call_triggerisFWDthis will be the same asnormalised_called_party.When call_triggerisTERMthis will be the same asnormalised_calling_party.It is guaranteed to contain only 0-9A-Fdigits. | 
| .forwarding_pending | 1 | This field is present and 1if and only if thegsm-ForwardingPendingorcallForwardingSS-Pendingelement 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:
- SCP-DO-SHUTDOWN
- SCP-DO-TCAP-SSP-ABORT-FINAL
- SCP-DO-INAP-RELEASE-CALL-FINAL
- SCP-DO-INAP-BLEG-TERMINATION-FINAL
- SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT
- SCP-DO-INAP-ALEG-INTERACTION
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 .errorand.digitsare 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 interruptableannouncement does not cause this field to be set. | 
| .digits | #*A-F0-9 | Note that .errorand.digitsare 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 .errorand.digitsare mutually exclusive.Note that .errormay be present even when.reasonis 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 interruptableannouncement does not cause this field to be set. | 
| .digits | #*A-F0-9 | Note that .errorand.digitsare 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:
- When Termination (Attempt, Monitored, or Charged) is requested, and results in Abandon.
- When Termination (Monitored or Charged) is requested, and results in Disconnect (Leg 1).
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, ortDisconnect_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-ONGOINGorSCP-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_causeORtNoAnswerSpecificInfo/tNoAnswerCauseif received. | 
| .forward | 1 | Present with value 1ifftBusySpecificInfo/forwardedCallORtNoAnswerSpecificInfo/forwardedCallwas received. | 
| .cir | Object | Container for any returned CallInformationReportfields which were received. | 
| .callAttemptElapsedTimeValue | Integer | The value from the received CallInformationReport. | 
| .callStopTimeValue_yyyymmddhhmmss | String | The 14-character value from the received CallInformationReportin 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, ortAnswer_leg2. | 
| .ring_dsm | Integer | [Required] The ring-time (in deci-seconds) as measured by us. This is the time between us sending the ConnectorContinueand us receiving theEventReportBCSM (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.
- SCP-HANDLE-MONITOR-REPORT-ONGOING(for monitored calls only)
- SCP-HANDLE-CHARGE-REPORT-ONGOING(for charged calls only)
- SCP-HANDLE-BLEG-TEARDOWN-ONGOING
- SCP-HANDLE-ALEG-TEARDOWN-FINAL
However, the service logic may send the following force-shutdown SCP control messages:
- SCP-DO-SHUTDOWN
- SCP-DO-TCAP-SSP-ABORT-FINAL
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, ortAnswer_leg2. | 
| .ring_dsm | Integer | [Required] The ring-time (in deci-seconds) as measured by us. This is the time between us sending the ConnectorContinueand us receiving theEventReportBCSM (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:
- When Termination (Attempt, Monitored, or Charged) is requested, and results in Busy, NoAnswer, or RouteSelectFailure.
- When Termination (Monitored or Charged) is requested, and results in Disconnect (Leg 2).
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:
- SCP-DO-SHUTDOWN
- SCP-DO-TCAP-SSP-ABORT-FINAL
- SCP-DO-INAP-RELEASE-CALL-FINAL
- SCP-DO-INAP-BLEG-TERMINATION-FINAL
- SCP-DO-INAP-BLEG-TERMINATION-ATTEMPT
- SCP-DO-INAP-ALEG-INTERACTION
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, ortDisconnect_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-ONGOINGorSCP-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_causeORtNoAnswerSpecificInfo/tNoAnswerCauseif received. | 
| .forward | 1 | Present with value 1ifftBusySpecificInfo/forwardedCallORtNoAnswerSpecificInfo/forwardedCallwas received. | 
| .cir | Object | Container for any returned CallInformationReportfields 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:
- SCP-DO-SHUTDOWN
- SCP-DO-TCAP-SSP-ABORT-FINAL
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:
- SCP-DO-INAP-EXTENSION-ALLOW
- SCP-DO-INAP-EXTENSION-DENY
However the service logic may also perform a force-shutdown by sending one of the following SCP control messages:
- SCP-DO-SHUTDOWN
- SCP-DO-TCAP-SSP-ABORT-FINAL
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. |