This chapter provides an introduction to the Cisco Unified Application Environment, its history, and its context within the Cisco Unified Communications Solution. It contains the following sections:
•Understanding the Cisco Unified Communications Solution
•Understanding the Cisco Unified Application Environment
Understanding the Cisco Unified Communications Solution
The Cisco Unified Communications Solution is a family of integrated IP communications products that deliver an end-to-end communications experience, including making and receiving phone calls; sending and receiving voice mails, audio, and video; data conferencing; instant messaging and presence; and more.
The Cisco Unified Communications Solution also represents a set of services that can be leveraged by developers to build applications. As such, the Cisco Unified Communications Solution is a development platform foundation that encompasses the key building blocks developers require to build applications, such as call control, media processing, conferencing, presence, instant messaging, and location.
The Cisco Unified Communications Solution is also rapidly evolving to add even more new interfaces and APIs to increase functionality and performance.
With this powerful functionality comes some challenges for the application developer. Keeping up with changes to APIs can be a full time job for a developer, because changes to APIs and interfaces can break applications. In addition, while the individual products in the Cisco Unified Communications Solution expose APIs for developer use, none provide a true developer platform. This is because to provide a complete development platform, a set of tools must also be delivered to empower developers to use the API.
The Cisco Unified Application Environment is, in essence, a service construction and delivery platform and a runtime container for your application. It provides the tools you need to develop applications and abstracts and normalizes the Cisco Unified Communications APIs, enabling you to build media rich convergence applications without becoming a telephony, media processing, or Unified Communications expert.
Understanding the Cisco Unified Application Environment
The Cisco Unified Application Environment consists of software applications, services, and tools for building, executing, and managing Unified Communications applications. You can use the Cisco Unified Application Environment to build applications that perform 1st- and 3rd-party call control and media processing, interface with enterprise conferencing and voice mail systems, or integrate with business applications and web services.
Figure 1-1 shows the Cisco Unified Application Environment from the developer perspective. The Cisco Unified Application Environment is located prominently in the middle, communicating with a federation of Cisco Unified Communications services. It abstracts complex interfaces to hide implementation and migration details and exposes a well-defined, easy-to-use platform for developers.
Figure 1-1 Your Application and the Cisco Unified Application Environment
Your application, once built, will leverage the following easily consumed Cisco Unified Application Environment APIs, allowing you to ignore the hidden complexities of SIP, H.323, SOAP, and other APIs often times specific to a particular Cisco Unified Communications product:
•cisco.uc.cuae.legacy.CallControl—Provides you with 1st-party call control (making and receiving calls). Allows you to call endpoints and answer calls from telephony endpoints, such as the Cisco Unified IP Phone. While you do not strictly need a Cisco Unified IP Phone to exert the cisco.uc.cuae.legacy.CallControl namespace, having one or more Cisco Unified IP Phones available is the most common way to manually test applications which use these APIs. These methods and events require a Cisco Unified Communications Manager to make the call or receive the call.
•cisco.uc.cuae.legacy.MediaControl—Enables you to stream audio directly to and from a Cisco Unified IP Phone, outside of the context of a phone call and also provides you with media control methods, such as Play and Record. In a very technical sense, it does not require a Cisco Unified Communications Manager itself, because generally audio streams are sent to call endpoints such as Cisco Unified IP Phones. However, this API is used implicitly by almost every action and event of cisco.uc.cuae.legacy.CallControl.
•cisco.uc.cuae.legacy.JTapi —Provides you with 3rd-party call control (monitoring and control over phone calls). These methods and events require a Cisco Unified Communications Manager with which to communicate.
•cisco.uc.cuae.legacy.AxlSoap—Enables you to manipulate the Cisco Unified Communications Manager database in real-time. These methods require a Cisco Unified Communications Manager running the AXL-SOAP web service with which to communicate.
•cisco.uc.cuae.legacy.ExtensionMobility—Enables you to programmatically control the Extension Mobility service. These methods require a Cisco Unified Communications Manager running the Extension Mobility service with which to communicate.
For more information, see this URL: http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/admin/6_1_1/ccmfeat/fsgd.pdf.
•cisco.uc.cuae.legacy.CiscoDeviceList—Provides you with cached information for devices registered against Cisco Unified Communications Manager, so that queries of device information only impact the Cisco Unified Application Server and not Cisco Unified Communications Manager.
•cisco.uc.cuae.legacy.CiscoIpPhone—Enables you to control the user interface for phones that support Cisco Unified Services (XSI).
Note For more information on Cisco Unified IP Phone services, including how to control the user interface and stream audio to the phone without a phone call, see the Cisco Unified IP Phone Services Application Development Notes at the following URL: http://www.cisco.com/en/US/docs/voice_ip_comm/cuipph/all_models/xsi/6_0/english/programming/guide/XSIbook.html
•cisco.uc.cuae.legacy.Presence—Enables you to receive real-time notifications of changes to the presence, availability, and other user status changes using Cisco Unified Application Environment require Cisco Unified Presence as the signaling backend. The Cisco Unified Application Environment can communicate directly with Cisco Unified Presence using SIP/SIMPLE.
Note You cannot write changes to a user's Presence status from your application.
•cisco.uc.cuae.messaging —Enables you to read and send voicemail using Cisco Unity and Cisco Unified Connection as the signaling backend.
Understanding Cisco Unified Application Environment Components
Figure 1-2 illustrates how Cisco Unified Application Environment core components interact with each other and also with external components, such as the Cisco Unified Communications Manager and Cisco Unified IP Phones.
Figure 1-2 The Cisco Unified Application Environment Architecture
The Cisco Unified Application Environment is comprised of these core components that you can use to build applications and services:
•Cisco Unified Application Server—A framework of Unified Communications APIs that allow you to build applications with the Cisco Unified Application Designer or with Etch-supported languages. It is also:
–An extensible application container that loads, manages, and executes applications built using the Unified Application Designer and plugins that have been developed to extend its code capabilities.
–The focal point for the Cisco Unified Application Environment.
•Cisco Unified Media Engine—A media server that originates, terminates, and manipulates audio transported via RTP. It supports multiple codecs, both high and low bit rate, and can perform traditional telephony domain functions, such as conferencing, transcoding, text- to-speech, speech recognition, dual-tone multi-frequency (DTMF) signal detection or generation, and interactive voice response.
The Unified Media Engine does not expose APIs for you to control. Rather, the APIs exposed by the Cisco Unified Application Server use the Unified Media Engine's capabilities when appropriate to accomplish audio-centric tasks to allow you to leverage its capabilities without an advanced understanding of media processing or digital signal processing.
•Developer Tools—You can install and run the following tools on your workstation:
–Etch—A technology that allows the Cisco Unified Application Server to expose its APIs over the network and enables you to use your preferred programming language instead of the Cisco Unified Application Designer. Any Unified Communications API made available in the Unified Application Designer is also available in Etch.
–Cisco Unified Application Designer—A visual IDE that enables you to build, deploy, and debug Cisco Unified Application Environment applications using a workflow-like programming model. After building an application using the Unified Application Designer, you can deploy and run the application on the Cisco Unified Application Server.
•Management Service—An API that provides programmatic control of the configuration of the Cisco Unified Application Server and Unified Media Engine.
The Cisco Unified Application Environment is licensed for production use only.
You can download and run the free SDK version of the software with the following licensing limitations and restrictions:
•Cisco software is licensed based on capacity and media feature criteria. The following capacity and media features apply to the free, SDK version of the Cisco Unified Application Environment:
–Six concurrent application script instances
–Six media ports capable of sending and receiving RTP, performing IVR, conferencing, integrating with a text-to-speech server, and integrating with a speech recognition server.
–A text-to-speech server with a one port capacity.
•A license for a speech recognition server is not included with the SDK version, but the required media resource for integrating with a speech recognition server is included.
For more information about system requirements, see Chapter 2, "Preparing Your Development Environment."