Voxeo CXP is a sophisticated product that has helped hundreds of customers and half of the Fortune 500 improve their phone-based customer self-service and call routing. It is known for covering the entire lifecycle of application management, with tools for application design, development, documentation, deployment, management, reporting, and analytics. What is less known is the APIs that sit at the core of its engine, CXP Server, which prompted our EMEA VP Engineering, Stefan Besling, to recently write a great blog post about this topic as well: It’s the API, stupid! I would like to elaborate on some of the examples he has given.
The SOAP-based Web Services API (documentation), a REST version for a subset of functions, and our XML-based SDK (the CXP XDK: documentation) are the foundation of the majority of tools that make CXP what it is, among them:
- CXP Developer, the GUI and service creation & administration environment
- Storyboard Manager, the prompt management tool based on MS Excel
- CXP Commander, the graphical dashboard that sits in CXP Developer for service deployment, session partitioning, log/trace file management, etc.
- CXP Analyzer, the reporting & analytics suite
The CXP XDK exposes the full power of multi-channel application lifecycle management via an open, well-documented XML-based development kit. The XDK enables developers to use a coding environment of their choice, from simple editors like Notepad or vi, to enterprise-grade authoring and deployment environments like Eclipse, SAP NetWeaver Studio, or IBM WebSphere Studio, while still retaining full access to the object-oriented design approach taken by Voxeo CXP.
At the heart of the XDK stands CXPML (CXP Markup Language: documentation), an XML-based application markup language. It sits on top of open standards such as VoiceXML for IVR or XHTML for Web apps, and provides a clear abstraction layer for truly unified multi-channel applications. Furthermore, it provides all the powerful capabilities built into the patented object technology of Voxeo CXP, such as a true object-oriented development approach and inheritance.
Oftentimes, our customers and partners mistake CXP Developer, the Eclipse-based IDE coming with the product, for what CXP is all about. The opposite is actually true: CXP Developer is NOT a representation of what Voxeo CXP is about, it is merely one (our) implementation of a GUI sitting on top of our APIs and exposing the power of CXP Server, the brain of the product. Using the Web Service API and XDK, you can in fact create your very own service creation and administration front-end. Several examples exist, such as SAP’s Netweaver Voice, that OEMs CXP Server but comes with its own GUI. Another one would be our very own Business User Interface, a Web-based front-end for non-technical staff to manage aspects of your IVR or multi-channel applications. (Read more in our BUI flyer.)
Voxeo CXP and its powerful CXP Server are truly more of a middleware that you can embed seamlessly in your enterprise service frameworks and processes. Furthermore, Service Providers use it to offer value-added services to enterprise clients. A lot of the applications built on top of the Voxeo CXP middleware are around what Gartner calls Communications-Enabled Business Processes, or CEBP – a prime example of an application type that benefits from APIs.
Let me give you some concrete examples of the APIs.
- You would like to deploy CXP applications directly from XML files maintained in a version-control system used in your IT department? Go ahead, you can: deployXDKService (sessionID, serverRefID, serviceDef, isURI).
- Or you prefer deploying your apps directly from a different system, in a “volatile” fashion based on a single XML parameter representing your application logic? The WS API allows that, too (same method, with isURI=false and serviceDef being the CXPML string representing your application logic).
- You would like to embed a dashboard of CXP status information, such as a count of current callers into your system, directly into an existing Web-based front-end that you use for other applications? Easy: queryServer (sessionID, serverRefID, aggregateData).
As a matter of fact, one of our bigger customers, a large multi-national retailer, has done just that: They embed CXP-related data in a general dashboard of application (not just IVR) status and deployment features, that they had in place before they standardized on Voxeo for their IVR applications. A service provider customer of ours uses our APIs to streamline the deployment process across their multi-data-center setup of Voxeo CXP, now being able to deploy without touching any of our own tools – the process of bringing a new application version to production can be done completely from within their existing depoyment framework.
Developers often face tedious tasks such as batch creation of dialog objects, renaming operations, etc. CXP Developer does not have pre-built functions in the GUI for all of these tasks. However, using our APIs, a simple export of your application, coupled with an XML modification script in a scripting language of your choice, and a re-import, does the job:
- exportProjectVersion (sessionID, projectName, versionName, format, zipped, exportLib)
- …your XML string manipulation…
- importObject (sessionID, projectName, versionName, generateNewGUIDs, overwriteByName, objectDef, isURI)
A lot of the API revolves around security: restricting access to who can see and do what (projects, deployed applications, sites in a multi-tenant environent, etc.), exploiting CXP’s built-in user management features, tracking user access, killing connections, locking down access to certain areas of an application etc.
I could go on and on, but I believe you get the message, and hopefully some ideas around how to use our product more efficiently for your own deployments: Voxeo CXP offers rich and powerful APIs to be truly embedded as middleware into your existing systems and processes to add feature-rich communications applications to your business, be it for self-service offerings to your customers or employees, or to enrich business processes with voice, SMS, or mobile applications to improve efficiency.
Follow me on Twitter: