Asterisk offers its users great flexibility in most of its features. One of them is the choice between three different modules for different ways to store voicemail. These include:
- To a file (app_voicemail – default)
- To an ODBC database (app_voicemail_odbc)
- To IMAP (app_voicemail_imap)
The good news for Asterisk administrators is starting with version 17, we offer the capacity to compile all three modules at once. This makes life easier for those users who have to install Asterisk on multiple servers and don’t want to go through the process of re-compiling Asterisk each time they need to generate a different voicemail storage module.
Note each module has its corresponding dependencies listed:
- app_voicemail_odbc. Dependency: The Unix-ODBC library. Requires basic configuration of Asterisk odbc conf files: res_odbc.conf and all configuration related to Unix-ODBC.
- app_voicemail_imap. Dependency: The IMAP c-client library. Requires basic configuration of the voicemail.conf file and the installation of the University of Washington IMAP c-client library.
Now that Asterisk creates them in the same build, administrators can choose to enable the voicemail storage module they desire to operate on a particular server. Note that administrators still should enable only one module at a time. We wanted to create this new capability to address several requests from our users.
Old method. Only one voicemail module can be compiled at a time.
New method. From the Applications menu, all three voicemail modules can be compiled at the same time.
The steps to compile and enable the voicemail storage modules are simple. Within the Menuselect visual package selector we removed the dedicated voicemail storage menu, which exclusively allowed compilation of one module at a time. The voicemail storage modules are now listed in the “Apps” section, where you can check the corresponding boxes to indicate which storage modules you want to create. Compiled by default is the ability to save voicemails to a file (app_voicemail).
Once the modules you chose are created — and just before starting Asterisk — open modules.conf and edit it to load only one module at a time. All three modules should be listed in the file, always with your chosen one marked as “load” and the other two marked for “noload”, like this:
As shown here, only one module at a time should be marked for “load”
modules.conf: load = app_voicemail.so noload = app_voicemail_odbc.so noload = app_voicemail_imap.so
Using modules.conf to establish which voicemail modules to load has the added benefit of not having to stop asterisk to change voicemail storage formats. An administrator can easily change them while Asterisk is running. All the Administrator has to do is first change the configuration file and then reload. With this method, we are making voicemail management easier for administrators in charge of running multiple Asterisk servers, and different voicemail environments.
Another benefit this method offers is the ability to activate a backup method should the currently active module fail. For instance, if ODBC voicemail is active and the connection to the ODBC server is lost, a simple script could identify this event and unload the app_voicemail_odbc.so module and load app_voicemail.so on the fly, therefore saving all messages to file while the ODBC connection is down and guaranteeing no messages are lost.
Now more than ever, with multiple voicemail storage options and support for multiple integration techniques, replacing an aging enterprise voicemail system with an Asterisk server is simple.