Table of Contents
This chapter introduces reader to the concept of added value services and their implementation in IP telephony products. Value added services are services that integrate VoIP with other protocols and services. Seamless integration with Web, Email and potential other Internet services provides convenience which is a key feature of Internet telephony.
A natural extension to any internet service nowadays is its integration with the web. Unfortunately, H.323 is more difficult to integrate with web interfaces than SIP, due to the complexity of the protocol and its roots in the telecom world. Web applications that would be much needed in the area are the following:
The applications above are mostly found in commercially available integrated solutions and they employ proprietary methods that are extremely difficult to integrate with custom made web interfaces. If you are interested in setting up your own web-based application and integrate it with your H.323 services, you must find the means of connecting it to the gatekeeper you have deployed. The methods are many and vary from gatekeeper to gatekeeper, depending on the available APIs and supported interfaces.
In this section, we will simply list some the options available for interfacing with common gatekeepers. For more information please refer to Appendix B.
If you are simply interested in making a presence application, then any gatekeeper with RADIUS support can be interfaced with, through proper RADIUS server set-up. For example, the FreeRadius server can be configured to execute an external script each time an authentication is made. This method can be used to keep a list of currently registered endpoints on the gatekeeper and make it available over the web as a primitive means of advertising availability. A slightly better method, would be to configure FreeRadius with MySQL back-end and maintain a database table with currently registered endpoints, by updating the table for each RADIUS event (authentication and accounting).
An alternative to the above method, is to use SNMP to interface with your gatekeeper, assuming it has SNMP support. The Cisco MCM has SNMP support but with limited functionality, while the Radvision ECS supports the H.341 standard for SNMP access. You can explore the options available to an external application interfacing with SNMP by carefully studying the supported MIBs for your gatekeeper.
The Cisco MCM gatekeeper actually implements a very flexible API for receiving events for triggers that the administrator is interested in processing. The external application can choose to further process the event, or just log it for informational purposes. The API interface to the MCM is proprietary and based on the GKTMP ad-hoc protocol for informing the external application of RRQ,URQ,ARQ,LRQ,DRQ,BRQ and related (confirm/reject) events. The API allows the external application to issue respective confirm and reject (xCF,xRJ) commands for specific events, based on external application logic. Cisco does provide a library in C and template code for an external application, but it not fully working code and requires significant resources to be applied before a demo application can be built. Also, there exist commercial solutions from Cisco partners which are based on this same API.
The GNU gatekeeper provides a very useful command line interface for monitoring and control of gatekeeper operations. It is called the "Status Interface" and allows telnet connections from remote administrative nodes to connect and monitor RCF/RJ,UCF/RJ,ACF/RJ,LCF/RJ,DCF/RJ,BCF/RJ events with detailed info. Additionally, it allows monitoring of call detail records (CDR) for accounting applications and "RouteRequest" messages for interfacing with the "Virtual Queues" feature, proprietary to the GNU gatekeeper. The fact that many different nodes can connect at the same time over this administrative interface and process different events of the gatekeeper, allows for a distributed and flexible implementation of monitoring services. Indeed, a number of tools have been developed that build on this interface and provide interesting functionality: