Commsdesign Home Register About Commsdesign Feedback Online Opportunities SpecSearch GlobalSpec




















eLibrary

EE TIMES NETWORK
 Online Editions
 EE TIMES
 EE TIMES ASIA
 EE TIMES CHINA
 EE TIMES FRANCE
 EE TIMES GERMANY
 EE TIMES INDIA
 EE TIMES JAPAN
 EE TIMES KOREA
 EE TIMES TAIWAN
 EE TIMES UK

 EE TIMES EUROPE
 ANALOG EUROPE
 AUTOMOTIVE DL EUROPE

 POWER DL EUROPE

 Web Sites
 • Audio DesignLine
 • Automotive DesignLine
 • Career Center
 • CommsDesign
 • Microwave
    Engineering
 • Deepchip.com
 • Design & Reuse
 • Digital Home DesignLine
 • DSP DesignLine
 • EDA DesignLine
 • Embedded.com
 • Elektronik i Norden
 • Green SupplyLine
 • Industrial Control
    DesignLine
 • Planet Analog
 • Mobile Handset
    DesignLine
 • Power Management
    DesignLine
 • Programmable Logic
    DesignLine
 • RF DesignLine
 • The RF Edge
 • Techonline
 • Video | Imaging
    DesignLine
 • Wireless Net
    DesignLine

ELECTRONICS GROUP SITES

 • eeProductCenter
 • Electronics Supply &
    Manufacturing
 • Conferences
    and Events
 • Electronics Supply &
    Manufacturing--China
 • Electronics Express
 • Webinars


06 July 2009



Managing Telephony Services with the S.100 API

In the right hands, the S.100 API provides a versatile interface between hardware components and any computer-telephony application. This toolset provides a unified method for constructing scaleable, reliable telephony applications with mixed-vendor equipment.

By Alan Percy
CommsDesign
Mar 01, 2001
Print This Story Send As Email Reprints
 
Realizing features such as call processing, directory services, and unified messaging requires designers to coordinate a complex array of functions, services, and processes in various types of complex telephony equipment. The S.100 application programming interface (API) provides just such a toolset by brokering transactions among hardware and software components in telephony-enabled products.

S.100 is the result of the work done by the Enterprise Computer Telephony Forum (ECTF), which was founded in 1995 as a non-profit organization ofcomputer telephony vendors, developers, integrators, and users from around the world. The result of this work is an architectural framework, that encompasses software and hardware, allowing a broad collection of services and telephony resources to be combined in sophisticated applications (see Figure 1, ).

A key component

A key component of this architecture is the S.100 API. This API fosters a development environment that opens the door to new and enhanced telephony applications such as interactive voice response (IVR), enhanced call and automated attendant services, and other useful services.

The architecture provides several advantages for developers of computer telephony (CT) applications. The most important advantages include support for multiple applications, improved scaleability, and cross-vendor support. The majority of telephony application products - designed to work with servers dedicated to specific purposes - operate independently of each other, resulting in separate servers and telephone resources (See Figure 2, ). Generally, if a corporation has a fax server, voice mail, an IVR system, and other applications, each resides in a separate server, uses a separate set of telephony resource cards, and requires separate telephone lines from the local PBX.

A primary design goal of the S.100 architecture is flexibility, allowing multiple applications to execute and share telephony resources on a common server. S.100 accomplishes this flexibility by implementing an abstraction layer that makes the actual telephony resources and their physical location in the network transparent to the application.

As a result, one telephony server can provide the required telephone interface and media processing resources to enable one or more application servers to execute a number of applications at the same time. For small-scale applications, the architecture allows the application and telephony server to be combined into a common server (See Figure 3, ).

Products based on the S.100 framework significantly enhance the efficiency of telephony resources at all levels including DSP resources and network interfaces such as lines and circuits from the PBX or central office. This resource efficiency results in a reduced total systems cost, eliminating the proliferation of specialized hardware.

Is smaller better?

In addition to enabling different applications to share a single telephony server, the S.100 architecture also allows applications to be divided into smaller components. Multiple smaller applications are easier to develop, easier to upgrade, and easier to test.

In the past, applications almost had to be written as one huge program. This was primarily because the application had to manage all the telephony resources and determine how to allocate ports and route calls. S.100 handles nearly all resource allocation and call routing, which dramatically simplifies the application and its development process, and allows the application to be broken into many smaller parts.

