This is an older post, but I have a solution that might work for you for this.
Yes you can do this. And you can use all the built in functions of Issabel modules.
We can "trick' the PINSET module to handle the phone numbers that you want to match, and you can use DYNAMIC ROUTES to send the calls to the proper person.
Here is how:
Create a PIN set for each of your different extensions you want to receive specific calls.
The Pinset description would be the "extension" that you want to send calls too.
The pinset "PIN LIST" will contain the callerID numbers of the people you want to send to this extension
Description = 4000
PIN LIST =5551212
3334343
5551232
7775857
Here is a picture of what I mean:
Now create a DYNAMIC ROUTE
Give it a Name "Customer Lookup"
Source type = "MySQL"
HOST = localhost
Database = asterisk
Username = root
password = YourMySQLPassword
Query = select description from pinsets where passwords like '%${REALCALLERIDNUM}%'
The QUERY above will look at the pins and any PINS that match the CallerIDNumber will return the description of that PINset, So if caller 5551232 rings, the query will return a descprition of "4000". So we will send the description to Extension (or ring group or queue or wahtever) you want really.
Then under the "MATCH" we send the calls to their matching extensions
4000 -> Extensions -> 4000
5000 -> Queue -> Queue1000
And then most importantly, "Default Destination" must send any calls that do not match to a spot to avoid busy/engaged tones.
Here is a picture of of the above
Give it a test!
Here is another picture. You don't need to use a "number" for the description. You can use text. So this example shows that I have used dynamic routes to block some numbers. You could also send some numbers to voicemail ALWAYS.