SCC Messages
Introduction
The SIP Logic Hand-Off Application (LhoSipApp) uses SCC-... messages for SIP call control.
These messages are transmitted over the n2svcd message bus between the LHO SIP Application
(LhoSipApp) and the Logic Application (LogicApp).
The start of the message sequence is slightly different between incall and outcall scenarios.
However once the A-Leg is established, the subsequent SCC-... messages are identical.
The SCC-... message names are divided into two categories depending on which
direction the message is flowing.
a. SCC-HANDLE-... messages from LhoSipApp to LogicApp to request service logic assistance.
b. SCC-DO-... messages from LogicApp to LhoSipApp to perform service logic actions.
SIP Incall Messages
Initiated by LhoSipApp by sending SCC-HANDLE-ALEG-INBOUND-INVITE to LogicApp.
Handled by LhoSipLuaService which selects the Lua script to execute.
The internal messages used between LhoSipApp and LogicApp during incall setup are:
SCC-HANDLE-ALEG-INBOUND-INVITESCC-DO-ALEG-PROCEEDINGSCC-DO-ALEG-DECLINE-FINALSCC-HANDLE-ALEG-PROCEEDED
…plus the common messages.
Here is an example internal n2svcd message flow for the incall scenario with interaction,
where the RTP stream for the interaction is generated by an Internal RTP resource
(an instance of the RtpApp), not from an External INAP-controlled SRF.

SIP Outcall Messages
Initiated by LogicApp from an already-running Lua script. That Lua script must be initiated
by some other mechanism, e.g. an inbound REST request.
The internal messages used between LhoSipApp and LogicApp during outcall setup are:
SCC-DO-ALEG-OUTBOUND-INVITESCC-HANDLE-ALEG-FAILURE-FINALSCC-HANDLE-ALEG-ANSWER-ONGOING
…plus the common messages.
Here is an example internal n2svcd message flow for the outcall scenario with interaction,
where the RTP stream for the interaction is generated by an Internal RTP resource
(an instance of the RtpApp), not from an External INAP-controlled SRF.

