While the SIS is very flexible, its triggers and service composition scripts cannot do everything. You may want to extend its behaviour by writing extension components, using Java.
The SIS supports two type of extension component:
-
service composition selection extensions — for complex composition-selection determination
-
signalling interceptor extensions — for complex manipulation of messages flowing in and/or out of a service.
Service composition selection extension
When trigger composition selection is too complex for predefined SIS composition selectors to describe, you can use a service composition selection (SCS) extension. For example, you might need to interrogate an external subscription database or analyse particular initial request parameters to determine which composition to select.
You implement an SCS extension as a JAIN SLEE service that interacts with the SIS, using either the:
When the SIS evaluates a trigger that contains an extension selector, it fires an event to the extension component specified in the selector. The event that is fired, and the SLEE activity the event is fired on, depends on the context of the call:
Context | Activity type | Event type |
---|---|---|
SIP call |
||
IN call |
The event object fired to the extension component contains the initial request that the SIS received. The extension component examines the initial request to determine which composition should be selected. The extension component then reports one of three possible outcomes back to the SIS:
-
It has successfully located and selected a composition, and returns that composition’s identifier.
-
It cannot determine a suitable composition.
-
It terminates trigger processing and returns a protocol-specific response (depending on the context of the call). The SIS then behaves the same as when encountering a terminate clause; however the extension component determines whether or not the response counts as an error condition.
Signalling interceptor extension
When manipulating messages flowing in and/or out of a service is too complex for the composition scripting language, you can use an interceptor extension. For example, you might need to interrogate an external network resource to update some signaling parameters.
You implement an interceptor extension as a JAIN SLEE service that interacts with the SIS using either the:
An interceptor extension may be invoked from within any composition interceptor.
To invoke an interceptor extension component, the SIS fires an event to it. The event that is fired, and the SLEE activity the event is fired on, depends on the call protocol:
Protocol | Activity type | Event type |
---|---|---|
SIP |
varies, depending on the intercepted input or output message |
|
IN |
varies, depending on the intercepted input or output message(s) |
An interceptor extension cannot itself perform call control operations, such as sending messages to the network, on the original call it was invoked for. It can however use any API available to it to create new SLEE activities representing new interactions in the network, for any resource it needs to interact with. |