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

Successful flow

This call flow shows a case when Sentinel receives valid HTTP request. Sentinel responds with 200 OK with callIsBeingSetup in the message body.

sip-third-party-http-trigger

Invalid HTTP request

This call flow shows a case when Sentinel receives invalid HTTP request. The request is invalid if any of required HTTP request parameters subscriber, cgpn or cdpn is missing. Sentinel responds with 200 OK with callSetupFailed in the message body.

sip-third-party-http-trigger-invalid

Session state inputs and outputs

Outputs

Name Type Format Description

CallType

com.opencloud.sentinel.common.CallType

NetworkInitiated

Call type of this call

SessionType

com.opencloud.sentinel.common.SessionType

http_trigger

Session type of this call

APartyLegName

String

AParty

A party leg name created by the feature

BPartyLegName

String

BParty

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: subscriber, cgpn, cdpn

Sends HTTP 200OK response with the callSetupFailed as the content

Error on leg creation

Sends HTTP 200OK response with the callSetupFailed as the content

On CreditLimitReached or OCSFailure

Sends HTTP 200OK response with the callRefused as the content

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);

Feature responses

Response Reason

featureHasFinished

feature has finished

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

Previous page Next page
Sentinel Express Version 2.9.0