ViciDial

ViciDial

VICIDIAL is a software suite that design to interact with the Asterisk Open-Source PBX Phone system to act as a complete inbound/outbound contact center with inbound email support as well. The agent interface is combination of interactive web pages which work through a web browser to provide real-time information and functionality with just using a web browser on the client’s computer.

The web-based administrative interface is also available which provides the facility to view different real-time and summary reports as well as several full functionality based agent and campaign options and settings. VICIDIAL will operate as an ACD for inbound calls or for Closer calls which come from VICIDIAL outbound frontiers and even permits for remote agents signing in from remote locations as well as remote agents that may just have a telephone.

There are presently more than 4,000 installations of VICIDIAL in production in more than 100 nations around the globe, several with more than 300 agent seats and numerous with different areas. The software suite is available with a from-scratch software installation file, complete English functional versions of the web-clients and admin pages, and design to work with an Asterisk system that has VOIP (SIP or IAX) or Zap/DAHDI(E1/T1/PSTN) telco lines trunks and a wide range of soft and hard phones. This bunch of applications design to run on top of any versions of Asterisk thus no messing around with the Asterisk source code is important. For more info views the system requirements at the bottom of the page.

Key Features:

  • Inbound, Outbound and Blended call handling and Inbound Email handling
  • Outbound agent-controlled, broadcast and predictive dialing
  • Full USA, Canada and UK reegulatory compliance capability
  • Web-based agent and administrative interfaces
  • Ability to have agents operate remotely
  • Integrated call recording
  • Three-Way calling within the agent application
  • Scheduled Callbacks: Agent-Only and Anyone
  • Web-configurable IVRs and Voicemail boxes
  • Scalable to hundreds of seats
  • Ability to use standard Telco lines and VOIP trunks
  • Open-Source AGPLv2 licensed, with no software licensing cost

Steps of Vicidial Installation :

Step 1 : Centos 6.X installation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Disable Firewall and Selinux before starting the Installations
Stopping the Firewall
iptables -F
service iptables save
Disabling the Selinux
vi /etc/selinux/config
 This file controls the state of SELinux on the system.
 SELINUX= can take one of these three values:
       enforcing - SELinux security policy is enforced.
       permissive - SELinux prints warnings instead of enforcing.
       disabled - SELinux is fully disabled.
SELINUX=disabled
SELINUXTYPE= type of policy in use. Possible values are:
       targeted - Only targeted network daemons are protected.
       strict - Full SELinux protection.
SELINUXTYPE=targeted # SETLOCALDEFS= Check local definition changes SETLOCALDEFS=0

Step 2 : Dependencies , supporting software and Perl Modules installation

First Update the OS for the lastest Kernel and other softwares and reboot

1
2
yum –y update
reboot

Dependencies Installation :

1
yum install make patch gcc gcc-c++ subversion php php-devel php-gd gd-devel php-mbstring php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel httpd libpcap libpcap-devel libnet ncurses ncurses-devel screen mysql-server mysql-devel ntp kernel* mutt glibc.i686

Setup Mysql :

1
2
3
4
5
6
7
8
9
10
/etc/init.d/mysqld start
chkconfig mysqld on 
service mysqld stop
cp /etc/my.cnf /etc/my.cnf.original
vi /etc/my.cnf    
mkdir /var/log/mysqld
mv /var/log/mysqld.log /var/log/mysqld/mysqld.log
touch /var/log/mysqld/slow-queries.log
chown -R mysql:mysql /var/log/mysqld
service mysqld restart

Update the Timezone :

1
2
3
rm /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
rdate -s nist1-ny.ustiming.org

Setup CPAN and install libraries :

1
2
3
yum install perl-CPAN
yum install perl-YAML
perl -MCPAN -e shell
1
2
3
4
5
6
7
8
9
10
You will then go through CPAN setup, just hit ENTER for most prompts except
for the mirrors list, you will want to select at least 4 mirrors
yes for manual configuration
enter for the next 18 prompts
for the "make install" option, it's a good idea to add UNINST=1
enter for the next 4 prompts
select your continent and country
select a few cpan mirrors
enter for the next 2 prompts
Once you see the cpan> prompt you can begin installing modules.

Install Modules :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
install CPAN
reload cpan
install YAML
install MD5
install Digest::MD5
install Digest::SHA1
install readline
install Bundle::CPAN
reload cpan
install DBI
force install DBD::mysql
install Net::Telnet
install Time::HiRes
install Net::Server
install Switch
install Mail::Sendmail
install Unicode::Map
install Jcode
install Spreadsheet::WriteExcel
install OLE::Storage_Lite
install Proc::ProcessTable
install IO::Scalar
install Spreadsheet::ParseExcel
install Curses
install Getopt::Long
install Net::Domain
install Term::ReadKey
install Term::ANSIColor
install Spreadsheet::XLSX
install Spreadsheet::Read
install LWP::UserAgent
install HTML::Entities
install HTML::Strip
install HTML::FormatText
install HTML::TreeBuilder
install Time::Local
install MIME::Decoder
install Mail::POP3Client
install Mail::IMAPClient
install Mail::Message
install IO::Socket::SSL
install MIME::Base64
install MIME::QuotedPrint
install Crypt::Eksblowfish::Bcrypt
quit

