In this article we will create a custom service implementation using the Parlay X 2.1 third-party call WSDL document and create a custom WebSphere Telecom Web Services Server service using the Platform Application Service. The custom third-party call web service implementation is for a specific call flow that works with certain softswitches that have a requirement for 100rel extension support and early media interaction.
This custom third-party call web service implementation is a deviation from the standard call flows defined in "RFC 3725 Best Current Practices for Third Party Call Control in Session Initiation Protocol (SIP)."
Development of a custom service implementation with WebSphere Telecom Web Services Server as a platform requires the following:
- Understanding of Parlay X third-party call control (TPCC) web service specifications
- Call flow with the user agents and media server
- WebSphere Telecom Web Services Server platform
WebSphere Telecom Web Services Server
A WebSphere Telecom Web Services Server service implementation comprises a web service implementation exposing standards based abstraction to underlying network services, for example, Parlay X third-party call control. Service implementation participates in the WebSphere Telecom Web Services Server service platform environment, allowing a service provider to integrate and expose network interfaces and higher level IT interfaces that enable development of rich, value-added services. The subsequent sections discuss the design considerations specific to custom service implementations.
Custom third-party call interface
The third-party call interface is SOAP, the Simple Object Access Protocol, over HTTP request web service. Third-party call interface implements a SIP back-to-back user agent (B2BUA) controller per call that maintains the state of the third-party call until either of the user agents ends the call. The following operations are supported as part of the third-party call interface:
- makeCall
Sets up a voice call between 2 addresses, callingParty and calledParty.
- getCallInformation
Retrieves the current status, CallInformation, of the call identified by CallIdentifier.
- endCall
Terminates the call identified by the callidentifier.
- cancelCall
Cancels the the previously requested call identified by callidentifier.
Third-party call service components
The custom third-party call service is realized as a web service. The service logic is made up of the following components:
- The web service implementation with Java™Bean binding, along with the logic to invoke common components of WebSphere Telecom Web Services Server
- SIP servlets that handle SIP signalling to and from network elements, for example, Softswitch
- Java Management Extensions MBean components to manage the service in WebSphere Telecom Web Services Server
- Logging and trace messages at various stages of processing
SIP methods used by the custom third-party call
The custom third-party call will indicate this by setting the methods in the SIP INVITE message: INVITE, UPDATE, BYE, ACK, CANCEL, PRACK, 100rel, Precondition.
Rational Application Developer Version 7.0 is the recommended development environment. Rational Application Developer provides an integrated development environment (IDE) with user-friendly wizards and widgets for developing J2EE applications and web services-based applications.
Create a custom service project
A custom service is created by implementing a project utilizing the Platform Application Service. The Platform Application Service is available with the Telecom Web Services Server in the following form: platform.ear
- Start Rational Application Developer and choose to create a workspace.
- Import the platform.ear with the help of a Rational Application Developer import wizard. Choose the J2EE folder and select EAR file option. Rename the EAR file as "PX21_TPC_IMS" to refer to the Parlay X web service
- The next window displays a list of libraries (stored as utility jars). Select the libraries that create utility projects under the enterprise application. The utility jar files to select are admincons-ejb.jar, admincons-web.war, and admincons.
- Locate the deployment descriptor for the PX21_TPC_IMS, double click to edit and change the display name to "PX2_TPC_IMS".
- Select PX21_TPC_IMS project and create dynamic web project, set the
name as "thirdparty-web". This project will have access to all the
utility jars that have been imported into the workspace.
This web project consists of the B2BUA and the handlers that represent the respective user agents, UA1 and UA2, which are involved in a third-party call.
The handlers are siplets that extend the SipServlet superclass that implements the basic SIP methods: doAck, doBye, doCancel, doErrorResponse (failure response, for example UA2 phone rings but does not pick the call), doInfo, doInvite, doOptions, doProvisionalResponse, doUpdate, and doSuccessResponse.
- Set the dynamic web project with all the essential check boxes of the WebSphere Telecom Web Services Server libraries.
Import the WSDL and generate web service bindings
- After creating the dynamic web project, import the Parlay X third-party call WSDL and schema definition files from the WebSphere Telecom Web Services Server.
- Create new folder as follows: Thirdparty-web -> WebContent -> WEB-INF -> wsdl Select the folder in the explorer where the wsdl files are available (extracted from platform.ear) and import it into the wsdl folder
- Generate web service bindings:
- Right click px_tpc_s_2_3.wsdl and select Web Service. Generate a Java skeleton. In Web Service window change the level from "Start Service" to "Deploy Service".
- Change the "Web service runtime" to "IBM WebSphere JAX-RPC".
This allows the binding to implement
javax.xml.rpc.server.ServiceLifeCycle and provide access the
underlying ServletContext object runtime.
BindingImpl is generated for the 4 operations supported by ThirdParty Call, namely: makeCall, getCallInformation, cancelCall and endCall. The BindingImpl generated for ThirdPartyCall will be named ThirdPartyCallBindingImpl.java.
To create the utility projects mentioned below, in Rational Application Developer follow this path: File -> New -> Project -> Java EE -> Utility Project. Use the following project names appropriately.
- thirdparty
This project contains the JavaBean (getter and setter methods0 for each of the elements that are defined by the third-party call Parlay X specifications.
- thirdpartyAC
This project contains the MBean classes that represent the various configuration parameters specific to Custom ThirdParty Web Services. These are displayed on the IBM Telecom Web Services Server administration console.
- thirdparty-utils
This project contains the utility classes to validate address format, p-asserted-identity, data representation for Session Description Protocol as per RFC 2327.
The details provided above will help create a custom web service implementation on the WebSphere Telecom Web Services Server platform. Sample code demonstrating the capabilities of a custom third party call web service is provided with this article, see Download.
Note: This sample implementation is covered by IBM Certificate of Originality.
After the custom third-party call web service is developed, export the application as an EAR file. This represents a J2EE application.
From the Rational Application Developer workspace:
- Right click on the project PX21_TPC_IMS and choose the option export.
- Select Ear file
- Save the file to a folder on the local file system.
This enterprise application can now be deployed on an WebSphere Application Server. Start the application "Custom Third Party Call web service". This will enable the service to be visible in WebSphere Telecom Web Services Server administration console. To configure the various parameters for the custom service, click on Web Service platform link displayed under TWSS Administration Console.
| Description | Name | Size | Download method |
|---|---|---|---|
| Sample code | TWSS_Custom_3pcc_PI_17112011.zip | 4MB | HTTP |
| Documentation | Custom_3pcc_Import_To_Eclipse.zip | 2MB | HTTP |
Information about download methods
Learn
- Best Current Practices for
Third Party Call Control (3pcc) in the Session Initiation Protocol
(SIP)
-
IBM
Service Provider Delivery Environment Framework Industries:
Explore this open, scalable, flexible telecom industry
framework.
-
IBM WebSphere software for Telecom Information Center: Read the
product documentation for IBM telecommunications products.
-
IBM WebSphere Telecom Web Services Server product documentation:
Find product documentation for this IBM product.
-
IBM developerWorks
Industries: Find the latest industry-specific technical resources
for developers.
- Stay current with developerWorks technical events and webcasts focused on a
variety of IBM products and IT industry topics.
- Attend a free
developerWorks Live! briefing to get up-to-speed quickly on IBM
products and tools as well as IT industry trends.
- Follow developerWorks on
Twitter.
- Watch developerWorks on-demand demos ranging from product installation
and setup demos for beginners, to advanced functionality for experienced
developers.
Get products and technologies
-
Evaluate WebSphere Telecom Web Services Server: Download
WebSphere Telecom Web Services Server, which offers secure, flexible,
policy driven and controlled access to network services.
-
Evaluate: IBM Rational Application Developer for WebSphere
Software: Download a trial version, or work with the product in a
sandbox environment.
Discuss
- Get involved in the My developerWorks
community. Connect with other developerWorks users while exploring
the developer-driven blogs, forums, groups, and wikis.
Siddique A. Mohammed is an advisory software engineer and is part of the IBM Communications Service Enablers product development team at IBM India Software Labs, Bangalore. With over 10 years of IT experience, he has worked on many of the IBM middleware products for the Telecom domain and business process management. Siddique holds a Bachelor of Engineering degree in EandCE.




