ivam2 0.3

Copyright 2004 Lennart Poettering <mzvinzgjb (at) 0pointer (dot) de>


This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


Mon Feb 9 2004:

Version 0.3 released, changes include: time dependent configuration; this version breaks msntab compatibility as two new columns (time and date) are introduced - you need update the file manually; compatibility fixes with Python 2.2; assorted bug fixes

Mon Jan 26 2004:

Version 0.2 released, changes include: compatiblity with non-C99 compilers (such as gcc 2.95), python script fixes.

Mon Jan 19 2004:

Version 0.1 released, the initial release


ivam2 is an automatic phone answering machine software for ISDN and Linux. It is the completely rewritten successor of ivam featuring many additions.

ivam2 is seperated in two parts: the core daemon written in C and the automate logic coded in Python. The latter is pluggable and may be replaced by different implementations on a per phone number basis (both caller and callee). This makes ivam2 a very powerful application server for telephony services. The software is very scalable, multiple ISDN channels may be controlled from a single daemon. To write telephony applications for ivam2 is not complicated. In fact, they are simple executables which read audio data of the caller from STDIN and write audio data for the caller to STDOUT. DTMF sequences may be read from a FIFO special file. A framework for writing telephony applications in Python is provided, a simple answering machine script based on this framework as well. You are free to write applications in other languages such as Perl or C.


Version 0.3 is more or less stable and feature complete.


Have a look on the man pages ivamd(8), ivam2.conf(5), msntab(5), ivam-autobox(1), ivam-voicebox(1), ivam-echo(1), ivam-play(1), ivam-createvb(1), ivam-spool(5). (An XSLT capable browser is required)

The core daemon ivamd is configured through both the command line arguments and the file msntab. The latter specifies which telephony application to start for which caller/callee pairs. An example:

# Local  Remote   Days Times       Options          Action
47110816 *        *    *           defaults         @ignore
47110815 *        *    12:00-12:15 defaults         @ignore
47110815 12345678 *    *           defaults         @hangup
47110815 87654321 *    *           rings=2          ivam-play /path/to/an/ulaw/file.ulaw.gz
47110815 47110815 *    *           rings=0,pipehack ivam-autobox
47110815 *        *    *           rings=8,pipehack ivam-autobox

This configuration can be explained as follows: all calls to the local phone number 47110816 are ignored. Calls to the local phone number 47110815 are dispatched as follows: during lunch break all calls are ignored, if if the caller is 87654321, he will listen to a static message after two rings. If someone is calling the local number from the same number he enters the voice box system immediately. All other callers will be dispatched to the voice box system after eight rings.

For more information on this configuration file see the manual page msntab(5).

The one and only audio format ivam2 uses is 8 bit uLaw at 8000Hz. Audio files stored on harddisk are raw sample data without any header information. You are free to compress the audio files with gzip to save some bytes. You can create these files by recording them with a telephone and ivcall.

Another way to create these files is by using sox to convert standard .wav files:

sox foo.wav -t raw -U -b -r 8000 welcome.ulaw

The distribution of ivam2 comes with four telephony applications:

Have a look on the respective manual pages for more information on these applications.

The default audio samples for ivam-voicebox and ivam-autobox are in german language as this is my native tongue. You probably want to replace them with messages in your own language. (I am interested in adding high quality english language samples to the distribution. If you are a native speaker and think that you are capable of creating them, feel free to contact me.) Have a look on the manual page ivam-spool(5) for more information how to change the audio samples.


A current Linux kernel with isdn4linux and a compatible and configured (active or passive) ISDN card is required.

ivam2 relies on a current version of Python. It was developed on Python 2.3, but there are user reports that it works on Python 2.2 without changes.

ivam2 needs libdaemon (>= 0.4) and liboop (>= 1.0).

Please note: the current liboop-dev package in Debian unstable (1.0-1) is broken as the pkg-config file contained in the upstream distribution is missing. ivam2's configure script requires that file. Thus you have to compile your own version of liboop in order to use ivam2. Please beg the Debian maintainer of liboop so that he fixes this. For more information see Debian bug report #227061.

If you plan to use the message notification feature of ivam2 you need metamail, sox and oggenc installed on the local system.


As this package is made with the GNU autotools you should run ./configure inside the distribution directory for configuring the source tree. After that you should run make for compilation and make install (as root) for installation of ivam2. A SysV compatible init script is installed to your init directory.

After installation of the executables you need to create an user ivam and a matching group ivam. The spool directory (by default /var/spool/ivam2) has to be created and must be owned by ivam:ivam.

You should edit the configuration file msntab to enable the telephony services you want to use.


Wolfram Schlich for many suggestions and beta testing.

Wolfgang Ocker for some patches.


The newest release is always available from http://0pointer.de/lennart/projects/ivam2/

The current release is 0.3

Get ivam2's development sources from the Subversion repository.

If you want to be notified whenever I release a new version of this software use the subscription feature of Freshmeat.

Lennart Poettering <mzvinzgjb (at) 0pointer (dot) de>, January 2004
$Id: README.html.in 62 2004-02-09 20:03:13Z lennart $