More than a decade ago we introduced CallerID Trifecta for Asterisk® and the FreePBX® platform. A few months later it morphed into CallerID Superfecta and, as they say, the rest is history. Today CallerID Superfecta is used by over a million people around the globe to obtain CallerID Name (CNAM) information from over 70 different lookup sources. What a journey it has been, and our special thanks to the dozens of contributors over the years.

Unfortunately, for those in the United States, most of the lookup sources now are commercial enterprises much like the original Bell Sisters that monopolized CallerID information by keeping it proprietary instead of forwarding CallerID Name data together with the CallerID number of incoming calls. In fact, for many users, the cost of CallerID lookups now is more expensive than the cost of the VoIP trunks carrying the calls. While we can’t solve the problem, we can make the cost of these CallerID lookup services considerably cheaper using a neat little trick with CallerID Superfecta.

Here’s the problem. Many cell phone users don’t subscribe to any service that keeps track of the caller’s identity. The same is true for those using services such as Google Voice. When you receive a call from one of these users, the CNAM provided for the caller will either show something like "Mobile Phone User" or the city and state of the caller’s cellphone provider. This doesn’t keep the commercial CNAM providers from dinging you every time you receive one of these calls. And if your girlfriend calls you a hundred times a month, the commercial CNAM providers charge you for a hundred lookups even when the calls are from the same caller. That ends today. Once you implement this new CallerID add-on, you’ll only get billed for a single CNAM lookup regardless of how many times that person calls your PBX. Better yet, with a little effort, you can quickly replace the CNAM entries of the mystery cellphone and Google Voice callers by inserting their actual names into your Asterisk phonebook using either the FreePBX GUI or the Asterisk CLI. We’ll show you how.

Here’s the trick. CallerID Superfecta lets you prioritize source lookups when incoming calls hit your PBX. For example, you can lookup the CallerID number in AsteriDex or the Asterisk Phonebook in a fraction of a second at no cost. Once there’s a match on the CallerID number of the caller, additional lookups stop. So what we want to do is prioritize the lookups so that the free sources are used before any commercial lookup service is triggered. For the commercial CNAM source in the U.S., we’re going to use OpenCNAM in our examples because their service is one of the easiest and least expensive to implement. All OpenCNAM lookup options are less than a half a cent per lookup. By placing OpenCNAM third in the Default Superfecta lookup sequence, it will only be used when there is no match in either AsteriDex or the Asterisk Phonebook.

Getting Started. It would obviously be a hassle to have to add every caller to one of these phonebooks every time a call arrives on your PBX. So the other half of today’s magic is to automatically add an entry to the Asterisk Phonebook every time a call hits your PBX. Then, the next time you receive a call from that same number, CallerID Superfecta will be able to find it in your free database instead of querying OpenCNAM for yet another commercial lookup. As a general rule, in the United States, phonebook data is not copyrightable. However, you should consult an attorney for questions regarding the legality of this methodology as it applies to any particular CNAM lookup service.

We’re aware that CallerID Superfecta has had a caching option which provides similar functionality; however, users have reported mixed results and data corruption with that feature so we’ll be implementing a slightly different solution that relies on Asterisk’s extremely reliable SQLite3 database. This also provides the flexibility to customize the entries after completion of a call for more accurate CNAM information on subsequent calls. Unfortunately, a CNAM entry of ATLANTA, GA doesn’t tell you much about the caller even though you paid for the lookup. By inserting these call entries in the Asterisk Phonebook, you then have the option of easily customizing them in multiple ways. Not only will this provide better CNAM data on subsequent inbound calls, but the phonebook can also be used to make outgoing calls and to produce an alphabetized phonebook listing as well.

cd /var/lib/asterisk
sqlite3 astdb.sqlite3 "select key,value from astdb where key LIKE '%cidname/%' order by value"

Adding the Magic Sauce to Incredible PBX 2020. Let’s begin by adding all of the components that you’ll need to complete today’s tutorial. Login to your server as root and issue the following commands:

