Outbound Dialer

Dialer is an addon for VoiceXML Browser to provide automatic outbound dialing.

Use root to install the packages. Unzip and untar the dialer package by using the command:

# tar xvzf dialer_Vx.x_date.tar.gz

Go to the directory of the dialer and then, type the following command.

# cd dialer_Vx.x_date
# ./install.sh

It uses the Asterisk Manager Interface.

To enable the dialer to connect to the Asterisk you need to setup the interface. You can create a “Dialer” account to connect the Dialer application. Edit /etc/asterisk/manager.conf and set :

...
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
...

...
[dialer]
secret = 1234
;deny=0.0.0.0/0.0.0.0
;permit=209.16.236.73/255.255.255.0
read = system,call,user,originate
write = system,call,user,originate
...
Dialer [options] param

Options:

–safe Starts in “safe” mode (auto-restart).
–k clipping, update call row just at the end of call with final results only (override by “clipping” bool dialer.conf file option)
–help This help screen.
–stop Unconditionally stop the dialer.
–start Run as a daemon.
–action Execute one if this commands:
createdatabase Create the database.
dropdatabase Drop the database.
create Create the campaign table.
drop Drop the campaign table.
truncate Remove all the phones.
repare Repare DB info after an Asterisk Crash.
file Use the text file to fill the campaign.
insert Insert a phone in the campaign.
delete Delete a phone in the campaign.
count Phones in the campaign.
dump Dump the campaign in csv.
fulldump Dump the campaign in csv with header.
statitics Statistics of the campaign.
–campaign Name of the campaign for the command.
–paramater Parameter for the command.

NOTE: Dialer is an application located at this directory:

/opt/dialer/

Purge and create a campaign named “campaign” :

  >dialer -c campaign -a drop
  >dialer -c campaign -a create
  >dialer -c campaign -a file -p /tmp/list.txt
  >dialer -c campaign -a insert -p 12345678
  >dialer -c campaign -a insert -p 12345678 param

Start in background :

  >dialer --start
  

Start do not fork, stop on last call :

  >dialer

Stop all dialer (killall) :

  >dialer --stop

Get log :

  >dialer -a fulldump -c campaign

Get statistics :

  >dialer -a statistics -c campaign 

The dialer generates return's codes for each call in the Log file. Please find here the list of codes and its description:

-8 Burned (We give up)
-7 Disconnected Number – No Answer
-6 Fax Machine
-5 Network Congestion
-4 Busy
-3 Voicemail – Get called back
-2 No Answer
-1 Undefined*
1 Not Yet Called – Get called back
0 Callback
2 No Answer
3 Voicemail – Get called back
4 Busy
5 Fast Busy
6 Fax Machine
7 Disconnected Number
8 Do Not Call – Don't count as contacts
9 Invalid Lead
10 No Sale
11 No Sale – These both…
12 Sale – count as contacts

OriginateResponse event which contains the failure reason if any. Reason may be one of the following:

1 = Other end has hungup
2 = Local ring
3 = Remote end is ringing
4 = Remote end has answered
5 = Remote end is busy
6 = Make it go off hook
7 = Line is off hook
8 = Congestion (circuits busy)

Hangup causes :

1 Unallocated (unassigned) number
2 No route to specified transmit network
3 No route to destination
5 Misdialled trunk prefix (national use)
6 Channel unacceptable
7 Call awarded and being delivered in an established channel
8 Preemption
14 QoR: ported number
16 Normal Clearing
17 User busy
18 No user responding
19 No answer from user (user alerted)
20 Subscriber absent
21 Call Rejected
22 Number changed
23 Redirected to new destination
26 Non-selected user clearing
27 Destination out of order
28 Invalid number format
29 Facility rejected
30 Response to STATUS ENQUIRY
31 Normal, unspecified
34 No circuit/channel available
38 Network out of order
41 Temporary failure
42 Switching equipment congestion
43 Access information discarded
44 Requested circuit/channel not available
50 Requested facility not subscribed
52 Outgoing call barred
54 Incoming call barred
57 Bearer capability not authorized
58 Bearer capability not presently available
65 Bearer capability not implemented
66 Channel type not implemented
69 Requested facility not implemented
81 Invalid call reference value
88 Incompatible destination
95 Invalid message unspecified
96 Mandatory information element is missing
97 Message type non-existent or not implemented
98 Message not compatible with call state or message type non-existent or not implemented
99 Information element nonexistent or not implemented
100 Invalid information element contents
101 Message not compatible with call state
102 Recover on timer expiry
111 Protocol error, unspecified
127 Interworking, unspecified

The dialer's configuration file is located at:

/etc/dialer.conf

Please find here the list of codes and its description:

;
; Dialer Configuration
;

[general]
debug=true
log=true
mysqlhost=localhost
mysqluser=dialer
mysqlpassword=dialeri6net
asteriskuser=dialer
asteriskpassword=1234
asteriskhost=localhost
asteriskport=5038
mysqldatabase=dialer

[default]
active=true
function=voximal
calltoday=true  ;this avoid call attempts same day, caution!
usednc=false
maxlines=30
attemptsdelay=600
timeout=5000 ; max time in ms before line comes UP
dspmode=none
multiplecalls=false
trunk=SIP
dialprefix=none
callerid=9987803065
filter=0
chanvar=0
chanstr=0
debug=true
skip=0
f_mode=0
f_areacode=0
f_areacode_prefix=0
f_zipcode=0
orderby=attempts_pickups
mode=voximal
timeslot=9h-18h
pause=none
blacklist=none
attempts=1
dialformat=SIP/00%s@voip-out
maxcaps=10

Default is the default section campaign parameters.

Parameters:
active=true                   
function=voximal
calltoday=true                  ; Set it true if you do not do any attemps, nor care of today, simpified loop SQL
usednc=false
maxlines=30			; Number of simultaneous calls
maxcaps=10                      ; Number of calls added on each iteration, "speed of dialing"
attemptsdelay=600		; Delay in seconds between two attempts, default 10minutes (600 seconds)
timeout=5000			; Time out
dspmode=none
multiplecalls=false
trunk=SIP			; Trunk type SIP
dialprefix=none
callerid=9987803065		; SIP account
filter=0
chanvar=0
chanstr=0
debug=true                      ; Enable very verbose debug, and debug files in /tmp
skip=0
f_mode=0
f_areacode=0
f_areacode_prefix=0
f_zipcode=0
orderby=attempts_pickups
mode=voximal                    ; Use Voximal appliction with a VoiceXML uri
uri=http://some/index.vxml
timeslot=9h-18h			; Timeslot
pause=none
blacklist=none
attempts=1			; Number of Attempts (1..n  calls)
dialformat=SIP/00%s@voztele-out	; Dial format chain
clipping=false                  ; do not update intermediate call status, speed up calling

The Dialer offers a FreePBX module do manage it (it is in beta version).