Step 3: Asterisk , Dahdi & Libpri installation

1
2
mkdir /usr/src/asterisk
cd /usr/src/asterisk

Dahdi & Libpri

Download file libpri-1.4-current.tar.gz then

untar and installation

1
2
3
tar -xvzf asterisk-1.8.21.0-vici-beta
tar -xvzf dahdi-linux-complete-current
tar -xvzf libpri-1.4-current.tar.gz

LibPri installation

1
2
3
4
5
cd /usr/src/asterisk
cd cd libpri-1.4.14
make clean
make
make install

Dahdi Installation

1
2
3
4
5
cd /usr/src/asterisk/
cd dahdi-linux-complete-2.6.2+2.6.2/       --> as of apr2013 my current dahdi version is 2.6.2
make all
make install
make config

Asterisk Installation

1
2
3
4
5
6
cd /usr/src/asterisk-1.8.21.0-vici-beta
./configure
make clean
make
make install
make samples

Step 4: Installing astGUIclient (ViciDial)

1
mysql -u root –p

Creating Vicidial Database

1
2
3
4
5
6
7
8
CREATE DATABASE `asterisk` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'cron'@'localhost' IDENTIFIED BY '1234';
GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES on asterisk.* TO cron@'%' IDENTIFIED BY '1234';
GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES on asterisk.* TO cron@localhost IDENTIFIED BY '1234';
GRANT RELOAD ON *.* TO cron@'%';
GRANT RELOAD ON *.* TO cron@localhost;
flush privileges;
quit

Install the latest SVN trunk

1
2
3
4
5
mkdir /usr/src/astguiclient
cd /usr/src/astguiclient
svn checkout svn://svn.eflo.net:3690/agc_2-X/trunk
cd trunk
perl install.pl

Import sample data

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Login to mysql to run some commands
mysql -u root -p
Enter these MySQL commands:
mysql>SET GLOBAL connect_timeout=60;
mysql>use asterisk;
 
mysql>\. /usr/src/astguiclient/trunk/extras/MySQL_AST_CREATE_tables.sql
mysql>\. /usr/src/astguiclient/trunk/extras/first_server_install.sql
mysql>\. /usr/src/astguiclient/trunk/extras/sip-iax_phones.sql
 
mysql>quit
 
In the Linux terminal, enter these commands
/usr/share/astguiclient /ADMIN_area_code_populate.pl

Final Adjustments

Make several entries in the rc.local of your system.

1
vi /etc/rc.d/rc.local

On a new system I just overwrite the file with the following:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/sh
 
#
 
# This script will be executed *after* all the other init scripts.
 
# You can put your own initialization stuff in here if you don't
 
# want to do the full Sys V style init stuff.
 
 
touch /var/lock/subsys/local
 
 
# OPTIONAL enable ip_relay(for same-machine trunking and blind monitoring)
 
/usr/share/astguiclient/ip_relay/relay_control start 2>/dev/null 1>&2
 
 
# Disable console blanking and powersaving
 
/usr/bin/setterm -blank
 
/usr/bin/setterm -powersave off
 
/usr/bin/setterm -powerdown
 
 
### start up the MySQL server
 
/etc/init.d/mysqld start
 
 
### start up the apache web server
 
/etc/init.d/httpd start
 
 
### roll the Asterisk logs upon reboot
 
/usr/share/astguiclient/ADMIN_restart_roll_logs.pl
 
 
### clear the server-related records from the database
 
/usr/share/astguiclient/AST_reset_mysql_vars.pl
 
 
### load dahdi drivers
 
modprobe dahdi
 
/usr/sbin/dahdi_cfg -vvvvvvvvvvvvv
 
 
### sleep for 20 seconds before launching Asterisk
 
sleep 20
 
 
### start up asterisk
 
/usr/share/astguiclient/start_asterisk_boot.pl

Make several entries in the crontab of your system:

1
crontab –e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
### recording mixing/compressing/ftping scripts
 
#0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/AST_CRON_audio_1_move_mix.pl
 
0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/AST_CRON_audio_1_move_mix.pl --MIX
 
0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/AST_CRON_audio_1_move_VDonly.pl
 
1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58 * * * * /usr/share/astguiclient/AST_CRON_audio_2_compress.pl –-MP3
 
