App_NetworkCLID : Network based CallerID support for Asterisk PBX

Overview

Thralling Penguin maintains an add-on Asterisk module which enables Asterisk to transmit network caller id information to clients which support any of the App_NetworkCLID supported network caller id protocols.

This allows a tray application on Windows or a dock application on Macintosh to "pop-up" a caller id display on an incoming call, for instance.


Latest Release

The current release builds on Asterisk version 1.2 (It is also known to build with SolarisVoip.com's Asterisk version.) Additionally, the following network caller id protocols are supported:

Additional features include:

  • File based configuration of client protocol and list of remote clients to notify.
  • File based configuration override, by specifying the arguments to NetworkCLID from the dialplan.

Download Version 0.1
(source code)


Installation

To install App_NetworkCLID, download and unpack the App_NetworkCLID source code.

wget http://www.thrallingpenguin.com/resources/app_networkclid-0.1/app_networkclid.c

Download the latest stable version of Asterisk PBX, and prepare it for building App_NetworkCLID.

wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.2.27.tar.gz
tar xzvf asterisk-1.2.27.tar.gz
mv app_networkclid.c asterisk-1.2.27/apps

Edit the apps/Makefile to include App_NetworkCLID.

cd asterisk-1.2.27
vi apps/Makefile

Append app_networkclid.so to the end of APPS list. Your APPS should be similar to this:

APPS=[a bunch of existing lines and then]
     app_mixmonitor.so app_stack.so app_networkclid.so

Now the usual steps for building Asterisk apply.

make

Configuration

Configuration is stored in /etc/asterisk/networkclid.conf and is specified as:

[context]
extension = protocol,hostname[:port][|hostname[:port]]

An example configuration would look like the following, for the default context and 1234 as the extension. Additionally, this entry uses the YAC protocol for the host 127.0.0.1

[default]
1234 = yac,127.0.0.1

Additionally, entries in the configuration file may be overridden in the dialplan. Using the above information, a sample dialplan entry would look like the following in /etc/asterisk/extensions.conf

[default]
exten = 1234,1,NetworkCLID(yac,${CALLERIDNAME},${CALLERIDNUM},127.0.0.1)
exten = 1234,2,Dial(SIP/1234)
exten = 1234,3,Hangup

However, if you did not want to use the override feature, then a sample dialplan would look like below and the configuration file would be referenced.

[default]
exten = 1234,1,NetworkCLID
exten = 1234,2,Dial(SIP/1234)
exten = 1234,3,Hangup

Client software

Macintosh (OS X)

Windows

If you know of any other client software, please feel free to contact us and we will update this list of client software.

Clients using routers with NAT

When implementing this solution, you should port-forward the remote clients through their
firewall. Additionally, if many users behind a router need access, then you may port-forward
many ports on the router, and specify the different ports within the 
/etc/asterisk/networkclid.conf configuration.

Future To-Do's

  • Implement the NCID protocol
  • Support Asterisk 1.4

References

Asterisk PBX
http://www.asterisk.org/

YAC protocol
http://sunflowerhead.com/software/yac/


About the Author

Joseph Benden, Sr. is the owner of Thralling Penguin LLC. Thralling Penguin designs, develops, and extends software technologies for the most demanding business applications, as well as offering VoIP Consulting services.