Quark Solutions Logo
Photo © by Páka Tamás
Switch to english Váltás magyar nyelvre
VoIP Voicemail System
Task

Our customer needed a VoIP based voicemail system with heterogeneous interfaces: VoIP based interfaces for legacy and ip phone systems, graphical interfaces for the web and for cisco xml phones. There was also a demand for a scalable system, which could handle 100.000 users and during peak time could serve 200 parallel calls.

Solution

In order to fit in the short terms, we decided to split up the task into smaller ones, which could be developed in parallel and created well defined interfaces in advance, between the different pieces. The good separation of concerns and the clean interfaces also promoted testability, independently from other components. Experience said that project time planning using the JAVA language and architecture is reliably calculable, but because of the real-time nature of a phone call and the possible high load during peak times, we were not sure whether the system built on that architecture could face the demand. After a proof of concept pilot project implementation Java shone way above our expectations.

Short technical description

The architecture follows the classical separated layers architecture, each layer is separated and layers are loosely coupled. The system is comprised of the the following different components:

  • telephony layer
    • handling SIP/RTP communication with softswitch
    • translating low level sip/rtp events into higher level phone events
    • receiving higher level phone commands and translating into lower level sip/rtp protocol specific commands
  • phone events/commands
    • high level modeling of events and commands serving as the communication language between the telephone user interface and the telephone network layer
  • telephone user interface (IVR - interactive voice response)
    • receiving higher level phone events from telephony layer
    • translating higher level phone events into voicemail commands
    • sending voicemail commands as phone events to telephony layer
    • storing state information of a phone session
    • using service layer to store messages and user setting changes into the database
    • operating on model objects
  • cisco xml telephone user interface
    • handling cisco xml phone user interface access
  • service layer
    • providing persistence functionality for the model objects
    • providing high level services for user interfaces
    • running daemon cleanup and scheduled processes
    • interfacing to ldap corporate directory
    • using security layer
  • security layer
    • authentication/authorization
  • model
    • the object oriented modeling of persistent entities of the voicemail system
  • web user interface
    • web user and administration frontend

The web server and the voicemail server are running in separate virtual machines in order to apply different virtual machine settings. Because of serving a real-time phone call is fundamentally different from serving a web request, the voicemail server needs special virtual machine tuning, such that the automatic memory management (garbage collector) never interferes with the high priority real-time phone serving thread. To accomplish scalability, high availability and fault tolerance we created a distributed architecture, where arbitrary voicemail servers could be started on separated hardware. The servers could connect to different synchronized databases and could communicate to each other to accomplish load balancing.

Product features
  • telephone user interface
    • leaving new message
      • internal/external caller identification based on database and ldap corporate information
    • administration
      • DTMF commands
      • secured access
        • authentication
        • authorization
      • phone voice mailbox registering
      • phone identification
      • user identification
      • remote access
      • voicemail management
        • playback - play, stop, rewind, quick playback
        • delete
        • archive
        • reply
      • greeting message management
        • personal, alternative, internal, external - record, playback, delete
        • activation/deactivation
      • user preferences
        • email sending settings
        • preferred language
        • pin code
  • web frontend
    • administration
      • user management
        • user credentials
        • group assignment
        • telephone user interface settings
          • greeting message settings
          • messages limits
      • group managemet
      • multiple user import
      • voicemail system settings
      • access all voicemail systems in the network
      • voicemail system reports
    • standard user
      • voice mailbox access through the web
        • user settings, preferences
        • voice mailbox administration
        • voicemail playback and download
        • greeting message playback and download
  • xml cisco phone interface
    • same as web and telephone user interface
  • scheduled processes
    • email notifications
      • new voicemail received
      • mailbox full
    • clean-up
  • ldap corporate directory interface
  • database independence
    • oracle, mssql, mysql
  • fault management
    • logging
    • snmp messages sent to fault management system
  • high availability
    • multiple server in the same network
    • multiple database connectivity
  • load balancing between server instances
  • separated web and voicemail server virtual machines
  • user friendly installer
  • auditing
    • user/administration access through all interfaces is logged and stored for later retrieval
  • reporting
    • administration access
    • failed login
    • phone port statistics
    • user activity statistics
    • system settings access
    • availability statistics
    • license limit statistics
Used technologies More images