#2,5,8,11,14,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59 * * * * /usr/share/astguiclient/AST_CRON_audio_3_ftp.pl --GSM
 
 
### keepalive script for astguiclient processes
 
* * * * * /usr/share/astguiclient/ADMIN_keepalive_ALL.pl --cu3way
 
 
### kill Hangup script for Asterisk updaters
 
* * * * * /usr/share/astguiclient/AST_manager_kill_hung_congested.pl
 
 
### updater for voicemail
 
* * * * * /usr/share/astguiclient/AST_vm_update.pl
 
 
### updater for conference validator
 
* * * * * /usr/share/astguiclient/AST_conf_update.pl
 
 
### flush queue DB table every hour for entries older than 1 hour
 
11 * * * * /usr/share/astguiclient/AST_flush_DBqueue.pl -q
 
 
### fix the vicidial_agent_log once every hour and the full day run at night
 
33 * * * * /usr/share/astguiclient/AST_cleanup_agent_log.pl
 
50 0 * * * /usr/share/astguiclient/AST_cleanup_agent_log.pl --last-24hours
 
## uncomment below if using QueueMetrics
 
#*/5 * * * * /usr/share/astguiclient/AST_cleanup_agent_log.pl --only-qm-live-call-check
 
 
## uncomment below if using Vtiger
 
#1 1 * * * /usr/share/astguiclient/Vtiger_optimize_all_tables.pl --quiet
 
 
### updater for VICIDIAL hopper
 
* * * * * /usr/share/astguiclient/AST_VDhopper.pl -q
 
 
### adjust the GMT offset for the leads in the vicidial_list table
 
1 1,7 * * * /usr/share/astguiclient/ADMIN_adjust_GMTnow_on_leads.pl --debug
 
 
### reset several temporary-info tables in the database
 
2 1 * * * /usr/share/astguiclient/AST_reset_mysql_vars.pl
 
 
### optimize the database tables within the asterisk database
 
3 1 * * * /usr/share/astguiclient/AST_DB_optimize.pl
 
 
## adjust time on the server with ntp
 
30 * * * * /usr/sbin/ntpdate -u pool.ntp.org 2>/dev/null 1>&2
 
 
### VICIDIAL agent time log weekly and daily summary report generation
 
2 0 * * 0 /usr/share/astguiclient/AST_agent_week.pl
 
22 0 * * * /usr/share/astguiclient/AST_agent_day.pl
 
 
### VICIDIAL campaign export scripts (OPTIONAL)
 
#32 0 * * * /usr/share/astguiclient/AST_VDsales_export.pl
 
#42 0 * * * /usr/share/astguiclient/AST_sourceID_summary_export.pl
 
 
### remove old recordings more than 7 days old
 
#24 0 * * * /usr/bin/find /var/spool/asterisk/monitorDONE -maxdepth 2 -type f -mtime +7 -print | xargs rm -f
 
 
### roll logs monthly on high-volume dialing systems
 
#30 1 1 * * /usr/share/astguiclient/ADMIN_archive_log_tables.pl
 
 
### remove old vicidial logs and asterisk logs more than 2 days old
 
28 0 * * * /usr/bin/find /var/log/astguiclient -maxdepth 1 -type f -mtime +2 -print | xargs rm -f
 
29 0 * * * /usr/bin/find /var/log/asterisk -maxdepth 3 -type f -mtime +2 -print | xargs rm -f
 
30 0 * * * /usr/bin/find / -maxdepth 1 -name "screenlog.0*" -mtime +4 -print | xargs rm -f
 
 
### cleanup of the scheduled callback records
 
25 0 * * * /usr/share/astguiclient/AST_DB_dead_cb_purge.pl --purge-non-cb -q
 
 
### GMT adjust script - uncomment to enable
 
#45 0 * * * /usr/share/astguiclient/ADMIN_adjust_GMTnow_on_leads.pl --list-settings
 
 
### Dialer Inventory Report
 
1 7 * * * /usr/share/astguiclient/AST_dialer_inventory_snapshot.pl -q --override-24hours
 
 
### inbound email parser
 
* * * * * /usr/share/astguiclient/AST_inbound_email_parser.pl

Run this perl script to update the server_ip fields in the asterisk tables
/usr/share/astguiclient/ADMIN_update_server_ip.pl –old-server_ip=10.10.10.15
Update music on hold configuration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vi /etc/asterisk/musiconhold.conf            ; remove the word old
;
; Music on Hold -- Sample Configuration
;
 
[default]
mode=files
directory=/var/lib/asterisk/mohmp3
 
[quiet]
mode=files
directory=/var/lib/asterisk/quiet-mp3
 
#include musiconhold-vicidial.conf

Lastly, reboot the machine

1
reboot