Trusted Caller ID list in Inboud route


I am trying to setup two inbound routes in my home: one general where user is greeted with IVR script, and other for trusted CID’s where destination is an extension.

Now, it works nice when I specify single number in “CallerID Number” field, but since I have a list of approx. 50 trusted numbers, is there a way to avoid creating equivalent number of inbound routes and be able to just create a CID list?


Edit 2021-07-22 - everything here is out of date. The allowlist module now exists for this

The Smartroutes module does exactly what you are looking for, but depending on your skill level, you may not find it easy to configure. A bit more info here: [garbage link removed] Make sure you get the latest version, 1.3.1


I’ve also created what I call “Supercallers” who get special treatment based upon their Caller ID, and I agree that it’d be better to be able to enter a list of Caller IDs instead of doing them seperately.

There are two things you might try. I haven’t tried them and thus have no idea if they will work, but they might.

First, try using the X’s and N’s from the Dial Pattern rules, and see if Asterisk will match based upon those rules. I.e., if you want everyone who calls from 2125550000 to 2125559999 to get treated the same way, try 212555XXXX.

Second, try putting the Caller ID’s into the single field with &'s seperating them. i.e.


If you test this, please let us know if it works.

There’s also undoubtedly a way to manually program this in the .conf files, but that’s beyond my expertise.

First one is accepted by FreePBX GUI, but it does not work, while second is not even accepted as valid input (Please enter a valid Caller ID).

Thanks for the suggestions, I will keep trying.

Yes, Smartroutes module did exactly that. I’ve used Customer DB plugin and everything works just perfect. Thanks Igaetz for this great suggestion.

can you go over on what you did to get this working? I’ve entered the user information into the customerdb however it seems that no matter what is returned it’s always sending to the same extension.

if i look at the asterisk log trace i can see it’s returning the proper variable in the lookup when it compares it to the database.

on the customer db table i used

name: name of client
did: the CID of where they are calling from
account: 10,20 etc these i used to assign where i want them to go.

inside the smart route
table: customerdb
search column: did
look for: callerid
return column: account

in my destination
match type = exact
match value = 10
destination = extension 1
match valute = 20
destination = extension 2

default dest = terminate call (just so i can differentate for the time being)

in my inbound routes i tied the DID that i want to use this on to use smartroutes as the destination