SIP Common Messages
The following messages are common to both incall and outcall.
SCC-DO-ALEG-HANGUP-FINALSCC-DO-ALEG-INTERACTION-INTERNALSCC-DO-ALEG-INTERACTION-EXTERNALSCC-DO-BLEG-TERMINATION-ATTEMPTSCC-DO-CHARGE-EXTENDSCC-DO-SHUTDOWNSCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOINGSCC-HANDLE-ALEG-INTERACTION-ABANDONED-FINALSCC-HANDLE-ALEG-ABANDON-FINALSCC-HANDLE-BLEG-ANSWER-FINALSCC-HANDLE-BLEG-ANSWER-ONGOINGSCC-HANDLE-BLEG-FAILED-ONGOINGSCC-HANDLE-BLEG-TEARDOWN-ONGOINGSCC-HANDLE-CHARGE-REPORT-ONGOINGSCC-HANDLE-MONITOR-REPORT-ONGOINGSCC-HANDLE-SHUTDOWN
SCC-DO-ALEG-OUTBOUND-INVITE
The SCC-DO-ALEG-OUTBOUND-INVITE message is sent from the LogicApp to the LhoSipApp to
instruct the LhoSipApp to send a SIP INVITE Request to connect an A-Leg.
This message will cause a new LhoSipInstance to be created, which initially has no leg control.
The instance will send a new INVITE Request to connect the A-Leg, and will report back to the
service logic once the result of that Request is known.
After sending this message, the service logic should send no further messages until it receives one
of the following messages from the LhoSipApp:
SCC-HANDLE-ALEG-ANSWER-ONGOINGSCC-HANDLE-ALEG-FAILURE-FINALSCC-HANDLE-SHUTDOWN
If the A-Leg is connected successfully, the LhoSipApp will send the LogicApp an
SCC-HANDLE-ALEG-ANSWER-ONGOING message. The service logic may then proceed to process the call
in a manner essentially identical to the incall scenario where an inbound SIP INVITE Request causes
an SCC-HANDLE-ALEG-INBOUND-INVITE message to be sent to the LogicApp. Specifically, the
service logic may attempt to:
- Perform A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
Otherwise the A-Leg was not connected successfully or an unexpected error occurred. The service
logic should send no further messages. The LhoSipInstance has been shutdown and the associated
call is over.
The attributes of the SCC-DO-ALEG-OUTBOUND-INVITE message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.calling_party
|
(+)Hex String |
[Required] The userinfo part of the calling party for the INVITE Request.The protocol and domain parts of the address will be determined automatically. The applicable configured calling_party denormalisation on the LhoSipApp will be applied.The calling party will be placed in either the P-Asserted-Identity or
From header, depending on whether presentation of the calling party is
restricted or not.
|
.presented_calling_party
|
(+)Hex String |
The userinfo part of the INVITE Request From header address.The protocol and domain parts of the address will be determined automatically. The applicable configured calling_party denormalisation on the LhoSipApp will be applied.This parameter will have no effect if presentation of the calling party is restricted. (Default = .calling_party).
|
.is_calling_restricted
|
0 / 1
|
Specify whether presentation of the calling party should be restricted. When restricted, the outbound INVITE Request From and Contact headers will
be anonymous, and a Privacy header containing the id flag will be
included.When not restricted, the outbound INVITE Request From and Contact headers
will not be anonymous, and a Privacy header will not be included.(Default = 0, not restricted).
|
.called_party
|
(+)Hex String |
[Required] The userinfo part of the INVITE Request URI address.The protocol and domain parts of the address will be determined automatically. The applicable configured called_party denormalisation on the LhoSipApp will be applied.This parameter value will also be used as the userinfo part of the INVITE
Request To header address if the .original_called_party parameter is not specified.
|
.original_called_party
|
(+)Hex String |
The userinfo part of the INVITE Request To header address.The protocol and domain parts of the address will be determined automatically. The applicable configured called_party denormalisation on the LhoSipApp will be applied.(Default = .called_party).
|
.no_answer_timeout
|
Positive Integer |
[Required] Specifies the desired time limit for INVITE Request processing in seconds. The LhoSipApp will enforce a maximum bound for this value.A CANCEL Request will be sent if a Final Response is not received within this time. |
.extra_headers
|
Object |
Additional user headers to include in the SIP INVITE Request. The object keys are header names. The object values are an array of header values. (Default = do not add extra user headers). |
SCC-DO-ALEG-PROCEEDING
The SCC-DO-ALEG-PROCEEDING message is sent from the LogicApp to the LhoSipApp to instruct the
LhoSipApp to send a SIP INVITE Provisional Response (100-199) to the A-Leg, and optionally to
refresh the service logic wait timer.
This message can only be sent for an incall A-Leg, when a Final Response has not yet been sent and the Provisional Response does not have to provide an SDP Offer.
Any of the following service logic actions may cause a Final Response to be sent:
- Attempting to terminate a B-Leg.
- Performing an interaction using an External INAP-controlled SRF.
- Performing an interaction using an Internal RTP resource, unless Early Media is used.
An SDP Offer is required if the A-Leg INVITE Request does not contain an SDP Offer and requires
reliable Provisional Response (i.e. 100rel, PRACK Request).
The ability to send this message is signalled using the proceed_ok attribute in the
SCC-HANDLE-ALEG-INBOUND-INVITE, SCC-HANDLE-ALEG-PROCEEDED, SCC-HANDLE-BLEG-FAILURE-ONGOING,
and SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING messages.
Note that this SCC-DO-ALEG-PROCEEDING message should not (and cannot) be used for sending a
100 Trying Provisional Response. A 100 Trying Provisional Response is sent automatically by
the LhoSipApp and cannot be user-controlled.
After sending this message, the service logic should send no further messages until it receives one
of the following messages from the LhoSipApp:
SCC-HANDLE-ALEG-PROCEEDEDSCC-HANDLE-ALEG-ABANDON-FINALSCC-HANDLE-SHUTDOWN
If the A-Leg proceeded successfully, the LhoSipApp will send the LogicApp an
SCC-HANDLE-ALEG-PROCEEDED message. The service logic may then attempt to:
- Proceed the A-Leg again using the
SCC-DO-ALEG-PROCEEDINGmessage. - Perform A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - Decline the A-Leg using the
SCC-DO-ALEG-DECLINE-FINALmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
Otherwise the A-Leg abandoned or an unexpected error occurred. The service logic should send no
further messages. The LhoSipInstance has been shutdown and the associated call is over.
The attributes of the SCC-DO-ALEG-PROCEEDING message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.code
|
Integer |
[Required] The code to send in the SIP INVITE Provisional Response. The code must be in the range 101-199.
|
.seconds
|
Integer |
Requests a specific service logic wait timer extension. This allows the service logic more time to complete processing while in the proceeding state. (Default = do not refresh the service logic timer). |
.extra_headers
|
Object |
Additional user headers to include in the SIP INVITE Provisional Response. The object keys are header names. The object values are an array of header values. (Default = do not add extra user headers). |
Note that the initial service logic timer is defined in milliseconds, but the refresh timer value (if present) is specified in seconds.
SCC-DO-ALEG-DECLINE-FINAL
The SCC-DO-ALEG-DECLINE-FINAL message is sent from the LogicApp to the LhoSipApp to instruct
the LhoSipApp to send a SIP INVITE Final Response (300-699) to the A-Leg.
This message can only be sent for an incall A-Leg, when a Final Response has not yet been sent.
Any of the following service logic actions may cause a Final Response to be sent:
- Attempting to terminate a B-Leg.
- Performing an interaction using an External INAP-controlled SRF.
- Performing an interaction using an Internal RTP resource, unless Early Media is used.
The ability to send this message is signalled using the decline_ok attribute in the
SCC-HANDLE-ALEG-INBOUND-INVITE, SCC-HANDLE-ALEG-PROCEEDED, SCC-HANDLE-BLEG-FAILURE-ONGOING,
and SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING messages.
The SCC-DO-ALEG-HANGUP-FINAL message can be used if the SCC-DO-ALEG-DECLINE-FINAL message
cannot be sent.
Note that codes 401, 403, and 491 are handled internally by the LhoSipApp, and the service
logic does not need to (and should not) use this method to perform authentication or pending
Request checks.
After sending this message, the service logic should send no further messages. The
LhoSipInstance has been shutdown and the associated call is over.
The attributes of the SCC-DO-ALEG-DECLINE-FINAL message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.code
|
Integer |
The code to send in the SIP INVITE Final Response. The code must be in the range 300-699.(Default = 603 or other platform-configured default value).
|
.contact_user
|
(+)Hex String |
The digits identifying an alternate contact, to include in the SIP INVITE Final Response Contact header.The protocol and domain parts of the address will be determined automatically. This is typically only used when .code = 302.(Default = do not include a Contact header).
|
.reason
|
Object |
This is a container for specifying the details for a Reason header.
The header will be included in the SIP INVITE Final Response.(Default = do not include a Reason header).
|
.protocol
|
SIP/Q.850
|
The protocol value to include in the Reason header.(Default = SIP).
|
.cause
|
Integer |
The cause parameter value to include in the Reason header.(Default = do not include a cause parameter in the header).
|
.text
|
String |
The text parameter value to include in the Reason header.(Default = do not include a text parameter in the header).
|
.extra_headers
|
Object |
Additional user headers to include in the SIP INVITE Final Response. The object keys are header names. The object values are an array of header values. (Default = do not add extra user headers). |
SCC-DO-ALEG-HANGUP-FINAL
The SCC-DO-ALEG-HANGUP-FINAL message is sent from the LogicApp to the LhoSipApp to instruct
the LhoSipApp to end the call.
The A-Leg will be torn down using one of:
- SIP INVITE Final Response, if a Final Response has not already been sent.
- SIP BYE Request, if a Final Response to the A-Leg INVITE Request has already been sent.
If a B-Leg exists it will be torn down using one of:
- SIP CANCEL Request, if a Final Response to the B-Leg INVITE Request has not already been received.
- SIP BYE Request, if a Final Response to the B-Leg INVITE Request has already been received.
After sending this message, the service logic should send no further messages. The
LhoSipInstance has been shutdown and the associated call is over.
The attributes of the SCC-DO-ALEG-HANGUP-FINAL message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.code
|
Integer |
The code to send in the A-Leg SIP INVITE Final Response or BYE Request Reason header.The code must be in the range 300-699.(Default = 603 or other platform-configured default value).
|
.reason
|
Object |
This is a container for specifying the details for a Reason header.
The header will be included in the A-Leg SIP INVITE Final Response or BYE Request, depending
on which is used.(Default = do not include a Reason header).
|
.protocol
|
SIP/Q.850
|
The protocol value to include in the Reason header.(Default = SIP).
|
.cause
|
Integer |
The cause parameter value to include in the Reason header.(Default = do not include a cause parameter in the header).
|
.text
|
String |
The text parameter value to include in the Reason header.(Default = do not include a text parameter in the header).
|
SCC-DO-ALEG-INTERACTION-INTERNAL
The SCC-DO-ALEG-INTERACTION-INTERNAL message is sent from the LogicApp to the LhoSipApp to
instruct the LhoSipApp to use the local Internal RTP resource (i.e. RtpApp) to perform an
interaction on the A-Leg.
If the Internal RTP resource is not already connected to the A-Leg, RTP port(s) will be allocated and the A-Leg will be connected using one of:
- SIP INVITE Final Response with code
200 OK - SIP INVITE Provisional Response with code
183 Session Progress - SIP re-INVITE Request
If a Final Response to the A-Leg INVITE Request has not yet been sent and an SDP Offer/Answer exchange has not been completed, an INVITE Response will be used with the Offer or Answer included as appropriate.
If a Final Response to the A-Leg INVITE Request has not yet been sent but the SDP Offer/Answer
exchange has already been completed (i.e. previous Early Media), a SIP INVITE Final Response with
code 200 OK will be sent, then the SDP session will be renegotiated using a re-INVITE Request.
If a Final Response to the A-Leg INVITE Request has been sent, the SDP session will be renegotiated using a re-INVITE Request.
These are in fact the same standard options which would apply for a SIP Back-to-Back User Agent (B2BUA) connection to a B-Leg. Refer to the N2SIP Protocol Conformance Statement for a more thorough description of the supported SDP exchange mechanisms with specific reference to RFC 6337.
If there is currently a temporary B-Leg connection active for the purpose of performing
interactions with an External INAP-controlled SRF, the LhoSipApp will disconnect the SRF to
enable the interaction to proceed using the Internal RTP resource.
If there is currently a B-Leg end-to-end call in progress, this message will be rejected. That is to say: it is not permitted to use this internal interaction mechanism while a monitored or charged call is in progress. The service logic must explicitly end the B-Leg end-to-end call, or wait for it to be terminated by one of the parties.
After an interaction is complete, the connection between the A-Leg and the Internal RTP resource will remain established in anticipation of subsequent internal interactions. The connection between the A-Leg and the Internal RTP resource will be torn down when the subsequent action is not an internal interaction (i.e. subsequent action is decline, hangup, B-Leg termination, or external interaction).
Note that this message can be sent with no .announcement information, in which case the
Internal RTP resource will be connected to the A-Leg without any interaction being performed. This
is useful for IVR implementations where the desired behavior is:
- Receive inbound SIP INVITE Request for the purpose of being an IVR under external control.
- Establish A-Leg connection (i.e. send
SCC-DO-ALEG-INTERACTION-INTERNALwithout announcement details). - Notify the external controller that we are ready for instructions (e.g. by sending INAP AssistRequestInstructions).
- Wait for interaction instructions from the external controller (e.g. receive INAP PlayAnnouncement).
- Execute the interaction instructions (using
SCC-DO-ALEG-INTERACTION-INTERNALwith announcement details). - Wait for the interaction to complete (i.e. receive
SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING). - Return the interaction result to the external controller (e.g. by sending INAP SpecializedResourceReport).
- Go to step 4.
In the above scenario, the LogicApp, LhoSipApp, and RtpApp constitute a media server that can
operate under locally-implemented service logic control, or - with the addition of SigtranApp -
under external control from another node. This is the reverse of the scenario in which LogicApp
sends SCC-DO-ALEG-INTERACTION-EXTERNAL messages and acts as the controller for an External
INAP-controlled SRF.
After sending this message, the service logic should send no further messages until it receives one
of the following messages from the LhoSipApp:
SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOINGSCC-HANDLE-ALEG-INTERACTION-ABANDONED-FINALSCC-HANDLE-SHUTDOWN
If the interaction completed with the A-Leg still connected, the LhoSipApp will send the
LogicApp an SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING message. The service logic may then
attempt to:
- Proceed the A-Leg using the
SCC-DO-ALEG-PROCEEDINGmessage, ifproceed_ok. - Perform another A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - Decline the A-Leg using the
SCC-DO-ALEG-DECLINE-FINALmessage, ifdecline_ok. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
Otherwise the A-Leg abandoned or an unexpected error occurred. The service logic should send no
further messages. The LhoSipInstance has been shutdown and the associated call is over.
The attributes of the SCC-DO-ALEG-INTERACTION-INTERNAL message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.early_media
|
String |
The Early Media preference for the interaction. This preference will always be honoured when establishing a new connection between the A-Leg and the Internal RTP resource. When the A-Leg is already connected to the internal RTP resource, an Early Media connection will be "upgraded" to a 200 OK connection if the value is never.
Otherwise the existing connection will be used without change, regardless of the value.
nil, use the early_media_policy configured on the LhoSipApp).
|
.aleg_headers
|
Object |
Additional user headers to include in the SIP INVITE Response or SIP re-INVITE Request sent to the A-Leg when the Internal RTP resource is connected. The object keys are header names. The object values are an array of header values. (Default = do not add extra user headers). |
.announcement
|
Object |
An object specifying the parameters for the interaction which is to be performed. This structure is passed through (with potential modifications as indicated) into the RTP-PLAY message sent to the RtpApp.(Default = open the RTP connection but do not perform any interaction). |
.message_id
|
Integer |
A single message ID to play. This ID must be configured within the RtpApp database or file-based configuration.The definition of this ID may depend on the specified language, and may include a mixture of audio files and variable parts. Specify exactly one of .message_id or .message_ids or .files.
|
.message_ids
|
Array of Integer |
An array of one or more message IDs to play in sequence. Each ID listed here must be configured within the RtpApp database or file-based configuration.The definition of each ID may depend on the specified language, and may include a mixture of audio files and variable parts. Each ID listed here may contain variable parts. The supplied variable parts list must contain sufficient variable parts for all message IDs. Specify exactly one of .message_id or .message_ids or .files.
|
.files
|
Array of String |
An array of one or more filenames to play in sequence. Specifying this parameter will bypass the message ID translation process in RtpApp
and allows the service logic to explicitly control the audio file fragments to be played.All filenames must be associated with the announcement language. It is not possible to override the language per-file. Filenames must not include the audio file type suffix part e.g. must not contain the .ul, or .amr.Each filename must include the subdirectory announcements or variable_parts.The directory name "a" is a supported abbreviation for "announcements". The directory names "vp" and "v" are supported abbreviations for "variable_parts". Example: { 'a/You_Entered', 'v/1', 'vp/4' }.Specify exactly one of .message_id or .message_ids or .files.
|
.language
|
String |
The name of a language to use instead of the default language configured on the RtpApp.The RtpApp will use this when translating message ID/IDs and variable parts into a file list.This language name must be configured within the RtpApp database or file-based configuration.Refer to the RtpApp configuration documentation. (Default = use the default language configured on the RtpApp).
|
.repetition
|
Postive Integer |
The number of times to play the announcement. (Default = 1, play the announcement only once).
|
.duration
|
Postive Integer |
The total permitted duration of the interaction including repetitions and any silence. (Default = use the rtp_max_play_secs configured on the LhoSipApp).
|
.variables
|
Array of Object |
An array containing the values to substitute into pre-defined placeholders in the message structure. Each entry in the table is a table which specifies exactly one of the attributes as follows. (Default = no variables). |
.integer
|
Integer |
An integer value to speak as a variable part. Construction rules for the chosen/default langage will be used. |
.number_digits
|
(+)Hex String |
A hexadecimal numeric string to speak as a variable part. Each digit will be spoken individually. Construction rules for the chosen/default langage will be used. |
.time_hhmm
|
<HHMM> |
An integer hour and minute to speak as a variable part. Value must be in the range 0000 to 2400.Construction rules for the chosen/default langage will be used. |
.date_yymmdd
|
<YYMMDD> |
A 6-digit integer year/month/day to speak as a variable part. Construction rules for the chosen/default langage will be used. |
.date_yyyymmdd
|
<YYYYMMDD> |
An 8-digit integer year/month/day to speak as a variable part. Construction rules for the chosen/default langage will be used. |
.price_digits
|
Integer |
An integer value of "cents" to speak as a variable part. Construction rules for the chosen/default langage will be used. |
.collect
|
Object |
A container for parameters related to digit collection. Digit collection will be performed if and only if this parameter is present. (Default = do not collect digits). |
.min_num_digits
|
1 - 32
|
[Required] The minimum number of digits to collect. This value must be less than or equal to max_num_digits.
|
.max_num_digits
|
1 - 32
|
[Required] The maximum number of digits to collect. This value must be greater than or equal to min_num_digits.
|
.end_digit
|
#*A-D0-9
|
A digit which the caller can use to indicate End of Input. (Default = use the internal_end_digit configured on the LhoSipApp).
|
.cancel_digit
|
#*A-D0-9
|
A digit which the caller can use to clear all previous input. (Default = use the internal_cancel_digit configured on the LhoSipApp).
|
.first_digit_timeout
|
Postive Integer |
The number of seconds allowed for the caller to enter the first digit after the announcement completes playing. (Default = use the default_first_digit_timeout configured on the RtpApp).
|
.inter_digit_timeout
|
Postive Integer |
The number of seconds allowed for the caller to enter a subsequent digit after entering at least one digit. (Default = use the default_inter_digit_timeout configured on the RtpApp).
|
.interruptable
|
0 / 1
|
When 1, the first digit entered by the caller will interrupt the playing of the announcement.When 0, the announcement will play in full, even if digit collection is completed before the end of the announcement.(Default = use the default_interruptable configured on the RtpApp).
|
.private_digits
|
0 / 1
|
When 1, the collected digits are considered private, and will not be logged to LhoSipApp EDRs.(Default = use the default_private_digits configured on the LhoSipApp).
|
SCC-DO-ALEG-INTERACTION-EXTERNAL
The SCC-DO-ALEG-INTERACTION-EXTERNAL message is sent from the LogicApp to the LhoSipApp to
instruct the LhoSipApp to use an External INAP-controlled SRF to perform an interaction on the
A-Leg.
If the target SRF is not already connected to the A-Leg, the LhoSipApp will send a new SIP INVITE
Request to connect the SRF, then - acting as a SIP Back-to-Back User Agent (B2BUA) - relay the
relevant messages between the Legs as necessary to establish and maintain a connection.
In order to enable INAP control, the LhoSipApp will engage SigtranApp to coordinate a TCAP/INAP
dialogue in parallel to the SIP dialog. The To header address user part in the SIP INVITE
Request sent to the SRF will:
- Include a prefix that will enable the Request to be routed to the target SRF. The prefix is
the
routing_addressconfigured for the SRF identified by thescc.srf_nameparameter in theLhoSipAppSRF configuration. - Include a configurable value identifying the sender, to enable the SRF to initiate a TCAP/INAP
dialogue with
SigtranAppusing an INAP AssistRequestInstructions operation. - Include a correlation ID value that identifies the
LhoSipAppcall, to enableSigtranAppto correlate the INAP AssistRequestInstructions operation with the correct call.
SigtranApp will notify LhoSipApp when the INAP AssistRequestInstructions operation is received
from the SRF. At that point, LhoSipApp can use SigtranApp to control the SRF by sending INAP
PlayAnnouncement and PromptAndCollectUserInformation operations as directed by the service logic.
The SRF will be expected to respond with INAP SpecializedResourceReport operations, TCAP Return
Results, or TCAP Return Errors as appropriate.
If the Internal RTP resource is currently connected to the A-Leg for the purpose of performing
interactions, the LhoSipApp will disconnect the Internal RTP resource to enable the interaction
to proceed using the External INAP-controlled SRF.
If there is currently a temporary B-Leg connection active for the purpose of performing
interactions with a different SRF, the LhoSipApp will disconnect the other SRF to enable the
interaction to proceed using the target SRF.
If there is currently a B-Leg end-to-end call in progress, this message will be rejected. That is to say: it is not permitted to use this external interaction mechanism while a monitored or charged call is in progress. The service logic must explicitly end the B-Leg end-to-end call, or wait for it to be terminated by one of the parties.
After an interaction is complete, the connection between the A-Leg and the SRF will remain established in anticipation of subsequent extternal interactions. The connection between the A-Leg and the SRF will be torn down when the subsequent action is not an external interaction with the same SRF (i.e. subsequent action is decline, hangup, B-Leg termination, internal interaction, or external interaction with a different SRF).
After sending this message, the service logic should send no further messages until it receives one
of the following messages from the LhoSipApp:
SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOINGSCC-HANDLE-ALEG-INTERACTION-ABANDONED-FINALSCC-HANDLE-SHUTDOWN
If the interaction completed with the A-Leg still connected, the LhoSipApp will send the
LogicApp an SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING message. The service logic may then
attempt to:
- If
proceed_ok, proceed the A-Leg using theSCC-DO-ALEG-PROCEEDINGmessage. - Perform another A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - If
decline_ok, decline the A-Leg using theSCC-DO-ALEG-DECLINE-FINALmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
Otherwise the A-Leg abandoned or an unexpected error occurred. The service logic should send no
further messages. The LhoSipInstance has been shutdown and the associated call is over.
The attributes of the SCC-DO-ALEG-INTERACTION-EXTERNAL message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.srf_name
|
String |
[Required] The name of the SRF to use to perform the interaction, as configured on the LhoSipApp.
|
.calling_party
|
(+)Hex String |
The userinfo part of the INVITE Request From header address.The protocol and domain parts of the address will be determined automatically. The applicable configured calling_party denormalisation on the LhoSipApp will be applied.Set to undef to suppress the network-supplied presented calling party (if any).This parameter will have no effect if presentation of the calling party is restricted. (Default = for an A-Leg initiated by an outbound INVITE Request, the A-Leg presented called party; for an A-Leg initiated by an inbound INVITE Request, the A-Leg presented calling party). |
.is_calling_restricted
|
0 / 1
|
Specify whether presentation of the calling party should be restricted. This parameter will have no effect if:
From and Contact
headers will be anonymous, and a Privacy header containing the id
flag will be included. Other flags from any Privacy headers in the A-Leg INVITE
Request or Response will be included in the SRF INVITE Request Privacy header.When not restricted, the SRF INVITE Request From and Contact headers will
not be anonymous, and a Privacy header will not be included.(Default = for an A-Leg initiated by an inbound INVITE Request, the restriction requested by the calling party; for an A-Leg initiated by an outbound INVITE Request, the restriction requested by the called party). |
.original_called_party
|
(+)Hex String |
The userinfo part of the INVITE Request To header address.The protocol and domain parts of the address will be determined automatically. The applicable configured called_party denormalisation on the LhoSipApp will be applied.(Default = use the SRF INVITE Request called party). |
.announcement
|
Object | [Required] A container specifying the parameters for the interaction which is to be performed. |
.message_id
|
Integer |
A single message ID to play. This ID will be conveyed to the SRF in the informationToSend.messageID.elementaryMessageID or
informationToSend.messageID.variableMessage.elementaryMessageID IE within the INAP PA or PACUI message.The ID must be coordiated with the SRF. The definition of this ID may depend on the specified language, and may include a mixture of audio files and variable parts. Specify exactly one of .message_id or .message_ids.
|
.message_ids
|
Array of Integer |
A table of one or more message IDs to play in sequence. These IDs will be conveyed to the SRF in the informationToSend.messageID.elementaryMessageIDs IE within the INAP PA or PACUI message.The IDs must be coordiated with the SRF. The definitions of these IDs may depend on the specified language, but are only expected to include audio files (no variable parts). Specify exactly one of .message_id or .message_ids.
|
.language
|
String |
The name of a language to prefer instead of any default used by the SRF. If possible, the language preference will be conveyed to the SRF along with the interaction parameters. The LhoSipApp language map configuration may be used to map the language to an integer ID that the the SRF will understand. (Default = use any default language used by the SRF). |
.repetition
|
Positive Integer |
The value for the informationToSend.inbandInfo.numberOfRepetitions IE within the INAP PA or PACUI message.(Default = do not send this value to the SRF). |
.duration
|
Integer |
The value for the informationToSend.inbandInfo.duration IE within the INAP PA or PACUI message.(Default = do not send this value to the SRF). |
.interval
|
Integer |
The value for the informationToSend.inbandInfo.interval IE within the INAP PA or PACUI message.(Default = do not send this value to the SRF). |
.variables
|
Array of Object |
An array containing the values to substitute into pre-defined placeholders in the message structure. Each entry in the table is a table which specifies exactly one of the attributes as follows. (Default = no variables). |
.integer
|
Integer |
An integer value to speak as a variable part. This will be conveyed to the SRF in the VariablePart.integer IE.
|
.number_digits
|
(+)Hex String |
A hexadecimal numeric string to speak as a variable part. This will be conveyed to the SRF in the VariablePart.number IE.
|
.time_hhmm
|
<HHMM> |
An integer hour and minute to speak as a variable part. This will be conveyed to the SRF in the VariablePart.time IE.Value must be in the range 0000 to 2400.
|
.date_yymmdd
|
<YYMMDD> |
A 6-digit integer year/month/day to speak as a variable part. This will be conveyed to the SRF in the VariablePart.date IE.
|
.date_yyyymmdd
|
<YYYYMMDD> |
An 8-digit integer year/month/day to speak as a variable part. This will be conveyed to the SRF in the VariablePart.date IE.
|
.price_digits
|
Integer |
An integer value of "cents" to speak as a variable part. This will be conveyed to the SRF in the VariablePart.price IE.
|
.collect
|
Object |
A container for parameters related to digit collection. Digit collection will be performed if and only if this parameter is present. (Default = do not collect digits). |
.min_num_digits
|
1 - 32
|
[Required] The minimum number of digits which the SRF must collect. This value will be conveyed to the SRF in the collectedInfo.collectedDigits.minimumNbOfDigits IE within the INAP PACUI message.This value must be less than or equal to max_num_digits.
|
.max_num_digits
|
1 - 32
|
[Required] The maximum number of digits which the SRF must collect. This value will be conveyed to the SRF in the collectedInfo.collectedDigits.maximumNbOfDigits IE within the INAP PACUI message.This value must be greater than or equal to min_num_digits.
|
.end_digit
|
#*A-F0-9
|
The value for the collectedInfo.collectedDigits.endOfReplyDigit IE within the PACUI message.If the digit is * or #, the digit will be translated according to the
star_digit and hash_digit configured on the LhoSipApp for the SRF.(Default = use the end_digit configured on the LhoSipApp for the SRF).
|
.cancel_digit
|
#*A-F0-9
|
The value for the collectedInfo.collectedDigits.cancelDigit IE within the PACUI message.If the digit is * or #, the digit will be translated according to the
star_digit and hash_digit configured on the LhoSipApp for the SRF.(Default = use the cancel_digit configured on the LhoSipApp for the SRF).
|
.first_digit_timeout
|
Postive Integer |
The value for the collectedInfo.collectedDigits.firstDigitTimeOut IE within the PACUI message.(Default = do not send this value to the SRF). |
.inter_digit_timeout
|
Postive Integer |
The value for the collectedInfo.collectedDigits.interDigitTimeOut IE within the PACUI message.(Default = do not send this value to the SRF). |
.interruptable
|
0 / 1
|
The value for the collectedInfo.collectedDigits.interruptableAnnInd IE within the PACUI message.(Default = do not send this value to the SRF). |
.private_digits
|
0 / 1
|
When 1, the collected digits are considered private, and will not be logged to LhoSipApp EDRs.Note that the SRF is a separate, independent element, and this flag does prevent the SRF from logging the collected digits. (Default = use the default_private_digits configured on the LhoSipApp).
|
SCC-DO-BLEG-TERMINATION-ATTEMPT
The SCC-DO-BLEG-TERMINATION-ATTEMPT message is sent from the LogicApp to the LhoSipApp to
instruct the LhoSipApp to send a SIP INVITE Request to connect a B-Leg.
In this context LhoSipApp acts as a SIP Signaling Plane Signaling-only Back-to-Back User Agent
(B2BUA) as described by RFC 7092 section
3.1.2.
If there is currently a connection between the A-Leg and the Internal RTP resource or an External INAP-controlled SRF, that connection will be disconnected to enable the termination attempt to proceed.
If there is currently a B-Leg end-to-end call in progress, this message will be rejected. That is to say: it is not permitted to connect more than one B-Leg at any given time. The service logic must explicitly end the existing B-Leg end-to-end call, or wait for it to be terminated by one of the parties.
After sending this message, the service logic should send no further messages until it receives one
of the following messages from the LhoSipApp:
SCC-HANDLE-ALEG-ABANDON-FINALSCC-HANDLE-BLEG-ANSWER-FINALSCC-HANDLE-BLEG-ANSWER-ONGOINGSCC-HANDLE-BLEG-FAILED-ONGOINGSCC-HANDLE-SHUTDOWN
If the termination attempt was successful and the A-Leg is successfully connected to the B-Leg, the
LhoSipApp will send the LogicApp an SCC-HANDLE-BLEG-ANSWER-FINAL or
SCC-HANDLE-BLEG-ANSWER-ONGOING message.
An SCC-HANDLE-BLEG-ANSWER-FINAL message will be sent when neither monitoring nor charging was
requested. In this case the service logic should send no further messages. The A-Leg and B-Leg
are connected, and LhoSipApp will remain in the SIP signalling path until either or both parties
hang up. However, call control is no longer available.
An SCC-HANDLE-BLEG-ANSWER-ONGOING message will be used when either monitoring or charging was
requested. The service logic must “sweep” for subsequent messages until either or both parties
hang up, or the service logic decides to end the call using SCC-DO-ALEG-HANGUP-FINAL:
SCC-HANDLE-ALEG-ABANDON-FINALindicates A-Leg disconnect/abandonSCC-HANDLE-BLEG-TEARDOWN-ONGOINGindicates B-Leg disconnectSCC-HANDLE-MONITOR-REPORT-ONGOINGindicates ongoing monitored talk-timeSCC-HANDLE-CHARGE-REPORT-ONGOINGindicates ongoing charged talk-time; the service logic must respond with anSCC-DO-CHARGE-EXTENDorSCC-DO-ALEG-HANGUP-FINALmessage
If the termination attempt was not successful but the A-Leg is still connected, the LhoSipApp
will send the LogicApp an SCC-HANDLE-BLEG-FAILED-ONGOING message. The service logic may then
attempt to:
- If
proceed_ok, proceed the A-Leg using theSCC-DO-ALEG-PROCEEDINGmessage. - Perform A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform another B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - If
decline_ok, decline the A-Leg using theSCC-DO-ALEG-DECLINE-FINALmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
Otherwise the A-Leg abandoned or an unexpected error occurred. The service logic should send no
further messages. The LhoSipInstance has been shutdown and the associated call is over.
The attributes of the SCC-DO-BLEG-TERMINATION-ATTEMPT message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.address_digits
|
(+)Hex String |
[Required] The userinfo part of the INVITE Request URI address.The protocol and domain parts of the address will be determined automatically. The applicable configured called_party denormalisation on the LhoSipApp will be applied.This parameter value will also be used as the userinfo part of the INVITE
Request To header address if the .original_called_party parameter is not specified.
|
.calling_party
|
(+)Hex String |
The userinfo part of the INVITE Request From header address.The protocol and domain parts of the address will be determined automatically. The applicable configured calling_party denormalisation on the LhoSipApp will be applied.Set to undef to suppress the network-supplied presented calling party (if any).This parameter will have no effect if presentation of the calling party is restricted. (Default = for an A-Leg initiated by an outbound INVITE Request, the A-Leg presented called party; for an A-Leg initiated by an inbound INVITE Request, the A-Leg presented calling party). |
.is_calling_restricted
|
0 / 1
|
Specify whether presentation of the calling party should be restricted. This parameter will have no effect if:
From and Contact
headers will be anonymous, and a Privacy header containing the id
flag will be included. Other flags from any Privacy headers in the A-Leg INVITE Request
or Response will be included in the B-Leg INVITE Request Privacy header.When not restricted, the B-Leg INVITE Request From and Contact headers will
not be anonymous, and a Privacy header will not be included.(Default = for an A-Leg initiated by an inbound INVITE Request, the restriction requested by the calling party; for an A-Leg initiated by an outbound INVITE Request, the restriction requested by the called party). |
.original_called_party
|
(+)Hex String |
The userinfo part of the INVITE Request To header address.The protocol and domain parts of the address will be determined automatically. The applicable configured called_party denormalisation on the LhoSipApp will be applied.(Default = use the .address_digits parameter).
|
.no_answer_timeout
|
Positive Integer |
[Required] Specifies the desired time limit for INVITE Request processing in seconds. The LhoSipApp will enforce a maximum bound for this value.A CANCEL Request will be sent if a Final Response is not received within this time. |
.extra_headers
|
Object |
Additional user headers to include in the SIP INVITE Request. The object keys are header names. The object values are an array of header values. (Default = do not add extra user headers). |
.max_call_secs
|
Positive Integer |
Specifies the desired maximum permitted call duration in seconds. The LhoSipApp will enforce minimum and maximum bounds for this value.(Default = use the max_call_secs configured on the LhoSipApp).
|
.monitored
|
0 / 1
|
Set this value to indicate that this is a "Monitored" call attempt. Only one of .monitored or .charged may be set to 1.If this call attempt is answered, the service logic must use the .monitor_check
method to monitor the call until it completes.SIP re-INVITE Requests will be sent to both the A-Leg and B-Leg at intervals specified by .monitor_interval_secs to check that the call is still active.
Corresponding monitor reports will be sent to the service logic.(Default = 0, the call is not monitored).
|
.monitor_interval_secs
|
Positive Integer |
Specifies the desired interval in seconds between the SIP re-INVITE Requests / monitor reports. The LhoSipApp will enforce minimum and maximum bounds for this value.Valid only when .monitored is 1.(Default = use the activity_interval_secs configured on the LhoSipApp).
|
.charged
|
0 / 1
|
Set this value to indicate that this is a "Charged" call attempt. Only one of .monitored or .charged may be set to 1.If this call attempt is answered, the service logic must use the .charge_check and
.charge_extend methods to authorise extensions on the charged call until it completes.SIP re-INVITE Requests will be sent to both the A-Leg and B-Leg at the end of grant periods to check that the call is still active. Corresponding charge reports will be sent to the service logic. (Default = 0, the call is not charged).
|
.grant_secs
|
Positive Integer |
[Required if .charged is 1] Specifies the desired period in
seconds from when the call attempt is answered until the initial SIP re-INVITE Requests / charge report.The LhoSipApp will enforce minimum and maximum bounds for this value.Valid only when .charged is 1.
|
SCC-DO-CHARGE-EXTEND
The SCC-DO-CHARGE-EXTEND message is sent from the LogicApp to the LhoSipApp to instruct the
LhoSipApp to allow an ongoing charged call to continue.
This message should only be sent for charged calls after the LhoSipApp has sent an
SCC-HANDLE-CHARGE-REPORT-ONGOING message to the LogicApp.
After sending this message, the service logic should send no further messages until it receives one
of the following messages from the LhoSipApp:
SCC-HANDLE-ALEG-ABANDON-FINALSCC-HANDLE-BLEG-TEARDOWN-ONGOINGSCC-HANDLE-CHARGE-REPORT-ONGOINGSCC-HANDLE-SHUTDOWN
If both Legs are still connected at the end of the granted extension, the LhoSipApp will send the
LogicApp another SCC-HANDLE-CHARGE-REPORT-ONGOING message. The service logic may then attempt
to:
- Allow talk-time to continue for a specified duration using the
SCC-DO-CHARGE-EXTENDmessage. - Disconnect both parties using the
SCC-DO-ALEG-HANGUP-FINALmessage.
If the B-Leg hangs up during the granted extension but the A-Leg is still connected, the
LhoSipApp will send the LogicApp an SCC-HANDLE-BLEG-TEARDOWN-ONGOING message. The service
logic may then attempt to:
- Perform A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform another B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
Otherwise the A-Leg abandoned or an unexpected error occurred. The service logic should send no
further messages. The LhoSipInstance has been shutdown and the associated call is over.
The attributes of the SCC-DO-CHARGE-EXTEND message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.grant_secs
|
Positive Integer |
[Required] Specifies the desired period in
seconds until the next SIP re-INVITE Requests / charge report. The LhoSipApp will enforce minimum and maximum bounds for this value. |
SCC-DO-SHUTDOWN
The SCC-DO-SHUTDOWN message is sent from the LogicApp to the LhoSipApp to instruct the
LhoSipApp to shutdown an LhoSipInstance and clean up the associated call.
This message indicates that service logic processing has failed unexpectedly and cannot continue.
The LhoSipApp should perform any necessary SIP transaction and dialog closure using Final
Response, CANCEL Request, or BYE Request as applicable, then shutdown the LhoSipInstance.
No further SCC-... messages should be exchanged after this message.
The attributes of the SCC-DO-SHUTDOWN message are:
| Field | Type | Description |
|---|---|---|
error
|
String | [Required] A description of the error that occurred. |
SCC-HANDLE-ALEG-FAILURE-FINAL
The SCC-HANDLE-ALEG-FAILURE-FINAL message is sent from the LhoSipApp to the LogicApp to
inform the LogicApp that an attempt to connect an A-Leg (initiated as a result of a previously
received SCC-DO-ALEG-OUTBOUND-INVITE message) was not successful.
This message will be sent when:
- The far end was not reachable.
I.e. No SIP INVITE Response at all was received from the far end within the SIP state machine timer and/or service logic no-answer timer.
- The far end acknowledged the SIP INVITE Request, but did not complete it within the no-answer timer.
I.e. At least one Provisional Response (code 100-199) was received, but no Final Response (code 200-699) was received.
-
A SIP INVITE Final Response with code
300-699was received. -
An unacceptable SIP INVITE Final Response with code
200-299was received.
The service logic should send no further messages. The LhoSipInstance has been shutdown and the
associated call is over.
The attributes of the SCC-HANDLE-ALEG-FAILURE-FINAL message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.reason
|
No Route / Declined / No Answer
|
[Required] The reason why this message was sent. |
.code
|
Integer |
A SIP Final Response code (in the range 200-699) associated with the A-Leg outcall attempt.This value is present only when the A-Leg outcall attempt received a SIP INVITE Final Response. |
SCC-HANDLE-ALEG-ANSWER-ONGOING
The SCC-HANDLE-ALEG-ANSWER-ONGOING message is sent from the LhoSipApp to the LogicApp to
inform the LogicApp that an attempt to connect an A-Leg (initiated as a result of a previously
received SCC-DO-ALEG-OUTBOUND-INVITE message) was successful.
This message will be sent when a SIP INVITE Final Response with code 200 OK is received.
The service logic must provide call control instructions:
- Perform A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
The attributes of the SCC-HANDLE-ALEG-ANSWER-ONGOING message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.reason
|
Answered
|
[Required] The reason why this message was sent. |
.code
|
Integer |
[Required] The received SIP INVITE Final Response code (in the range 200-299).At present LhoSipApp will only accept Response code 200.
|
.call_id
|
String |
[Required] The Call-ID header value from the sent SIP INVITE Request.
|
.privacy
|
Object |
This value is present only when one or more Privacy headers are present in one of the received SIP INVITE Responses.This object will have entries with keys matching each of the Privacy flags which are present in the headers from the first Response that contains one or more headers. Object values will be 1.For example if a Privacy header has value user;id then this object will
be { user = 1, id = 1 }.(Default = not present, the header was not present in any Response). |
.p_preferred_identities
|
Array of String |
Array of P-Preferred-Identity header values from one of the received SIP INVITE Responses.This value is present only when the first Response containing one or more P-Preferred-Identity
or P-Asserted-Identity headers contains one or more P-Preferred-Identity headers.(Default = not present, the header was not present in any Response or the first Response containing P-Asserted-Identity headers).
|
.p_asserted_identities
|
Array of String |
Array of P-Asserted-Identity header values from one of the received SIP INVITE Responses.This value is present only when the first Response containing one or more P-Preferred-Identity
or P-Asserted-Identity headers contains one or more P-Asserted-Identity headers.(Default = not present, the header was not present in any Response or the first Response containing P-Preferred-Identity headers).
|
.p_charging_vector
|
String |
The P-Charging-Vector header value from the sent SIP INVITE Request or the most recently received Response containing a P-Charging-Vector header.This value is present only when a P-Charging-Vector header is present in the Request or one of the Responses.(Default = not present, the header was not present in the Request or any Response). |
.calling_party
|
(+)Hex String |
[Required] Calling Party. This is the .calling_party specified in the associated SCC-DO-ALEG-OUTBOUND-INVITE message,
sent in the userinfo part of the SIP INVITE Request P-Asserted-Identity or From header Address.It is guaranteed to contain only 0-9A-F digits.
|
.is_calling_restricted
|
0 / 1
|
[Required] Is presentation of the Calling Party restricted? This value will be 1 if presentation restriction was applied to the calling party in the sent SIP INVITE Request.
|
.presented_calling_party
|
(+)Hex String |
This is the userinfo part of the SIP INVITE Request From header Address.It is guaranteed to contain only 0-9A-F digits.This value is present only when:
|
.called_party
|
(+)Hex String |
[Required] Called Party. In most cases this is the .called_party specified in the associated SCC-DO-ALEG-OUTBOUND-INVITE message,
sent in the userinfo part of the SIP INVITE Request URI Address.The specified called party will be overridden if an INVITE Response containing a parseable P-Asserted-Identity header that includes an Address userinfo part is received.It is guaranteed to contain only 0-9A-F digits.
|
.presented_called_party
|
(+)Hex String |
This is the userinfo part of the SIP INVITE Request To header Address.It is guaranteed to contain only 0-9A-F digits.This value is present only when:
|
.is_called_restricted
|
0 / 1
|
[Required] Is presentation of the Called Party restricted? This value will be 1 if .privacy contains the id or user flags.
|
.original_called_party
|
(+)Hex String |
This is the .original_called_party specified in the associated SCC-DO-ALEG-OUTBOUND-INVITE message,
sent in the userinfo part of the SIP INVITE Request To header Address.It is guaranteed to contain only 0-9A-F digits.This value is present only when:
|
SCC-HANDLE-ALEG-INBOUND-INVITE
The SCC-HANDLE-ALEG-INBOUND-INVITE message is sent from the LhoSipApp to the LogicApp to
inform the LogicApp that an inbound SIP INVITE Request has been received and needs to be handled.
The LhoSipApp is configured with the name of the LogicApp to which the message should be sent.
The LogicApp must have a configured LhoSipLuaService present to receive and process the
message. The LhoSipLuaService will compare the message contents and with its configured
triggers list in order to determine which Lua script to execute. The Lua script may be loaded
from disk, database, or elsewhere depending on the service.
The service logic must provide call control instructions:
- If
proceed_ok, proceed the A-Leg using theSCC-DO-ALEG-PROCEEDINGmessage. - Perform A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - Decline the A-Leg using the
SCC-DO-ALEG-DECLINE-FINALmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
The attributes of the SCC-HANDLE-ALEG-INBOUND-INVITE message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.request_uri
|
Object | [Required] The decoded object representation of the received SIP INVITE Request URI. |
.string
|
String | [Required] The complete original Request URI. |
.display_name
|
String |
The display-name part of the Request URI, if present.
|
.parameters
|
Object |
A map of top-level parameter values (not the address parameters). Parameters without a value (e.g. ;urgent) will be present with a value of undef.
|
.address
|
Object | [Required] Container for the Address attributes. |
.uri
|
String |
[Required] The complete Address URI including parameters, but not including any < >.
|
.protocol
|
String |
[Required] The Address protocol - sip or tel.
|
.user
|
String |
[Required] The userinfo part (the part preceding the @) of the Address.
|
.host
|
String |
[Required] The host part of the Address.
|
.port
|
Integer |
The port part of the address, if explicitly present.
|
.parameters
|
Object |
The Address parameters (not the top-level parameters). This will include the transport parameter (if explicit), and could include otg or other site-specific parameters.Parameters without a value (e.g. ;exdirectory) will be present with a value of undef.
|
.from
|
Table |
[Required] The decoded object representation of the From header from the
received SIP INVITE Request.The object structure is identical to the structure described for the .request_uri value.
|
.to
|
Object |
[Required] The decoded object representation of the To header from the
received SIP INVITE Request.The object structure is identical to the structure described for the .request_uri value.
|
.call_id
|
String |
[Required] The Call-ID header value from the received SIP INVITE Request.
|
.privacy
|
Object |
This value is present only when one or more Privacy headers are present in the received SIP INVITE Request.This object will have entries with keys matching each of the Privacy flags which are present in the headers, each with the value 1.For example if a Privacy header has value user;id then this object will
be { user = 1, id = 1 }.(Default = not present, the header was not present in the Request). |
.p_preferred_identities
|
Array of String |
Array of P-Preferred-Identity header values from the received SIP INVITE Request.This value is present only when one or more P-Preferred-Identity headers are present in the Request.(Default = not present, the header was not present in the Request). |
.p_asserted_identities
|
Array of String |
Array of P-Asserted-Identity header values from the received SIP INVITE Request.This value is present only when one or more P-Asserted-Identity headers are present in the Request.(Default = not present, the header was not present in the Request). |
.p_charging_vector
|
String |
The P-Charging-Vector header value from the received SIP INVITE Request.This value is present only when a P-Charging-Vector header is present in the Request.(Default = not present, the header was not present in the Request). |
.extra_headers
|
Object |
A container of extra headers "of interest" from the received SIP INVITE Request. These are only headers specifically configured in the <invite_headers> configuration block.The object keys are header names. Header names are upper/lower case as defined in the name
attribute of the <invite_header> configuration, even though the matching for header
names in the Request is performed using case-insensitive matching.The object values are non-empty arrays of raw header values parsed for the corresponding header name. (Default = not present, no headers of interest were matched). |
.calling_party
|
(+)Hex String |
[Required] Calling Party. This is the userinfo part of the P-Asserted-Identity or From header Address.It is guaranteed to contain only 0-9A-F digits.
|
.normalised_calling_party
|
(+)Hex String |
[Required] Normalised Calling Party. This is the .calling_party after any configured 'calling_party' normalisation rules have been applied.It is guaranteed to contain only 0-9A-F digits.
|
.is_calling_restricted
|
0 / 1
|
[Required] Is presentation of the Calling Party restricted? This value will be 1 if:
|
.presented_calling_party
|
(+)Hex String |
This is the userinfo part of the From header Address.It is guaranteed to contain only 0-9A-F digits.This value is present only when:
|
.normalised_presented_calling_party
|
(+)Hex String |
This is the .presented_calling_party after any configured 'calling_party' normalisation rules have been applied.It is guaranteed to contain only 0-9A-F digits.(Default = not present, there is no .presented_calling_party).
|
.called_party
|
(+)Hex String |
[Required] Called Party. This is the userinfo part of the Request URI Address.It is guaranteed to contain only 0-9A-F digits.
|
.normalised_called_party
|
(+)Hex String |
[Required] Normalised Called Party. This is the .called_party after any configured 'called_party' normalisation rules have been applied.It is guaranteed to contain only 0-9A-F digits.
|
.original_called_party
|
(+)Hex String |
This is the userinfo part of the To header address.It is guaranteed to contain only 0-9A-F digits.This value is present only when, after normalisation, the userinfo part of the To header Address differs from .normalised_called_party.(Default = not present, the described value pre-conditions are not met). |
.normalised_original_called_party
|
(+)Hex String |
This is the .original_called_party after any configured 'called_party' normalisation rules have been applied.It is guaranteed to contain only 0-9A-F digits.(Default = not present, there is no .original_called_party).
|
.pending_tn
|
(+)Hex String |
[Required] Pending termination number digits. The normalised pending termination number inferred from the SIP INVITE Request. It is guaranteed to contain only 0-9A-F digits.
|
.proceed_ok
|
0 / 1
|
[Required] Can the service logic still send the SCC-DO-ALEG-PROCEEDING message?This value will be 1 if an SDP Offer would not be required to proceed.
|
SCC-HANDLE-ALEG-PROCEEDED
The SCC-HANDLE-ALEG-PROCEEDED message is sent from the LhoSipApp to the LogicApp to inform
the LogicApp that an attempt to proceed the A-Leg (initiated as a result of a previously received
SCC-DO-ALEG-PROCEEDING message) was successful.
This message will be sent when:
- Reliable
100relProvisional Response (i.e. SIP PRACK Request) was not required, or - Reliable
100relProvisional Response was required, and the PRACK Request was received.
The service logic must provide call control instructions:
- Proceed the A-Leg using the
SCC-DO-ALEG-PROCEEDINGmessage. - Perform A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - Decline the A-Leg using the
SCC-DO-ALEG-DECLINE-FINALmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
The attributes of the SCC-HANDLE-ALEG-PROCEEDED message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.reason
|
Proceeded
|
[Required] The reason why this message was sent. |
SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING
The SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING message is sent from the LhoSipApp to the
LogicApp to inform the LogicApp that an interaction with the A-Leg (initiated as a result of a
previously received SCC-DO-ALEG-INTERACTION-INTERNAL or SCC-DO-ALEG-INTERACTION-EXTERNAL
message) has completed and the A-Leg is still connected.
The service logic must provide call control instructions:
- If
proceed_ok, proceed the A-Leg using theSCC-DO-ALEG-PROCEEDINGmessage. - Perform another A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - If
decline_ok, decline the A-Leg using theSCC-DO-ALEG-DECLINE-FINALmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
The attributes of the SCC-HANDLE-ALEG-INTERACTION-COMPLETE-ONGOING message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.error
|
String |
A description of the first error that occurred in connection with the interaction. One of .digits or .error will be present when digit collection was requested.If this value is defined, the service logic should assume that the intended audio was not played in full to the caller, and/or that digit collection was not completed successfully. This value may be defined when e.g. the SRF could not be reached, some audio files were missing, some interaction parameters were invalid, etc. |
.digits
|
#*A-F0-9
|
Digits collected from the caller. One of .digits or .error will be present when digit collection was requested.This value will be present but empty if insufficient digits were collected from the caller. |
.proceed_ok
|
0 / 1
|
[Required] Can the service logic still send the SCC-DO-ALEG-PROCEEDING message?This value will be 1 if we have not yet sent a Final Response,
and an SDP Offer would not be required to proceed.
|
.decline_ok
|
0 / 1
|
[Required] Can the service logic still send the SCC-DO-ALEG-DECLINE-FINAL message?This value will be 1 if we have not yet sent a Final Response.
|
SCC-HANDLE-ALEG-INTERACTION-ABANDONED-FINAL
The SCC-HANDLE-ALEG-INTERACTION-ABANDONED-FINAL message is sent from the LhoSipApp to the
LogicApp to inform the LogicApp that an interaction with the A-Leg (initiated as a result of a
previously received SCC-DO-ALEG-INTERACTION-INTERNAL or SCC-DO-ALEG-INTERACTION-EXTERNAL
message) has completed because the A-Leg abandoned.
The service logic should send no further messages. The LhoSipInstance has been shutdown and the
associated call is over.
The attributes of the SCC-HANDLE-ALEG-INTERACTION-ABANDONED-FINAL message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.reason
|
Abandoned
|
[Required] The reason why this message was sent. |
SCC-HANDLE-ALEG-ABANDON-FINAL
The SCC-HANDLE-ALEG-ABANDON-FINAL message is sent from the LhoSipApp to the LogicApp to
inform the LogicApp that the A-Leg has abandoned the call.
This message will be sent when the abandon is not associated with an interaction. Otherwise the
SCC-HANDLE-ALEG-INTERACTION-ABANDONED-FINAL message will be used.
The service logic should send no further messages. The LhoSipInstance has been shutdown and the
associated call is over.
The attributes of the SCC-HANDLE-ALEG-ABANDON-FINAL message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.reason
|
Abandoned
|
[Required] The reason why this message was sent. |
.talk_dsm
|
Integer |
The talk-time duration in deci-seconds, as measured by the LhoSipApp.This value is present only when the A-Leg abandoned an answered in-progress call. (Default = 0, no talk-time was confirmed).
|
SCC-HANDLE-BLEG-ANSWER-FINAL
The SCC-HANDLE-BLEG-ANSWER-FINAL message is sent from the LhoSipApp to the LogicApp to inform
the LogicApp that a termination attempt (initiated as a result of a previously received
SCC-DO-BLEG-TERMINATION-ATTEMPT message) has completed and the B-Leg answered the call.
The call is in progress, but the service logic did not request monitoring or charging.
The LhoSipApp will stay in the signalling path, performing its role as a SIP Back-to-Back User
Agent (B2BUA) until the call is over. Then the LhoSipInstance will be shutdown.
No further SCC-... messages should be exchanged after this message.
The attributes of the SCC-HANDLE-BLEG-ANSWER-FINAL message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.reason
|
Answered
|
[Required] The reason why this message was sent. |
.code
|
Integer |
[Required] The received SIP INVITE Final Response code (in the range 200-299). |
.ring_dsm
|
Integer |
[Required] The ring-time duration in deci-seconds, as measured by the LhoSipApp.
|
.max_call_secs
|
Positive Integer |
[Required] The actual maximum permitted call duration in seconds. This may differ from the requested value because the LhoSipApp applies a default, and minimum and maximum bounds.
|
SCC-HANDLE-BLEG-ANSWER-ONGOING
The SCC-HANDLE-BLEG-ANSWER-ONGOING message is sent from the LhoSipApp to the LogicApp to
inform the LogicApp that a termination attempt (initiated as a result of a previously received
SCC-DO-BLEG-TERMINATION-ATTEMPT message) has completed and the B-Leg answered the call.
The call is in progress, and the service logic requested either monitoring or charging.
The service logic must “sweep” for subsequent messages until either or both parties hang up, or the
service logic decides to end the call using SCC-DO-ALEG-HANGUP-FINAL:
SCC-HANDLE-ALEG-ABANDON-FINALindicates A-Leg disconnect/abandonSCC-HANDLE-BLEG-TEARDOWN-ONGOINGindicates B-Leg disconnectSCC-HANDLE-MONITOR-REPORT-ONGOINGindicates ongoing monitored talk-timeSCC-HANDLE-CHARGE-REPORT-ONGOINGindicates ongoing charged talk-time; the service logic must respond with anSCC-DO-CHARGE-EXTENDorSCC-DO-ALEG-HANGUP-FINALmessage
The LhoSipApp will stay in the signalling path, performing its role as a SIP Back-to-Back User
Agent (B2BUA) until the call is over or the service logic chooses to end the call.
The attributes of the SCC-HANDLE-BLEG-ANSWER-ONGOING message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.monitored
|
1
|
This value is present only when the call is a monitored call. Exactly one of .monitored or .charged will be present.
|
.charged
|
1
|
This value is present only when the call is a charged call. Exactly one of .monitored or .charged will be present.
|
.reason
|
Answered
|
[Required] The reason why this message was sent. |
.code
|
Integer |
[Required] The received SIP INVITE Final Response code (in the range 200-299). |
.ring_dsm
|
Integer |
[Required] The ring-time duration in deci-seconds, as measured by the LhoSipApp.
|
.max_call_secs
|
Positive Integer |
[Required] The actual maximum permitted call duration in seconds. This may differ from the requested value because the LhoSipApp applies a default, and minimum and maximum bounds.
|
.monitor_interval_secs
|
Positive Integer |
The actual monitor interval in seconds. This may differ from the requested value because the LhoSipApp applies a default, and minimum and maximum bounds.This value is present only when .monitored is present.
|
.grant_secs
|
Positive Integer |
The actual first grant duration in seconds. This may differ from the requested value because the LhoSipApp applies minimum and maximum bounds.This value is present only when .charged is present.
|
SCC-HANDLE-BLEG-FAILED-ONGOING
The SCC-HANDLE-BLEG-FAILED-ONGOING message is sent from the LhoSipApp to the LogicApp to
inform the LogicApp that a termination attempt (initiated as a result of a previously received
SCC-DO-BLEG-TERMINATION-ATTEMPT message) has completed, the B-Leg did not answer the call, and
the A-Leg is still connected.
The service logic must provide call control instructions:
- If
proceed_ok, proceed the A-Leg using theSCC-DO-ALEG-PROCEEDINGmessage. - Perform A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform another B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - If
decline_ok, decline the A-Leg using theSCC-DO-ALEG-DECLINE-FINALmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
The attributes of the SCC-HANDLE-BLEG-FAILED-ONGOING message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.reason
|
No Route / Declined / No Answer
|
[Required] The reason why this message was sent. |
.code
|
Integer |
A SIP Final Response code (in the range 300-699) associated with the B-Leg termination attempt.This value is present only when the B-Leg termination attempt received a SIP INVITE Final Response. |
.proceed_ok
|
0 / 1
|
[Required] Can the service logic still send the SCC-DO-ALEG-PROCEEDING message?This value will be 1 if we have not yet sent a Final Response,
and an SDP Offer would not be required to proceed.
|
.decline_ok
|
0 / 1
|
[Required] Can the service logic still send the SCC-DO-ALEG-DECLINE-FINAL message?This value will be 1 if we have not yet sent a Final Response.
|
SCC-HANDLE-BLEG-TEARDOWN-ONGOING
The SCC-HANDLE-BLEG-TEARDOWN-ONGOING message is sent from the LhoSipApp to the LogicApp to
indicate to the LogicApp that a monitored or charged call (initiated as a result of a previously
received SCC-DO-BLEG-TERMINATION-ATTEMPT message) has ended because the B-Leg has hung up, but
the A-Leg is still connected.
The service logic must provide call control instructions:
- Perform A-Leg interaction using the
SCC-DO-ALEG-INTERACTION-*messages (internal or external). - Perform another B-Leg termination as a SIP Back-to-Back User Agent (B2BUA) using the
SCC-DO-BLEG-TERMINATION-ATTEMPTmessage. - Hangup the A-Leg using the
SCC-DO-ALEG-HANGUP-FINALmessage.
The attributes of the SCC-HANDLE-BLEG-TEARDOWN-ONGOING message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.reason
|
Abandoned
|
[Required] The reason why this message was sent. |
.talk_dsm
|
Integer |
[Required] The talk-time duration in deci-seconds, as measured by the LhoSipApp.
|
SCC-HANDLE-MONITOR-REPORT-ONGOING
The SCC-HANDLE-MONITOR-REPORT-ONGOING message is sent from the LhoSipApp to the LogicApp to
indicate to the LogicApp that a monitored call (initiated as a result of a previously received
SCC-DO-BLEG-TERMINATION-ATTEMPT message) is ongoing, and to update confirmed talk-time.
The service logic may provide call control instructions:
- Allow talk-time to continue for
monitor_interval_secsseconds using theSCC-DO-CHARGE-EXTENDmessage. - Disconnect both parties using the
SCC-DO-ALEG-HANGUP-FINALmessage.
The attributes of the SCC-HANDLE-MONITOR-REPORT-ONGOING message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.monitored_secs
|
Positive Integer |
[Required] The accumulated talk-time in seconds confirmed by this and all previous reports, as measured by the LhoSipApp.
|
SCC-HANDLE-CHARGE-REPORT-ONGOING
The SCC-HANDLE-CHARGE-REPORT-ONGOING message is sent from the LhoSipApp to the LogicApp to
indicate to the LogicApp that a charged call (initiated as a result of a previously received
SCC-DO-BLEG-TERMINATION-ATTEMPT message) is ongoing, to update confirmed talk-time, and request
a further talk-time allocation.
The service logic must provide call control instructions:
- Allow talk-time to continue for a specified duration using the
SCC-DO-CHARGE-EXTENDmessage. - Disconnect both parties using the
SCC-DO-ALEG-HANGUP-FINALmessage.
The attributes of the SCC-HANDLE-CHARGE-REPORT-ONGOING message are:
| Field | Type | Description |
|---|---|---|
scc
|
Object | [Required] The SIP call control parameters for the message. |
.charged_secs
|
Positive Integer |
[Required] The accumulated talk-time in seconds confirmed by this and all previous reports, as measured by the LhoSipApp.
|
SCC-HANDLE-SHUTDOWN
The SCC-HANDLE-SHUTDOWN message is sent from the LhoSipApp to the LogicApp to indicate to the
LogicApp that call processing failed unexpectedly and could not continue.
The LhoSipInstance has been shutdown and the associated call is over.
The service logic should cleanup as appropriate.
No further SCC-... messages should be exchanged after this message.
The attributes of the SCC-HANDLE-SHUTDOWN message are:
| Field | Type | Description |
|---|---|---|
error
|
String | [Required] A description of the error that occurred. |