# Natural Access definition

Natural Access is a development environment that provides standard programming interfaces for hardware-independent telephony functions. The following illustration shows the relationship of Natural Access to an application and to a telephony board:

Natural Access provides

- A standard set of telephony functions grouped into logical services.

  Natural Access services provide a variety of functions such as establishing and maintaining network connections, determining call status, playing and recording voice messages, and generating and detecting DTMF tones.

- A standard application programming interface (API) for services that are independent of the hardware.

  The Natural Access environment is designed to support different hardware and services from different vendors. Applications can access services providing the same programming interface without needing to know the type of hardware implementing the services. When using the Natural Access development environment, you do not program for a specific piece of hardware, but more abstractly for a service with a consistent API.

- A standard interface for accessing and changing service parameters.

  All services providing the same functionality have a standard set of parameters. The service's parameters have default values that are sufficient for most configurations. To adapt the service for special configurations, the parameters can be modified to enable or disable features. Natural Access provides a standard set of functions to retrieve and modify service parameters.

- Error trapping features.

  Natural Access provides a mechanism to register an application-defined error handler.

- An architecture that supports as-needed resource allocation.

  During Natural Access initialization, you specify the services required for the application. Resources for only those services will be allocated.

- Support of multiple programming models for most application needs.

  The Natural Access architecture enables single-threaded, multi-threaded, and multi-process programming models to meet any application program requirements.