Asterisk - Call Centers, PBX's and Robo-Calling
From Operation Cat Herder
Return to the Grassroots r3VOLution Field Manual
GET PAULITICAL – CONTRIBUTE!
You must be logged in to submit material: Login or Register
To contribute material to this page, click here: Post My Stuff!
Contributed material is approved and imported into public pages several times daily.
Asterisk Call Centers, PBX's and Robo-Calling
Campaign Dialer - Robo-calling
Build a campaign dialer
I am going to post instructions(and possibly make a website) showing you guys how to make your own automated Ron Paul message Campaign Dialer with a older unused computer, You will need at least PIII 733mhz and 256megs ram and 20-40gb hard drive. It uses the open source linux(FREE) Asterisk Phone system and a add-in called vici-dial, you setup your computer, connect it to your phone line and when you go to work it starts to dial out and deliver messages that you make or make your own ron paul messages. If anybody here know Linux scripting or anything that will help me (I am not a guru, but I do know TCP/IP, phones,voip and linux) please email me at chrisholley1975 @ gmail.com for all those that want to try it own their own here are the links
for the phone operating system go to:
http://astguiclient.sourceforge.net/vicidial.html
I myself find these calls quite irritating, but I think it MIGHT be a good idea. I have messed with asterix and trixbox, and even have the motorola 62802-51 chipset based modem that will hook up to a POTS line if it's not using VOIP - as the FXO device. (Wildcard X100P).
Sorry, I don't remember enough Linux scripting, but my friends tell me I'm a computer genius :)
After many calls to the Ron Paul HQ I did clear it with them but they did not endorse it. I think that this might annoy some people (you can please some of the people some of the time but not all of the people all of the time) but it will bring more follows than any other means. I think this is the only way to get Ron Paul's name out. Dr. Paul is not getting fair time or a fair shake, in fact he is getting slammed by supposedly conservative talk show hosts and FOX news(we report, we decide)! I did some generic calculations and if you have 5 lines x $22 = $ 110 (basic rate phone service with touchtone only in my city after taxes is $22 per line total) and 5 computers(IBM Lot of 5 IBM Netvista) $350 http://123compute.com/showsp.php?ide=8612 and finally 5 Wildcard X101P voice modems $30 x 5 = $170 including shipping http://x100p.com/products/FXO.php
for 5 lines and five computers dialing 20-40 numbers a hour for 8 hours a day (11am to 7pm), you could reach 800 - 1600 people a day (that will at least get the name Ron Paul into the masses. Remember any publicity(in most cases) is good publicity). You could possibly reach 45,000 a month per city! Can you see the possibilities? If enough people do this it could get in the news and give even more publicity! This would cost a volunteer a upfront cost of about $800 and a monthly charge of $110 (or less or more with VOIP account), or you could only setup one computer that you have laying around the house and connect it to your house phone or VOIP account for practically nothing or do as I suggest nd start your own call center! THIS IS STRONG!!!! I want to setup a website and instructions and images files of certain computers or let users upload image files of their personal setting so people that are not capable of setting up this could boot up the computer and burn the image file and they have to only plug and play. I just need help from anybody that will give it! please contact me at chrisholley1975 (at) gmail.com
P.S. with a VOIP account users could target different areas of the US as Ron Paul visits at 0.005 (1/2 penny a minute) http://www.voicepulse.com/ we could really start a REAL grassroots campaign!
And if anybody is concerned about the "Do Not Call" registry and "DNC" lists, it does not cover "political campaigns, and political fund raisers" so you can dial away with NO PROBLEMS! I know everbody is concerned about annoying people, well I would rather piss a few people off than have another useless "George Bush" or "Bill Clinton" (both crooks and liars) in the Whitehouse again. I honestly believe Ron Paul is our only hope and I truly believe that in my heart. I also believe that our country will not last or at least it will start our decline with another useless Republicrat or Demopublican (except for a few issues they are the same crooks and liars!)
It's a great idea, even if he may not approve. All the candidates use phone banks. Legally, it should be organized as a separate organization such as Citizens for Freedom. There just isn't enough funds for massive TV ads. If someone could do the legal setup, I would be willing to participate. We would need a well written script and a professional voice. Otherwise, it would sound like a bunch of amateurs.
I am no guru like I said, but well I am planning to make ISO's (image files, I do not know installation scripts) for certain makes and models of computers and cards to burn on the computer. I also must disagree that it has to be totally organized, the long wolf approach is the fastest, easiest and by far the hardest thing to stop. I do agree that it has to be professional to some extent. I do this exact thing for my company and I have done voiceovers that sound pretty good if done right, that is why I propose to put up a website so users can upload good messages. I am from the south and NOBODY looks down on messages or IVR prompts that use the southern dialect (well if it is not a thick dialect)as long as it is in the southern region and I think it is that way in each area. I think this could be a better approach because each region has their own dialect and a person from Boston or Chicago would turn alot of southeners off(alot of us suffer from rude comments and jokes about our accent) and vice-versa (I imagine a person from Chicago or Boston does not want to hear "y'all need ta vote fer Ron Paul" or "ey there doan cha know vote Ron Paul"), but to each their own. I just think if we could get 10 people in each city to do this or could target cities before Dr. Paul gets there with VOIP dialing (1/2 a penny a minute) we could cause a wave that the 0wned media could not deny!
bye the way the voice quality is very good, so if anyone thinks it will be crappy, it won't. My company installs these on companies with 8-20 phone lines and the voice quality for calls and the IVR is excellent.
I am not a techy but am interested. I do have a cable phone and internet connection and free long distance. I also have an old computer not in use. I happen to work for a call center from my home. I am very used to working with scripts. I was raised in Tx. But have lived out of that state since the age of 15 and my parents were northern. I have lived in colorado for about 20 yrs. I basicly have a mid west accent. I could make my own recording if you privide me with a good script. Like I said not a tech by any means but I can follow directions lol. I work on the phones every day I listen to alot of different accents. I would fit Co,NM,KS,NB.WY.UT.ND.SD.NV.CA.AZ.ID. OR. You get my drift. Anyway yes I think it is a great idea. You can figure to only reach about 1 out of 10 people during week days on week ends about 60% would be a good guess. I can give tips too to others who would record.Voice inflection, pitch, speed, confidence and warmth are all very important.
Thank you guys for all the email and calls! I am now starting the project! stay tuned, please if any Ron Paul supporter with any tech skills (PHP,MySQL,Linux,Python,Perl,CGI) or anything you think might help email me: chrisholley1975 @ gmail.com
Robo-Dialing for Ron Paul
The following information is mirrored from: http://running-c.com/node/2 With thanks to Bob Smither
Note that Asterisk can be used to set up call centers, PBX's and Conferencing systems as well as for robo-calling. It has been used successfully to provide local dial-ins for conference calls that would have normally incurred LD tolls.
Robo-Dialing for Ron Paul
A combination of technologies makes it possible to seek out Ron Paul supporters at very little cost. These pages document how the open source Asterisk software telephony platform can be used.
In a nutshell, an Asterisk server is configured to make calls to a provided list of telephone numbers. When a person answers the phone, a pre-recorded message is played that tells them a little about Ron Paul and gives them an opportunity, by pressing a key on their telephone keypad, to ask for more information or to have a volunteer contact them. Followup to the person can be in the form of some RP campaign literature or a personal phone call.
Here are the details on one way to set this up:
Hardware
Robo-Dialing for Ron Paul - Hardware
The hardware required is as follows:
Generic PC Platform - processor a P3, K6-2, or better
* Hard Drive - 40 GB more than enough
* CD Rom Drive - used to install the OS and Asterisk
* Monitor and Keyboard required for installation
* To use VOIP calling:
o Network card and access to the Net
* To use analog phone lines:
o A single http://www.x100p.com/products/FXO.php per line
o Or some other FXO card supported by Asterisk
* To serve as a client for distributed robo-dialing:
o Network card and access to the Net
The monitor and keyboard may not be required after the system is installed. If the box is connected to the Net it can be administered remotely. If a GUI interface is desired, having a local monitor and keyboard might be required.
Robo-Dialing for Ron Paul - OS (CentOS) Installation and Configuration
Asterisk will run on several Linux distributions. These notes will discuss using Asterisk on CentOS.
Download CentOS 5 from http://www.centos.org/
CentOS is the Community Enterprise Operating System.
From the CentOS Website:
"CentOS 2, 3, 4 and 5 are built from publicly available open source SRPMS provided by a prominent North American Enterprise Linux vendor. CentOS conforms fully with the upstream vendors redistribution policies and aims to be 100% binary compatible. (CentOS mainly changes packages to remove upstream vendor branding and artwork)."
CentOS is possible because of the nature of Open Source software and specifically the conditions of the Gnu Public License (GPL).
As Red Hat develops its products under the GPL they make the source code publicly available. Here is what the CentOS web site has to say:
"We would also like to thank Red Hat, Inc. for being true to its open source roots. It is no coincidence that there are not any Linux distributions out there like CentOS based on any of the other paid enterprise linux offerings. Red Hat, Inc. is a first class organization and Red Hat Enterprise Linux is an outstanding operating system. We wish them both continued success."
CentOS should be installed with the following options:
* Select Server Template * No need to install X Windows * Install Development Tools (gcc and friends)
One option is to burn a CD with the CentOS Net Install ISO image, available at: http://mirrors.kernel.org/centos/5.1/isos/i386/ Boot your Internet connected computer using this CD, choose the Server (no GUI) option, and enter the location of the Centos distribution you wish to use. I used:
Server: http://mirrors.kernel.org/ Directory: /centos/5.1/os/i386/
The net installer will download an install image and you simply follow the prompts to proceed. I let the installer use its defaults to partition the detected hard drive (40 GB). Remember the root password that you assigned. After a while you will have a working CentOS installation. Remove the boot CD and reboot the computer.
Log in as root and run:
- yum update
to get the latest updates to your installed packages. If the kernel has been updated, reboot the system to load the new kernel before proceeding.
I added:
- yum install mc
- yum install joe
since I use the mc shell and the joe editor a lot.
You will need to install some development packages that will be needed to compile the Zaptel and Asterisk source code:
- yum install kernel-devel
- yum install gcc newt-devel libusb-devel
- yum install gcc-c++
- yum install libtermcap libtermcap-devel
At this point the CentOS installation should be ready to compile the Zaptel and Asterisk packages.
Robo-Dialing for Ron Paul - Asterisk
http://www.asterisk.org/ is an open source software telephony platform developed by http://www.digium.com/en/index.php and other developers.
Asterisk and other supporting software can be downloaded from the http://asterisk.org/downloads . You should download the most recent Asterisk and Zaptel tar.gz archives.
The following notes apply to Asterisk version 1.4.10.
If you will be using analog phone lines you will need to install an interface card. The simplest is the X100P card that was originally designed by Digium. Inexpensive clones of the X100P are now available - see: http://www.x100p.com/ .
The drivers for the X100P cards (and other analog telephone interface cards are in the Zaptel package, available from http://asterisk.org/downloads .
To install Zaptel, download and ntar, uncompress the source archive. Change to the top level source directory (zaptel-1.4.??) and review the README file(s), then run:
- ./install_prereq test
This will make sure you have any required development tools installed. The test may show that some packages are needed, if so you can run:
- ./install_prereq install
to install the needed packages.
Once you have the correct build environment, do the standard:
- ./configure
- make
- make install
Make sure any related hardware is installed (such as the X100P cards) and then run:
- make config
This will detect the related hardware on your system and setup the startup script /etc/init.d/zaptel. This script will be run at boot time. To load the modules without rebooting, run:
- /etc/init.d/zaptel start
To make sure the Zaptel drivers are installed at the next boot"
- chkconfig --level 345 zaptel on
You can edit /etc/sysconfig/zaptel so that only the wcfxo driver is loaded - that is the only one needed with the X100P cards.
Edit /etc/zaptel.conf to read:
- Zaptel Configuration File
- This file is parsed by the Zaptel Configurator, ztcfg
fxsks=1-2 loadzone = us defaultzone=us
if you have two cards. Adjust the fxsks line to match your hardware.
In setting this up on a 1 GHz P4 (P4S5A ECS Motherboard) I had some trouble getting things to work.
I have 4 X100P cards, cards A, B, C, and D.
C: Slot 2 - IRQ 11 B: Slot 3 - IRQ 5
Some cards always alarm RED, even with a known good telco line plugged in.
A single card in slot 1 will cause a kernel panic upon power down.
If you will be using a VOIP provider and VOIP technology you don't need any additional interface beyond a network card and a high speed Internet connection.
To install Asterisk, download and untar, un compress the source archive. Change to the top level source directory (asterisk-1.4.?). Review the README file, then do the following:
- ./configure
The configure script will test your system and make sure that all of the required packages are installed. Once the configure script runs without errors, you are ready to:
- make
which is the actual compile step. This may take a while, depending on you processor speed and vintage. The make step should end with:
+--------- Asterisk Build Complete ---------+ + Asterisk has successfully been built, and + + can be installed by running: + + + + make install + +-------------------------------------------+
After the make step succeeds, install Asterisk with:
- make install
When successful the install step finishes with:
+---- Asterisk Installation Complete -------+ + + + YOU MUST READ THE SECURITY DOCUMENT + + + + Asterisk has successfully been installed. + + If you would like to install the sample + + configuration files (overwriting any + + existing config files), run: + + + + make samples + + + +----------------- or ---------------------+ + + + You can go ahead and install the asterisk + + program documentation now or later run: + + + + make progdocs + + + + **Note** This requires that you have + + doxygen installed on your local system + +-------------------------------------------+
Now Asterisk is installed but has no configuration files. A sample PBX and other configurations can be installed with:
- make samples
Asterisk is configured by a set of files located in the /etc/asterisk directory. A lot of the setup is controlled by the file extensions.conf in that directory. The file extensions.conf contains the dialplan for the Asterisk installation.
The dialplan is organized in terms of extensions and contexts. An extension is a single instruction that Asterisk will follow, triggered by an incoming call or by digits that are dialed on a channel.
Here are some snippets from a working extensions.conf file with additional notes:
*
A context used to answer and process a call to a voter
[phone-tree-3]
; phone tree with polling through AGI
; answering machines are detected, assume a person will answer
; s is a special extension that is used when no other extension is specified
; extension s, priority 1 is the first instruction followed by Asterisk
exten => s,1,Set(MACHINE=0)
; answer the call
; the 'n' priority is shorthand for 'next'
exten => s,n,Answer()
; attempt to detect answering machines - jumps to extension talk if triggered
; play 5 seconds of silence, answer detected is 1.2 seconds of silence is found
exten => s,n,BackgroundDetect(silence/5, 1200, 50)
; if we get here, a machine likely has answered
exten => s,n,Set(MACHINE=1)
; jumps to talk if triggered
; don't try for more than 30 seconds
exten => s,n,BackgroundDetect(silence/30, 1700, 50)
exten => s,n,NoOp(Message too long)
; forget it
exten => s,n,Hangup()
; BackgroundDetect jumps to talk extension:
; branch on variable MACHINE here:
exten => talk,1,GotoIf($[${MACHINE}=1]?2:3)
; dispatch to appropriate extension
exten => talk,2,Goto(machine,1)
exten => talk,3,Goto(person,1)
; person answered
exten => person,1,NoOp(Person Answered ${d_number}.)
; number dialed (d_number) and time of call ($date_time) provided by call file,
; pass these to the AGI script
; use AGI script to handle call - allows polling
exten => person,n,AGI(rp/person.agi, ${d_number}, ${date_time})
exten => person,n,Hangup()
; machine answered
exten => machine,1,NoOp(Machine Answered ${d_number}.)
; number dialed (d_number) and time of call ($date_time) provided by call file,
; pass these to the AGI script
; use AGI script to handle call
exten => machine,n,AGI(rp/machine.agi, ${d_number}, ${date_time})
exten => machine,n,Hangup()
; include utility extensions
include => invalid
include => timeout
*
Utility contexts - these use special extensions 'i' (invalid) and 't' (timeoout) and can be included into other contexts.
[invalid]
;
; "invalid extension" rules
;
exten => i,1,Playback(invalid) ; "That's not valid, try again"
exten => i,n,Goto(s,start)
[timeout]
;
; Timeout rule
;
;exten => t,1,Playback(invalid)
exten => t,1,Hangup() ; If they take too long, give up
; Absolute timeouts
exten => T,1,Background(tt-weasels)
exten => T,n,Hangup()
*
A context that allows a caller to record and review messages
[record-from-dialplan]
exten => s,1(start),Wait(1)
; explain how to record and review
exten => s,n,BackGround(cci/recordprompt)
exten => s,n,WaitExten ; Wait for an extension to be dialed.
include => invalid
include => timeout
;
;record from a channel, dial 7XX
;
exten => _7XX,1,Wait(1)
; prompt to begin recording
exten => _7XX,n,Playback(dictate/record)
; record message to a file in /tmp in wav format
exten => _7XX,n,Record(/tmp/prompt${EXTEN:1}:wav)
; finished, return
exten => _7XX,n,Goto(s,start)
;
; playback recordings - dial 8XX
;
exten => _8XX,1,Wait(1)
exten => _8XX,n,Background(/tmp/prompt${EXTEN:1})
exten => _8XX,n,Goto(s,start)
; catchall, send back to start
exten => *,1,Goto(s,start)
X100P Tests
The installation was slowed by problems with the X100P cards. We bought 4 cards and at first I could not get any consistent results. I then labeled the cards A, B, C, and D and tried them in various combinations. Card E is a fifth card that I had on hand. The following table shows the results. S is the slot the card was in, I the interrrupt assigned to it, and A the alarm (if any). Note that a functioning card would have no alarms (-). S1 I1 A1 S2 I2 A2 S3 I3 A3 S4 I4 A4 A 11 R A 11 R B 11 - C 11 - D 11 R C 11 - B 5 - E 11 R C 5 - B 12 - E 11 R B 11 - C 5 - B 11 - C 5 - A 12 R
From these results it looks like cards A and D (as well as E) are damaged (or else they have higher line detect thresholds and the line I am using is out of specification.).
This leaves open the question of whether we can use more than two cards in the system.
Robo-Dialing for Ron Paul - VOIP Service Provider
There are several VOIP service providers that are Asterisk friendly. Here are some that I have used:
http://connect.voicepulse.com/
Robo-Dialing for Ron Paul - Recorded Message
Here is a sample message that can be used. Remember, the idea is to find out who is interested in Ron Paul and who might want to volunteer.
Hi,
Texas Congressman Ron Paul's campaign for President is based on Peace, Prosperity, and Liberty, the founding principles of our American Republic.
If you would like literature about Ron Paul, press "one" at any time. If you would like to be contacted by a Ron Paul volunteer, press "two".
Millions of Americans are feeling a renewed hope for our country, and that hope is Ron Paul. Ron Paul has pledged to end the war in Iraq, eliminate the IRS, and secure our borders.
Please join with us to restore constitutionally limited government to the United States.
Visit RonPaul2008.com or call 877-Ron-Paul to learn about his campaign.
For more information about Ron Paul, press "one" now, or to be contacted by a Ron Paul volunteer, press "two."
This call was paid for by a citizen supporter of Ron Paul for President, and is not affiliated with any candidate or candidate's campaign.
Thanks for listening.
Robo-Dialing for Ron Paul - Software Overview
First - mark records with duplicate phone numbers as completed so that a phone number is only tried one time.
* Lock phone data table on data server
* Acquire set of available phone numbers and record numbers from data server
o Records have asterisk_flag = 'available' and call_count < $MAX_CALLS
* Mark acquired phone number records with asterisk_flag = 'unavailable' on data server
* Unlock phone data table on data server
* Dial list of numbers
o Call answered by machine or not answered - no action taken
o Call answered by person - note number, record number, and record result = 1, 2, 3, or 4
+ 1 = call was answered
+ 2 = call was answered and person listened to the end of the recording
+ 3 = person requested information on Ron Paul
+ 4 = person requested contact by Ron Paul volunteer
* Complete dialing list of numbers
* Lock phone data table on data server
* Increase call count for all records just called
* Update phone data table with results from calls
o If call was answered by person, set asterisk_flag = 'completed' and call_result = 1, 2, 3, or 4
o If call was answered by machine or not answered, set asterisk_flag = 'available'
* Unlock phone data table on data server
* Repeat ...
Robo-Dialing for Ron Paul - Calling Script
Attached is the current version of the Perl script that implements the Robo-Dialing. This script implements the Software Overview logic. (above)
Robo-Dialing for Ron Paul - AGI Script for Person Answering Call
The attached Perl script can be used to process calls that are answered by a person. The script plays the message and allows the person answering the call to ask for more information or to be contacted by a volunteer. It also records if the person listened to the entire message.
The script is called from the Asterisk dial plan using the Asterisk Gateway Interface (AGI).
Robo-Dialing for Ron Paul - Data Server (MySQL) Considerations
Once a computer has Asterisk set up and running it can become a node in a distributed Client - Server system. The Asterisk computer would be the node that coordinates its client activities with a central data server.
Executive Summary In brief, a client would acquire a set of telephone numbers from the server, place automated calls to those numbers, and report back to the server.
The call may be answered by a person, a machine, or not be answered at all. Here are the possiblities (numbers refer to the call_result code):
* Call is answered by a person - set call result:
o Request contact by Ron Paul Volunteer - 4
o Request more information about Ron Paul - 3
o Listen to entire message - 2
o Hang up before the end of message - 1
* Call is answered by a machine - 0
* Call is not answered - 0
* Call fails to go through at all - 0
If the call is answered by a person the number should not be called again.
If the call is answered by a machine, not answered, or fails to go through, the number may be tried again.
Data Table Structure The data table should have at least the following fields:
* record_number
* first_name
* last_name
* address_1
* address_2
* city
* state
* zip
* county
* precinct
* home_phone
* asterisk_flag enum('available', 'not available', 'completed') not null
* call_count (int(2) not null default 0)
* call_result (int(2) not null default 0)
Table Setup If the numbers to be called are in the table $TABLE we need to add three columns to that table:
alter table $TABLE add column asterisk_flag enum('available', 'not available', 'completed') not null;
alter table $TABLE add column call_count int(2) not null default 0;
alter table $TABLE add column call_result int(2) not null default 0;
In addition, we need to add a table to allow phone data table locking
create table ast_status (status enum('unlocked', 'locked') not null, table_name text);
and we need to add the phone data table name to the status table:
insert into ast_status set table_name = '$TABLE';
Detailed Description Client SQL Query Requests Set of Numbers
select from table ast_status status where table_name = $TABLE;
If status = 'locked' wait until status = 'unlocked'
update ast_status status = 'locked' where table_name = $TABLE;
select from table $TABLE
record_number, call_count, home_phone
where
asterisk_flag = 'available'
and call_count < $MAX_CALLS limit
1000;
for each $RECORD_NUMBER:
update table $TABLE set
asterisk_flag = 'not available'
where
record_number = $RECORD_NUMBER;
update table ast_status set status = 'unlockded' where table_name = $TABLE; Places Calls, Records Results Locally Updates Server select from table ast_status status where table_name = $TABLE;
If status = 'locked' wait until status = 'unlocked'
update table ast_status status = 'locked' where table_name = $TABLE;
for each $RECORD_NUMBER with failed call:
update table $TABLE set
call_count = 'call_count + 1', asterisk_flag = 'available'
where
record_number = $RECORD_NUMBER;
for each $RECORD_NUMBER with completed call:
update table $TABLE set
asterisk_flag = 'completed', call_result = '$RESULT'
where
record_number = $RECORD_NUMBER;
where the $RESULT variable can be:
1 => hung_up 2 => listened to entire message 3 => requested information 4 => requested volunteer contact
update table ast_status set status = 'unlockded' where table_name = $TABLE;
