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 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:
- “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
ActivityTest
and optionalCallInformationReport
. - “Charged” - For Charged Termination type, the call will be charge-controlled with
ApplyCharging
and 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 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.
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-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:
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 = 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:
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:
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 .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:
- 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 , 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.
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 , 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:
- 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 , 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:
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. |