I have been noticing an increasing number of telemarketing phonecalls the last weeks and I would like to avoid having those callers disturbing me or my family. They have been calling at 9am, 11am, 1pm, 8pm during the weekdays, saturday and sunday.
I have been running an asterisk system to handle my VoIP calles the last years and I have been using it for a number of things during the time.
I also use firewalls to secure incoming and outgoing IP traffic in my home network, so I thought the asterisk system could be used to do handle a “blacklist” of telephone number on my PSTN.
I would also like the asterisk system to kick in before my normal telephone gets the call and starts ringing.
If it detects a telemarketing caller, I would like it to answer the call and give a prerecorded message saying something like “You are calling from a unauthorised source. Please do not call again, this telephone line is being monitored.” and then just drop the line.
I found a list of known Swedish CallerID numbers on the Internet that I can use to “jumpstart” my blacklist. I only needed to have a dialplan and to configure my Sipura SPA-3000 ATA device to send my PSTN calls to my asterisk system.
This is how I configured it:
I started with configuring my SPA-3000 box to pick up the CallerID from my PSTN company.
The important configuration parameters are on the PSTN Tab in the Sipura web gui.
Line Enable: yes
Proxy: <my asterisk server IP>
User ID: pstn
Password: pstn
PSTN-To-VoIP Gateway Enable: yes
PSTN Ring Thru Line 1: no
PSTN Caller Default DP: 1
Line 1 Signal Hook Flash to PSTN: Disabled
Dial Plan 1: S0<:1010@gw1>
The Sipura dialplan is (as usual) pretty complicated (and powerful) and this dialplan sends the call to extension “1010” at the “gw1” interface in the SPA box.
I created a new context for the incoming PSTN, called [blacklist].
I also needed to create a sip device configuration for the Sipura box, so that the call would enter the correct context in the dialplan:
[pstn]
type=friend
host=dynamic ;the extension can register from a dynamic IP
context=pstn ;incoming calls to to this extension
secret=pstn
dtmfmode=rfc2833
disallow=all ;disallow all codecs
allow=ulaw ;allow only the ulaw codec
deny=0.0.0.0/0.0.0.0 ; block all registrations from other networks
permit=10.0.0.0/255.255.255.0 ;only allow registrations from my LAN
qualify=600 ;monitor the ping delay
If you are using another PSTN-To-VoIP gateway adapter, the box needs to be configured to send the incoming CallerID to the asterisk box before answering the call.
The list of telephone numbers I downloaded needed to be inserted into a database in the asterisk system. Because there is about 1600 telephone numbers in the list, I had a script to load it into the asterisk database from a unix shell.
The list can be updated in realtime by using the commands:
ast> database put blacklist <number> 1 (for blacklisting)
ast> database del blacklist <number> 0 (for removing blacklisting)
You can run these commands on the asterisk console from the shell using the form:
# asterisk -r “databse put blacklist <number> 1″
To check if the list is populated, you can use the command:
ast> database list
It will give you the list of blacklisted number.
To make the blacklist matching work, I neede to insert a few lines of code into my /etc/asterisk/extensions.conf file:
[pstn]
exten => 1010,1,GotoIf(${DB_EXISTS(blacklist/${CALLERID(num)})}?blacklisted,s,1);
[blacklisted]
exten => s,1,Answer
exten => s,n,Wait(2)
exten => s,n,Playback(ss-noservice)
exten => s,n,Wait(1)
exten => s,n,Hangup
So, if a call is detected in the SPA3K box, it is sent to the “1010” extension in the pstn context. The CallerID is compared to the blacklisted entries in the asterisk database.
If the CallerID number is found in the databse, the call is sent to the blacklist extension and the “s” extension kicks in and handles the call.
The call is of course logged in the CDR database so I can monitor the number of telemarketing callers by day and week. But that is a different story.
Now, my family is happy to not answering those stupid calls every day!
2 Responses to “Telemarketing blacklisting using Asterisk”
Leave a Reply
You must be logged in to post a comment.
January 24th, 2010 at 2:43 pm
Don’t forget the SIT tones before the ss-noservice!
February 13th, 2013 at 4:32 pm
Simple and effective, i like it!