Software Development for Cisco's AVVID Architecture
Last Updated on: March 26, 2006
This section covers programming in Cisco's VoIP environment, including Cisco CallManager, Cisco IP Phones, Cisco CallManager Express, and more.
Technologies include streaming media to IP Phones, monitoring and reacting to IP Phone events such as incoming, outgoing, conference, and transfer calls with TAPI and JTAPI, directory interaction with LDAP, and more.
Cisco provides excellent and comprehensive documentation to everyone free of charge on their website. There are many 3rd party vendors providing solutions for Cisco's telephony environment, and many companies leveraging the rich development environment available in Cisco technologies.
One of the most exciting benefits of converged environments is in accessibility. In the past, only a limited number of development partners had access to the documentation, API's, and technologies to develop applications in a telephony environment for traditional PBXs from vendors such as Nortel, Avaya, Mitel, and many others. I have had experience developing for these and many other telephony environments, and the converged environments offer more opportunities than ever before.
In the future, I may go into other environments, such as Nortel's MCS 5100 if time permits, but since information is readily available to any enterprising Cisco developer, it makes sense to start here!
Asterix development is fairly well-covered, but we may go down that road as well. Programming in the modern converged environment is all about opportunity!
The programming languages we'll cover include Java, .NET, and the traditional Microsoft technologies such as ASP and C (for TAPI). Many of Cisco's APIs are available from many languages such as PHP and many others, though if you're looking to monitor the IP phones and similar devices using JTAPI and/or TAPI you will use Java/JSP/Servlets for JTAPI and any C-language capable language such as VB, ASP, .NET, C, etc for TAPI.
Some of the programs you write will be called by Cisco IP Phones, and therefore will be web-based in nature. Other programs may react to events occuring such as incoming calls and similar situations, and push information to the phone or perform other event-based actions. This is why many Cisco telephony developers are often involved in web-based development.
Applications can operate in a variety of ways, often more than one. We'll take a look at some specific classes of applications, such as:
One thing you will have to deal with when developing applications for the Cisco VoIP environment is bugs. Not just your own, but Cisco's as well. There are bugs on the call server platforms (such as CallManager), on the IP Phones (such as the Cisco 7970 IP Phone), and in the documentation. While this shouldn't generally be a surprise, as there are often bugs present in most software, you need to be aware that there are a variety of bugs in particular versions and firmware loads that will trip you up and cause you headaches.
When you encounter a situation that you think might be a bug, you have a number of options:
Different CallManager versions have different bugs that affect them, so you should be aware of the version of CallManager that you are developing for or that your customers are using. In addition, when developing applications for the Cisco IP Phones, different phone loads are affected by various bugs, which can be more difficult to track down.
This section contains the answers to some commonly asked questions, and as such, it will grow over time.
Q: Why is this section of the website not done yet?
A: I haven't had time. Sorry, grasshopper.
Cisco provides a lot of resources for technical support, end-users, and developers. This section will focus on resources available to developers.
First, you should check out the Cisco Developer Support Program. You need a Cisco CCO account, which requires free registration on Cisco's website. Here you will obtain access to newsletters, developer newsletters, FAQs, SDKs, APIs, and more. An indispensible resource. Optionally, you can subscribe to an annual Developer Support Contract, which allows you to open Developer Support cases with Cisco which provides additional access to Cisco Developer Support.
Also very useful are the Cisco Programming Guides. This resource provides APIs and documentation on the Cisco APIs from JTAPI to the AXL API. These resources are available to anyone to access and do not require a registration.
Next up are the Developer Documents.This is similar information as provided by the Cisco Programming Guides, but is organized by version and contains some additional information not available in the former links, such as the Cisco CDR specifications. As with the Cisco Programming Guides, no registration is required to access these resources.
Once you have taken a look at these resources, check out the Developer Forums from Cisco's Networking Professional Forums. View some of the recent topics on the IP Phone Services for Developers forum to get a feel for some of the activities developers are working on, and feel free to ask you own questions as you develop your own applications, or answer questions based on your experiences.
Take a look at App Central, a place to find applications, partners, and other information related to IP Phone applications.
Required Reading for Cisco IP Telephony Partners provides more than enough reading material to work through! While not developer-related, if you want to get up to speed on networking-related technologies you will find this informational quite useful.
For general networking-related training including IP Communications, check out Cisco's Learning and Events pages. Normally a fee is required to access this content but it is currently being provided free until January 31, 2006. Take a look at Cisco News, which can be informational regarding what Cisco and their customers are up to. This is also available as an RSS Feed.
Non-Cisco resources includes ccmstuff.org, a source for a variety of Cisco tips and tricks for developers and non-developers. This also includes instructions for running CallManager under VMWare.
Theres a lot more, but that's all for now! Check back for updates...