For example, instead of building one large executable voice messaging application that provides auto-attendant, voice-mail, and paging features, a designer could build a suite of smaller applications. One application could implement only the auto attendant, for instance, with another application just for voice mail, and a third for mailbox access features. The S.100 architecture allows applications to easily hand calls off to other applications without the user's knowledge. Each resulting application would be smaller, easier to develop, and far easier to test.

Scaling up

The S.100 framework helps developers to scale applications that were originally envisioned for small system environments to larger environments. If a potential customer wants a developer to scale a voice-mail application that was originally written to support 24 ports so that it supports a large wireless phone network that needs 1,000 or more ports per site, the task is to scale the application to support the need. The S.100 architecture enables this task by allowing multiple telephony and application servers to work together and grow as needed (see Figure 4, ). With the API, applications can be scaled to larger deployments with a minimum amount of code changes.

The current support solution for systems with high resource demands of this type requires building a number of application servers. Each server requires a copy of the application and the entire configuration. As an example, sophisticated computer telephony applications, such as automated stock-option plans, typically use databases to implement certain features. Reliable commercial databases offer a per connection licensing model, requiring a fee for each connection to the database, which results in higher costs. Using S.100, a designer can minimize the number of connections to the database and reduce the total hardware requirements, dramatically simplifying administration.

One vision for S.100 is to provide a common API and development specification for many different manufacturers. Using a common API eliminates the need to learn and use different APIs for different system components. Writing to one API speeds development and allows the developer to select the vendor hardware that is best-suited for a particular CT application. At this time, however, the component that provides cross-vendor support within the ECTF vision (S.300) is not yet ratified. As a result, different vendors must collaborate to implement the driver-level interfaces between S.100 and the actual hardware components.

One of the challenges today's developers face is writing applications for the existing PSTN and, at the same time, planning ahead for the emerging IP-based networks of the future. Ideally, a developer would be able to write an application once and deploy it on either network technology without modification.

Portability between network technologies allows applications to retain their value even though the underlying network infrastructure changes. This preserves the investment put into applications and ensures their usefulness over a longer period of time.

By abstracting many of the call-control details away from the application, the S.100 development environment makes applications portable across the various network types. This means that an application can be written and tested using simple loop start analog cards, but deployed on either T1/E1 digital lines or IP-based systems of the future.

No longer will application developers need to code using conditional logic based on the particular DSP card type or network interface. Nor will developers need to develop and maintain hardware abstraction layers of software. With S.100, developers use one API and common logic for all DSP cards and network interfaces.

Building blocks

Building an application using S.100 is somewhat different than with many of the proprietary APIs of the past. While these differences might initially seem odd to seasoned developers of vendor-proprietary APIs, the architectural advantages and development flexibility will eventually outweigh the additional complexity found with S.100.

This difference is akin to the change from developing with the C programming language to C++. Once the more advanced capabilities are understood, the improved efficiency can actually make development much easier. The hard part is learning the new terminology and concepts.

The following are some descriptions of the key components of the ECTF architecture that developers depend on when implementing applications using S.100.

S.100 depends on a set of text configuration files known as profiles. These profiles reside on the server and provide details that identify the applications, their required resources, and call-routing rules. The syntax for these profiles can be quite involved, but by providing the configuration information in a text form, the system administrators and installers can adjust the system configuration on a site-by-site and application-by-application basis without code modifications.

The profiles allow the server software to register the hardware resources available on the server. This eliminates the responsibility of initializing and managing the hardware from the application.

A key concept within S.100 profiles is a group. A group is a named collection of required resources that an application will need when handling a call. The name of each group and the resources needed by a group are defined in a profile configuration file.

Each group configuration entry in the profile defines the primary resource used to interface to the outside world (typically via some type of network interface) and a number of secondary resources which are media-handling capabilities (usually a player, recorder, signal detector, and signal generator).

The system call router

Since there are a number of applications on each client and telephone line connected to a server, a method of direct incoming calls to the different applications is required. This task is accomplished by the system call router (SCR), which is a standard part of the ECTF architecture (see Figure 5, ).

Using a profile configuration file the SCR can determine, for any incoming call, which group of hardware resources to allocate to the call, and then which application should handle the call. The SCR profile includes a number of optional criteria that can be used to direct incoming calls based on the calling number, dialed number, and time of day. This is useful in situations where an auto-attendant application and fax-server application will operate on the same server and use the dialed number to differentiate which application will handle each call.

In addition to handling incoming call traffic, the SCR also manages outgoing call traffic. As an application needs to initiate an outbound call, the SCR will automatically allocate the required resources and select a port for that call.

