callPopPy: call popups for Asterisk

Contents

Links

Introduction

callPopPy is a desktop incoming call popup notifier for Asterisk. Written in Python, callPopPy is tested on Linux (Ubuntu) and Windows. callPopPy can lookup incoming numbers in an SQLite database and then display the name of the caller. A Thunderbird extension, Squalit, is available to integrate callPopPy with Thunderbird's address book, enabling popup notification of callers' names as recorded in Thunderbird.

It would be possible to write other companion applications to enable integration with other Personal Information Managers (PIMs). Details of the required database schema are given in the Database section.

Installation

You can grab the latest release of callPopPy, currently version 0.1.1, or checkout the current development version on github.

Unpack the archive to a suitable location. callPopPy assumes all its files other than the configuration file and database will be in the same directory. The configuration file and database should be located in

<homedirectory>/.callpoppy

Copy config.sample to that directory and rename it to 'config'. More detailed instructions can be found in the README file.

Requirements

callPopPy using gtkPopupNotify callPopPy in action

callPopPy is a python script, so obviously requires python to be installed (although one day I might produce a standalone executable for Windows).

It also requires a working Asterisk installation configured to allow connections from callPopPy to the Asterisk Manager Interface (see Configuring Asterisk).

callPopPy uses the starPy library to interact with Asterisk. Grab starPy from here.

Other requirements are likely to already be installed on a modern Linux system. For Windows some additional information is provided in the README-WINDOWS.txt file. Additional requirements include:

Configuration

callPopPy is configured by editing the file:

<homedirectory>/.callpoppy/config

The file config.sample forms a good base for your config file and is well commented. All the sections are required, but most values have sensible defaults. The values that must be filled in are:

Configuring Asterisk

You will need to configure your Asterisk server to allow remote connections to the Asterisk Manager Interface. In Asterisk's manager.conf you will need something like:

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0

You will also need to set up a user for callPopPy. This can be done in manager.conf, or in a separate file in the manager.d directory. For a user 'callpoppy' with the password 'topsecret':

[callpoppy]
secret=topsecret
read=call

Database

callPopPy expects to find a SQLite database at

<homedirectory>/.callpoppy/callpoppy.db

in which it can lookup incoming numbers and retrieve callers' names. Maintaining this database is a job for other utilities, and a companion program, Squalit, is available for users of Thunderbird. Squalit populates callPopPy's database from the Thunderbird address book.

The database must contain a table named 'numbers'. It doesn't matter if it contains other tables too. The table 'numbers' must contain fields named 'tel' and 'name'. 'tel' should contain unique values. Again, it doesn't matter if other fields are present. A suggested schema is:

CREATE TABLE numbers (id INTEGER PRIMARY KEY, tel VARCHAR(20) UNIQUE, name VARCHAR(255))

"name" contains the name of the caller as callPopPy should display it.

"tel" should contain the the phone number. callpoppy checks against only the last 10 digits. The number of digits can be configured, but 10 has proven to be a suitable value in the UK at least.

The reason for checking only the last 10 digits is to get around inconsistencies in the way in which different providers and trunks report calling numbers, some with country codes, some without, some with 'outside line' prefixes. For example, the UK number 01926 410410 may appear as any of

What is consistent is that the last ten digits are always 1926410410

Screenshots

callPopPy using gtkPopupNotify callPopPy using the gtkPopupNotify library.
callPopPy using libnotify callPopPy using libnotify / pynotify on a Gnome based Linux distribution such as Ubuntu.

Credits

callPopPy evolved from pyCalledMe by Olivier H. Beauchesne.

On non-Gnome systems (and optionally on Gnome systems) callPopPy makes use of the gtkPopupNotify library by Daniel Woodhouse.

The rest of it was written by Chris Hastie.

Licence

CallPopPy is released under the GNU General Public License version 3