OnCall IVR Engine v3.3.4, part of OnCall IVR Suite v3.3.x
IVR Engine Technical Overview
This article provides a high level technical overview of the IVR Engine major components.
Components Interconnection
The following diagram shows how the various IVR Engine components interact. It also hints that some components could have multiple copies deployed on separate computers for increased load bearing capability.
Database
Stores configuration data for the solution including:
- Trees (Filestream based storage of XMLs)
- Mapping SIP URIs (phone numbers) to trees
- Announcements (Filestream based storage of WMA files)
- Tester users
- Call history
- IVR recorded messages (Filestream based storage of WMA files)
Web Service
Hides database structure and logic, provides high level interface to retrieve/store database records. The Web Service provides functionality for the NodeService, EndpointService and the IVR Designer:
- Activate/create menu trees
- List/upload/retrieve trees
- List/upload/retrieve announcements
- Lock/unlock trees
- List/set/remove tree mappings
- List/set/remove testers
- Log call history
- Ping
License Server
Manages license checkout/release operations for calls, counts parallel calls and/or volume.
Node Service
Presents menus for the callers, loads and executes the Nodes designed in the IVR Designer and stored in the IVR Engine database.
Start
,Stop
Answer
,Reject
,Disconnect
Announce
,Prompt
,Prompt Jump
- TTS or
- WMA file based
Transfer
- Keyword based speech recognition
- Recording
- Event Handlers
Disconnect Handler
Error Handler
- any custom templates
Endpoint Service
Low level component which does the following:
- Sets up the collaboration platform to communicate with the telephony system
- Creates the endpoints
- Handles incoming calls with the following primitives
- Answer
- Reject
- Drop
- Transfer
- PromptAndCollect – Local file or URL based, remote files are cached at local filesystem after downloading from IVRWS
- PromptAndCollectTTS
Component Server
Provides access to custom components (.NET Assemblies) to be accessed using JSON requests and responses serialized into JSON formatted strings. This component allows the integration of external services into the solution.