In my previous blog, Computer Telephony Integration, and APIs, I defined Application Programming Interface and called out the most common telephony APIs – TAPI, TSAPI, and JTAPI. Each of these APIs has aspects that make them unique, but they share one big thing in common. All are programming libraries that an application “attaches to” in order to invoke telephony functionality. They aren’t applications, servers, or a collection of services that assist you in writing an application. They are function calls to invoke commands and “call backs” to asynchronously inform applications of status and events (e.g., a call is alerting, a call was released, a call was held, etc.).
The traditional telephony APIs also share the fact that they count on the developer having a very good understanding of how communications systems work. Of course, this significantly reduces the population of programmers that can use these APIs since those that comprehend call flows, call states, and call events are few and far between.
Enter Avaya’s new Collaboration Environment (CE). Like TAPI, TSAPI, and JTAPI, its goal is to allow developers the ability to create applications that can control communications systems. However, its approach is very different. First, CE allows rapid application development by people who are not immersed in the technical aspects of making a telephone or video call. In other words, if you can write code, you can create a communications-aware program.
Next, CE supplies pre-built frameworks that allow programmers to simply define the aspects that are unique to their application without having to start the application from scratch. For example, CE provides an Outbound Calling service that can be used to to easily initiate phone calls, play pre-recorded announcements, and detect button pushes. While you can do the same things with something like TAPI, a traditional telephony API requires the developer to write a significant amount of code to accomplish what CE can do with a single method. Application design, development, and testing are significantly reduced when you don’t have to reinvent the wheel with every new program.
In the current release of CE (2.0), the API portion consists of a collection of Java calls. However, unlike JTAPI which is also based on Java, CE has abstracted the communications functions into high level constructs. The eventual program that uses CE may deal with SIP calls, but that can be completely hidden from the developer who need only be concerned with asking CE to connect two users.
The fact that SIP, H.323, or good old ISDN was needed to do that is of no concern to the program or the programmer. All it needs to know is that it asked for the connection and that connection was made. Note that I used the work connection and not telephone call. That is because CE can deal with all sorts of media types. With the same amount of ease, CE can make a telephone call, a video call, send an email, or blast out an SMS text.
The following is a diagram of CE that I borrowed from Avaya.
In terms of API functionality, CE provides the following interfaces:
Call Methods
The Call Methods allow a service to monitor or modify calls on behalf of the calling party (user making an outbound call) or called party (user receiving a call). The Call methods include functions for allowing a call, blocking a call, redirecting a call to a different number, and changing the presented identity of a user. The Call Methods also allow a service to place an outgoing call.
Media Control Methods
The Media Control Methods allow a service to play an announcement to a single party on the call and to collect button press (DTMF) tones on the call.
Send Email Methods
The Send Email Methods allow a service to send an email to one or more recipients.
Send Text Message (SMS) Methods
The Send Text Message Methods allow a service to send a text (SMS) message to one or more recipients.
Create Conference Methods
The Create Conference Methods allow a service to schedule or cancel a video or audio conference using Scopia conferencing. Additional conference management capabilities are also available via the Scopia management API.
Data Access Methods
The Data Access Methods allow a service to readily access user, service, or global data from the provisioning database as administered on System Manager. These methods also allow the Collaboration Environment service to access data from an external database (external to Collaboration Environment, but may be in same VM or on same physical server as Collaboration Environment) using the Java Persistence API (JPA).
Collaboration Bus Methods
The Collaboration Bus Methods allow services to asynchronously communicate using a point-to-point model or a publish-subscribe model.
Logging Methods
The Logging Methods allow a service to easily log events and errors.
System Status Methods
The System Status Methods allow a service to access information on the CE system status (System Overload Level).
Now, I already said that CE is more than just function calls. I mentioned the Outbound Calling service. In addition to that, CE has a Call Intercept service which can be used to manipulate incoming and outgoing calls regardless of endpoint (H.323 or SIP) or type of trunk (ISDN or SIP). Think call redirection. Think call blocking. Think call screening. There is also the HTTP-Invoked service that performs an action upon receipt of an incoming HTTP request. For example, an HTTP request can be used to dynamically create a video conference and send the conference URL to requested attendees via email or SMS text.
One more thing. CE is more than just a collection of API calls and services. It’s a complete platform for application development. CE is installed on one or more virtual servers and provides a robust framework for housing and running communications aware applications. It was designed to be resilient and can be setup and installed in a high-availability, geo-redundant configuration.
There is much more to CE than what I am prepared to write about today, but I hope I have given you enough to be excited. If you want to learn more, simply Google “Avaya Collaboration Environment” for a wealth of information. If you are a propeller head like me, you will find enough to keep you happy for a long, long time.