fwconsole ma downloadinstall phonebook
cd /tmp
tar zxvf sub-log-caller.tar.gz
rm -f sub-log-caller.tar.gz
mv sig-fix /root
mv /var/lib/asterisk/agi-bin
cd /etc/asterisk
cat /tmp/sub-log-caller.txt >> extensions_custom.conf
cd /root

Activating CallerID Superfecta. There are three steps in activating CallerID Superfecta. All of these are performed after logging into the FreePBX web interface as admin. First, configure the Default Scheme for CallerID Superfecta in Admin:CID Superfecta using the settings we previously displayed. Use the Arrow keys to properly order these five lookup sources: Asterisk Phonebook, AsteriDex, OpenCNAM, Trunk Provided, and Telco Data.

Next, you need to create and fund an account at Once your account is established, copy your credentials and insert them into the OpenCNAM lookup source by clicking on OpenCNAM’s tool icon :

Once you have saved the Default Scheme, then you need to enable CallerID Superfecta for each of your Inbound Routes under the Other tab in Connectivity:Inbound Routes:

Adding Hook for Inbound Call Processing. One of the decade-old shortcomings of FreePBX has always been the inability to insert dialplan code into the Inbound Call process without forever damaging your ability to add additional DIDs moving forward. While extensions_override_freepbx.conf lets you extract and manipulate large chunks of FreePBX code, the drawback is that once you do that, the flexibility provided by the GUI goes up in smoke unless you remember to always move the newly generated dialplan code back into the override context.

We much prefer a simpler way of inserting custom dialplan code into the Inbound Call processing routine, but it requires a change in the FreePBX Core module. We would caution you about using this except on Incredible PBX 2020 servers. Otherwise, it will trigger nasty signature checking errors on the FreePBX Dashboard. The secret sauce above does all of this for you. Just remember to run /root/sig-fix whenever you update the Core module on your PBX. The nasty error messages will be a not-so-subtle reminder for you.

The secret sauce also adds some supplemental dialplan code to extensions_custom.conf. This code actually populates the Asterisk Phonebook with the new call entries each time a call is received by your PBX.

Adding CNAM data to CDR Listings. One of our other concerns with the current CDR implementation in FreePBX is the lack of display of CNAM data for most entries in CDR listings. Currently, the only way to decipher the CNAM information is to use your mouse to hover over each of the CallerID numbers. We much prefer displaying both CallerID Name and Number in the CallerID column of CDR Reports. Here’s how to fix it. And, remember, you’ll need to issue these commands again whenever you update the FreePBX CDR module.

cd /var/www/html/admin/modules/cdr
sed -i "s|cdr_formatSrc($row['src'], $row['clid']);|cdr_formatSrc($row['clid'], \
$row['clid']);|" page.cdr.php
fwconsole reload

Managing Your Asterisk Phonebook. As we mentioned, there are a couple of ways to display and/or update entries in your Asterisk Phonebook that have been populated with OpenCNAM lookups. From the Asterisk CLI, you can display entries like this: database show cidname.

You also can add or update entries using the Asterisk CLI like this:

database put cidname 8431234567 "Mundy, Ward"

The simplest method to manage your Asterisk Phonebook is from within the FreePBX GUI. Simply navigate to Admin:Asterisk Phonebook. There you can edit individual entries and replace generic CNAM entries such as Atlanta, GA within something more descriptive of the caller’d identity. You also have the ability to export the data and even create speed dial entries for frequently called parties. Once Speed Dial numbers have been created, you can reach the party from any phone connected to your PBX by dialing *0 plus the speed dial number.

Finally, you need to complete some additional steps to implement the Spam Call Blocker as documented in this tutorial. Enjoy!

Originally published: Tuesday, February 4, 2020

Need help with Asterisk? Visit the PBX in a Flash Forum.


Special Thanks to Our Generous Sponsors

FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, Digium, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls plus quadruple data center redundancy assures that you’ll never have a failed call. Tutorial and sign up details are here.

The lynchpins of Incredible PBX 2020 are the new ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!

Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.

Print Friendly, PDF & Email

Be Sociable, Share!

Leave a comment

Your email address will not be published. Required fields are marked *