THe SIP Third Party HTTP Trigger feature processes an HTTP request, creates the A and B party legs, and maps the HTTP request to SIP INVITE messages.
Details
Feature name |
SipThirdPartyHttpTrigger |
---|---|
Applicable contexts |
SIP service |
SAS Support |
No |
Prerequisite Features |
N/A |
Typical feature execution points |
SipThirdPartyAccess_SessionAccept, SipThirdPartyAccess_SubscriberCheck, SipAccess_CreditAllocatedPostCC, SipAccess_ControlNotRequiredPostCC, SipEndSession |
Processing HTTP requests
The SIP Service accepts HTTP requests in the following format:
http://<host>:<port>/sentinel-sip?subscriber=447408800855&cgpn=642200001&cdpn=642200002
The feature checks for presence of the subscriber
, cgpn
, and cdpn
request parameters. If all parameters are available, the feature creates the suspended legs with the initial INVITE messages, according to the parameters from the HTTP request and feature configuration. The legs after creation are suspended and linked.
If the feature is being used in an uncharged scenario, it should run in the SipThirdPartyAccess_SubscriberCheck
script in order to trigger the sending of an HTTP 200 (callIsBeingSetup) response without waiting for a CCA. In a charged scenario, it should not run in SipThirdPartyAccess_SubscriberCheck
, to ensure that it waits for a success CCA before sending the response. See Configuration for an example of configuring the script to cover both cases.
Example Call Flows
Session state inputs and outputs
Outputs
Name | Type | Format | Description |
---|---|---|---|
CallType |
com.opencloud.sentinel.common.CallType |
|
Call type of this call |
SessionType |
com.opencloud.sentinel.common.SessionType |
|
Session type of this call |
APartyLegName |
String |
|
A party leg name created by the feature |
BPartyLegName |
String |
|
B party leg name created by the feature |
HttpAci |
javax.slee.ActivityContextInterface |
ACI on which the HTTP request was received, and which will be used to send the response |
Error scenarios
Scenario | Handling |
---|---|
Missing any of required HTTP request parameters: |
Sends HTTP 200OK response with the |
Error on leg creation |
Sends HTTP 200OK response with the |
On CreditLimitReached or OCSFailure |
Sends HTTP 200OK response with the |
Mappers
This feature uses three mappers:
-
The first two are used to map HTTP requests to outgoing SipRequests, as determined by the mapper execution point. The default implementations are HttpRequestToCallingPartySipRequest:
// a mapper that takes a {{HttpRequest}} and generates a {{SipRequest}}. final Mapper<SentinelSipSessionState> mapper = getMapperLibrary().findMapper( getSessionState().getSentinelSelectionKey(), HttpRequest.class, SipRequest.class, SipMappingPoint.CallingPartySipRequest );
// a mapper that takes a {{HttpRequest}} and generates a {{SipRequest}}. final Mapper<SentinelSipSessionState> mapper = getMapperLibrary().findMapper( getSessionState().getSentinelSelectionKey(), HttpRequest.class, SipRequest.class, SipMappingPoint.CalledPartySipRequest );
-
The third mapper maps a SipThirdPartyCallOutcomes to a HTTP response The default implementation is SdpDiffToSdpCcrDiffMapper:
// a mapper that takes a {{SipThirdPartyCallOutcomes}} and generates a {{HttpResponse}}. final Mapper<SentinelSipSessionState> mapper = getMapperLibrary().findMapper( getSessionState().getSentinelSelectionKey(), SipThirdPartyCallOutcomes.class, HttpResponse.class, mappingPoint);
Configuration
To support both charged and uncharged calls, the SipThirdPartyAccess_SubscriberCheck
script should be configured as follows:
featurescript SipThirdPartyAccessSubscriberCheck { ... if not session.MonitorCallOnly { run SipThirdPartyCharging } else { run SipThirdPartyHttpTrigger run SipThirdPartyCallSetup } ... }
The configuration for mapping HTTP request to the SIP INVITE message is available under SIP Third Party Call Configuration. The parameters used by the feature are:
-
ExpiresHeader
-
MaxForwardsHeader
-
RouteHeaderURI
-
SupportedHeader
-
UserAgentHeader
-
Transport
-
IsSipURIUsed
-
SipURIDomain
Statistics
Statistic | Incremented when… |
---|---|
APartyLegCreated |
A party leg is created |
BPartyLegCreated |
B party leg is created |
LegsLinked |
legs have been linked |