Since the SCR automatically handles incoming and outgoing call routing, an application developer can then concentrate on just the application, rather than the resource-management and telephony-bus "plumbing" tasks.

Key value pairs and sets

Another significant part of S.100 that was borrowed from client/server database technology concerns key value pairs and sets. Due to the distributed nature of the S.100 architecture, the method used to pass parameters, return results, and represent events employs a technique called key value pairs (KVPairs). KVPairs hold information elements that include a symbol and an associated value. Each symbol has an implied type (such as string or integer) allowing the representation of a wide variety of values.

Lists of KVPairs can be assembled into key value sets (KVSets). KVSets are useful for storing and passing a list of parameters or event values as one entity. This makes the KVSets easier to manage and pass from client to server.

The S.100 API includes a complete set of functions to create, examine, and manipulate KVPairs and KVSets. Using these functions, developers build the parameters needed to initiate media operations (play, record) and to inspect resulting events (completion, error).

Application development

Actual application development is accomplished using the S.100 API. The API is more abstract than past proprietary APIs, but is very robust and can accomplish many standard media, call-control, and management functions.

The biggest difference most developers notice almost immediately is the handling of incoming calls. Since most of the initialization, call detection, and routing is handled by the SCR, the application is dramatically simplified.

For a developer to get a true understanding of what the development environment is really like, it helps to examine some source code. To accommodate this, Code Listing 1 illustrates a function that plays a prompt from an already recorded file. For clarity, the actual initialization and setup of the call is omitted, but the code sample does show the KVSets in action and the prompt playback function.

Integration tasks for current and future telephony-capable networks can often seem gargantuan. Use of the S.100 API can greatly simplify even the most complex integration tasks, smoothing out one more step in the development process.

Alan Percy is a senior field engineer at Brooktrout Technology specializing in IP Telephony technologies. Percy holds a B.A. in computer science from the State University of New York at Buffalo. He can be reached at apercy@brooktrout.com.

Code Listing 1: Sample of Playing a Prompt from a File
CTstatus PlayPrompt(CTses_ct hSession, CTgrp_ct hGroup,
CTstring Prompt, CTsymbol * Error)
{
CTstatus rc;
CTkvs_ct eventkvs, optional_args;
CTtranInfo TranInfo;
CTsymbol err;
CTkvs_ct rtc;
CTsymbol stop[] = { CCR_ECTF_Idle };

// create the kvsets
CTkvs_Create(&eventkvs, &err); // Resulting events
from Playback
CTkvs_Create(&optional_args, &err); // Arguments
for Playback
CTkvs_Create(&rtc, &err); // Playback Run Time
Controls

// initialise TranInfo Structure (used to catch result
ing events)
CTtran_Initialise(&TranInfo, eventkvs);

// stop the function if a hangup is detected
CTkvs_PutSymbolArray(rtc, Group_ECTF_Stop, &stop[0], 1,
&err);

rc = CTplyr_Play(hGroup, &Prompt, 1, 0, rtc,
optional_args, &TranInfo, CT_modeSync);
if(rc != CT_statusOK)
{
printf("CTplyr_Play Failed.\n");
PrintTranInfo(hSession, &TranInfo, stdout);
*Error = TranInfo.error;
}

// clean up kvsets
CTkvs_Destroy(eventkvs, &err);
CTkvs_Destroy(optional_args, &err);
CTkvs_Destroy(rtc, &err);

return rc;


---

Resources

  1. "Architecture Framework White Paper." This paper provides a more detailed look at the architecture and mission of the ECTF. The paper is available at: http://www.ectf.org/ectf/tech/download.htm.

  2. S.100 Media Services (Revision 2). A six-volume specification, defining the S.100 framework and API for developers wishing to implement their application within the ECTF architecture. The set is available at: http://www.ectf.org/ectf/tech/download.htm.




EE Times TechCareers
Search Jobs

Enter Keyword(s):


Function:


State:
  

Post Your Resume
-----------------
Employers Area
Most Recent Posts
Boeing seeking Embedded Software Engineer 5 in Huntington Beach, CA

SEL seeking Lead DSP Engineer in Pullman, WA

SEL seeking Power Systems Instructor in Pullman, WA

Rutland Regional Medical seeking Server Engineer in Rutland, VT

Osram Sylvania seeking Mechanical Design Engineer in Danvers, MA

More career-related news, resources and job postings for technology professionals



Home  |  Register  |  About  |  Feedback  |  Contact   |  Site Map
All materials on this site Copyright © 2009 TechInsights, a Division of United Business Media LLC All rights reserved.
Privacy Statement ¦ Terms of Service