Monday, September 26, 2011

List of handy troubleshooting tips VICIDIAL

Every time VICIDIAL is dialing a lead it add 1 before every area code
This is the default behavior of VICIDIAL, as it was designed for use in the United States. Go to the Campaign Detail modification screen and change "Omit Phone Code" fields to "Yes".
My VICIDIAL is doing weird stuff whenever we put more agents on/do more with our server
VICIDIAL/Asterisk is a very load sensitive application; overloading it will cause unusual behavior. Generally, you want your http://en.wikipedia.org/wiki/Load_(computing) Average Load to be 1 or lower for every CPU in your machine. If you are recording every call, consider turning on Recording Delay for your campaign and use the fastest storage system you can afford (15k RPM SCSI would be ideal).
I'm having problems with VICIDIAL version xyx (where xyz is not the current version). Please help!
Please consider upgrading your installation to the current version, as we may have already fixed the problem with the current release.

Hopper Empty


Hopper empty can happen for several reasons:

  1. Flaw in system (bug): Rare occurrence. (~5%)
  2. Congestion (rejected calls from provider, bad network connection, etc) This can cause the hopper to drain too quickly (considered a "red light on the dashboard"). (~20%)
  3. Hopper level too low (should be set at the number of calls you will initiate AT MOST in 1 minute). (~20%)
  4. NO leads left because all calls have been made (~40%)
  5. NO leads left because of time settings (~5%)
  6. NO leads left because of filter settings (~10%)

Troubleshooting


Watch the hopper in the realtime screen for that campaign and watch it load/drain. Observe the fill/drain pattern.

  • Does it suddenly empty?
  • Does it slowly empty but get to Zero before reloading?

What to adjust in the php.ini file for large lead file uploads

Posted from Diyanat on the forums:

The following are php directives that you may need to edit in the /etc/php.ini files , keep values that best suit your environment, generally default values will work fine, u may need to change the values only if uploading large files greater then 2MB

file_uploads = keep this on to enable file uploads
upload_tmp_dir = point to a temporary directory to store uploaded files

upload_max_filesize = maximum file size in bytes that the PHP engine will accept.
Note: increase according to file size to upload


post_max_size = maximum peremitted http post size in bytes,
Note: this should be larger than upload_max_filesize


memory_limit = maximum amount of memory in bytes that is allowed for use by a PHP script
Note: this should be larger than post_max_size
Warning: choose a large memory_limit only if you have sufficient memory


max_input_time = maximum amount of time in secs allowed for each PHP script to receive httpd clients request,
Note: if u have slow connection increase this value

max_execution_time = maximum amount of time in secs allowed for each PHP script to execute.
Note: if uploading large files increase max_execution_time to prevent timeouts.



If you upload files less then 4 MB use the following



 file_uploads = On
 upload_tmp_dir = "/tmp"
 upload_max_filesize = 5120
 post_max_size = 10M
 memory_limit = 20M
 max_input_time = 90
 max_execution_time = 60


if your upload file size from 5 MB to 10 MB use the following

 file_uploads = On
 upload_tmp_dir = "/tmp"
 upload_max_filesize = 10240
 post_max_size = 16M
 memory_limit = 32M
 max_input_time = 180
 max_execution_time = 120



Diyanat

How To Use VICIDIAL and FReePBX

How To Use VICIDIAL and FReePBX Author: Erwan Desvergnes – SDCI
Email: erwan.desvergnes@sdci.fr


This how to is working with VICIDIAL latest version and FreePBX 2.2, and Asterisk 1.2.14
I’m using CENTOS 4.4 with latest update ( >10 callcenters for >6 month).



1 - Install Centos 4.4 (or any distrib you want)
2 - Follow the Matt Florell’s scratch install document.

In order to use FreePBX and Vicidial, you need install following Perl Module.

 * Bundle::CPAN
 * MD5
 * Digest::MD5
 * Digest::SHA1
 * readline
 * DBI
 * DBD::mysql
 * Net::Telnet
 * Time::HiRes
 * Net::Server
 * OLE::Storage_Lite
 * Spreadsheet::ParseExcel
 * IPC::Signal
 * Proc::WaitStat
 * MIME
 * Types
 * Time::HiRes




3 - Before compiling asterisk you need to install “SPANDSP” and patching asterisk like it describe in FreePBX setup.

4 - In order to use FreePBX, you need to execute Asterisk as a non root user like it describe in FreePBX setup.

5 - In reference to the Scratch Install “PHASE 5: CONFIGURING ASTERISK AND YOUR SIP PHONES” is not needed You must replace it by the end of the setup of FreePBX

6 - At the end of FreePBX setup you restart Vicidial Scratch install at “PHASE 6: INSTALLING ASTGUICLIENT AND VICIDIAL”

Note: “SUBPHASE 6.2: making additions to your Asterisk conf files” is not needed.

7 - At the end of Vicidial setup process you need to make some change to vicidial Installation.
a. You need to edit “/etc/asterisk/extension.conf” and at the end of the file, you must comment under General context.

And in “macro-dialout-trunk” you must do the following change

exten => s,n,Set(custom=$WARNING: No such module CUT! ) ; Custom trunks are prefixed with "AMP:"
exten => s,n,GotoIf($"${custom}" = "AMP"?customtrunk)
exten => s,n,AGI(call_log.agi,${EXTEN}) ; ADD FOR VICIDIAL
exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM},300,${DIAL_TRUNK_OPTIONS}) ; Regular Trunk Dial
exten => s,n,Goto(s-${DIALSTATUS},1)




b. You need to edit “/etc/asterisk/extension_custom.conf” at the top of the file just under the comments, you need to had the following lines:

#include vicidial_extensions.conf

custom-vicidial
include => default




from-internal-custom
include => default

c. You need to create a file “/etc/asterisk/vicidial_extensions.conf” with the following lines:

default
include => ext-local

; Extension 8600 + 8601 conference rooms
exten => 8600,1,Meetme,8600
exten => 8601,1,Meetme,8601

; Extension 102 - Grandstream hardphone
exten => 102,1,Playback,transfer|skip ; "Please hold while..."
exten => 102,2,Dial,sip/gs102|20|to ; Ring, 20 secs max
exten => 102,3,Voicemail,u102 ; Send to voicemail...
; Extension 2000 Sipura line 1
exten => 2000,1,Dial,sip/spa2000|30|to ; Ring, 30 secs max
exten => 2000,2,Voicemail,u2000 ; Send to voicemail...
; Extension 2001 Sipura line 2
exten => 2001,1,Dial,sip/spa2001|30|to ; Ring, 30 secs max
exten => 2001,2,Voicemail,u2001 ; Send to voicemail...
; Extension 2020 rings both sipura lines
exten => 2001,1,Dial,sip/spa2000&sip/spa2001|30|to ; Ring, 30 secs max
exten => 2001,2,Voicemail,u2000 ; Send to voicemail...
; Extension 301 rings the firefly softphone
exten => 301,1,Dial,(IAX2/firefly01@firefly01/s)
exten => 301,2,Hangup

; # timeout invalid rules
exten => #,1,Playback(invalid) ; "Thanks for trying the demo"
exten => #,2,Hangup ; Hang them up.
exten => t,1,Goto(#,1) ; If they take too long, give up
exten => i,1,Playback(invalid) ; "That's not valid, try again"

; Give voicemail at extension 8500
exten => 8500,1,VoicemailMain?
exten => 8500,2,Goto(s,6)

; ASTERISK AGENTS LOGINS FOR QUEUES (NOT part of VICIDIAL)
; the following assumes phone agent login and exten are 3 digits and the same
; also assumes that 3-digit login is present in agents.conf and queueus.conf
;Agent Logout then stay onhook, DIAL 54 + 3-digit ID
exten => _54XXX,1,AgentCallbackLogin(

)

the following are used to login and logout of Asterisk Queues from phone
Agent Login then stay offhook on the phone, DIAL 55 + 3-digit ID
exten => _55XXX,1,AgentLogin(${EXTEN:1})
Agent Login then stay onhook, phones will ring, DIAL 56 + 3-digit ID
exten => _56XXX,1,AgentCallbackLogin(

${EXTEN:1}@default)

; Extension 4001 rings Zap phone
exten => 4001,1,Dial,Zap/1|30| ; ring Zap device 1
exten => 4001,2,Voicemail,u4001 ; Send to voicemail...

exten => h,1,DeadAGI(agi://127.0.0.1:4577/call_log)
exten => h,2,DeadAGI(agi://127.0.0.1:4577/VD_hangup--HVcauses--PRI-----NODEBUG-----${HANGUPCAUSE}-----${DIALSTATUS}-----${DIALEDTIME}-----${ANSWEREDTIME}))
;exten => h,1,DeadAGI(call_log.agi,${EXTEN}) ; DeadAGI is new
;exten => h,2,DeadAGI(VD_hangup.agi,PRI-----NODEBUG-----${HANGUPCAUSE}-----${DIALSTATUS}-----${DIALEDTIME}-----${ANSWEREDTIME})

; Extension 3429 - Inbound 800 number ()
exten => _**3429,1,Ringing
exten => _**3429,2,AGI(agi://127.0.0.1:4577/call_log)
;exten => _**3429,2,AGI(call_log.agi,${EXTEN})
exten => _**3429,3,Answer
exten => _**3429,4,Dial,sip/spa2000&sip/spa2001|30|to
exten => _**3429,5,Voicemail,u2000
; Extension 3429 - with ANI callerID
exten => _*NXXNXXXXXX*3429,1,Ringing
exten => _*NXXNXXXXXX*3429,2,AGI(agi://127.0.0.1:4577/call_log)
;exten => _*NXXNXXXXXX*3429,2,AGI(call_log.agi,${EXTEN})
exten => _*NXXNXXXXXX*3429,3,Answer
exten => _*NXXNXXXXXX*3429,4,Dial,sip/spa2000&sip/spa2001|30|to
exten => _*NXXNXXXXXX*3429,5,Voicemail,u2000

; Inbound call from BINFONE
; exten => ,1,AGI(agi://127.0.0.1:4577/call_log)
; exten => ,1,AGI(call_log.agi,${EXTEN})
; exten => ,2,Dial(sip/gs102,55,o)
; exten => ,3,Hangup

; Extension - Inbound local number from PRI with 10 digit delivery
exten => ,1,Ringing
exten => ,2,Wait(1)
exten => ,3,AGI(agi://127.0.0.1:4577/call_log--fullCID--${EXTEN}-----${CALLERID}-----${CALLERIDNUM}-----${CALLERIDNAME})
;exten => ,3,AGI(call_logCID.agi,${EXTEN}-----${CALLERID}-----${CALLERIDNUM}-----${CALLERIDNAME})
exten => ,4,Answer
exten => ,5,Dial,sip/spa2000&sip/spa2001|30|to
exten => ,6,Voicemail,u2000

; dial a long distance outbound number to the UK
exten => _901144XXXXXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _901144XXXXXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _901144XXXXXXXXXX,2,Dial(${TRUNKX}/${EXTEN:1},55,tTo)
exten => _901144XXXXXXXXXX,3,Hangup

; dial a long distance outbound number to Australia
exten => _901161XXXXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _901161XXXXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _901161XXXXXXXXX,2,Dial(${TRUNKX}/${EXTEN:1},,tTo)
exten => _901161XXXXXXXXX,3,Hangup

; dial an 800 outbound number
exten => _91800NXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _91800NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _91800NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _91800NXXXXXX,3,Hangup
exten => _91888NXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _91888NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _91888NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _91888NXXXXXX,3,Hangup
exten => _91877NXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _91877NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _91877NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _91877NXXXXXX,3,Hangup
exten => _91866NXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _91866NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _91866NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _91866NXXXXXX,3,Hangup

; dial a local 727 outbound number with area code
exten => _9727NXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _9727NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _9727NXXXXXX,2,Dial(${TRUNK}/1${EXTEN:1},,tTo)
exten => _9727NXXXXXX,3,Hangup

; dial a local 813 outbound number with area code
exten => _9813NXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _9813NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _9813NXXXXXX,2,Dial(${TRUNK}/${EXTEN:1},,tTo)
exten => _9813NXXXXXX,3,Hangup

; dial a long distance outbound number
exten => _91NXXNXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _91NXXNXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _91NXXNXXXXXX,2,Dial(${TRUNKX}/${EXTEN:1},,tTo)
exten => _91NXXNXXXXXX,3,Hangup
; dial a long distance outbound number through BINFONE
; exten => _91NXXNXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;; exten => _91NXXNXXXXXX,1,AGI(call_log.agi,${EXTEN})
; exten => _91NXXNXXXXXX,2,Dial(${TRUNKIAX}/${EXTEN},55,o)
; exten => _91NXXNXXXXXX,3,Hangup
; dial a long distance outbound number through a SIP provider
; exten => _91NXXNXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;; exten => _91NXXNXXXXXX,1,AGI(call_log.agi,${EXTEN})
; exten => _91NXXNXXXXXX,2,Dial(sip/${EXTEN}@SIPtrunk,55,o)
; exten => _91NXXNXXXXXX,3,Hangup

; dial Phone Number for France IAX
exten => _910X.,1,AGI(agi://127.0.0.1:4577/call_log)
exten => _910X.,2,Dial(${OUT_2}/${EXTEN:2},55,o) ; Name of the trunk chose in extensions_additional.conf

; dial a local outbound number (modified because of only LD T1)
exten => _9NXXXXXX,1,AGI(agi://127.0.0.1:4577/call_log)
;exten => _9NXXXXXX,1,AGI(call_log.agi,${EXTEN})
exten => _9NXXXXXX,2,Dial(${TRUNK}/1727${EXTEN:1},,tTo)
exten => _9NXXXXXX,3,Hangup

; parameters for call_inbound.agi (7 fields separated by five dashes "-----"):
; 1. the extension of the phone to ring as defined in the asterisk.phones table
; 2. the phone number that was called, for the live_inbound/_log entry
; 3. a text description of the number that was called in
; 4-7. optional fields, they are also passed as fields in the GUI to web browser

; Extension 3429 - Inbound 800 number ()
exten => _**3429,1,Ringing
exten => _**3429,2,AGI(agi://127.0.0.1:4577/call_log)
;exten => _**3429,2,AGI(call_log.agi,${EXTEN})
exten => _**3429,3,AGI(call_inbound.agi,spa2000----------Inbound 800-----x-----y-----z-----w)
exten => _**3429,4,Answer
exten => _**3429,5,Dial,sip/spa2000&sip/spa2001|30|to
exten => _**3429,6,Voicemail,u2000
; Extension 3429 - with ANI callerID
exten => _*NXXNXXXXXX*3429,1,Ringing
exten => _*NXXNXXXXXX*3429,2,AGI(agi://127.0.0.1:4577/call_log)
;exten => _*NXXNXXXXXX*3429,2,AGI(call_log.agi,${EXTEN})
exten => _*NXXNXXXXXX*3429,3,AGI(call_inbound.agi,spa2000----------Inbound 800-----x-----y-----z-----w)
exten => _*NXXNXXXXXX*3429,3,Answer
exten => _*NXXNXXXXXX*3429,4,Dial,sip/spa2000&sip/spa2001|30|to
exten => _*NXXNXXXXXX*3429,5,Voicemail,u2000

exten => _010*01XXX,1,Goto(default,${EXTEN:16},1)
exten => _010*01XXX*.,1,Goto(default,${EXTEN:16},1)
exten => _8600XXX*.,1,AGI(agi-VDADfixCXFER.agi)

; ### server 2 extens:
; exten => _010*01XXX,1,Dial(${TRUNKIAX1}/${EXTEN:16},55,o)
; exten => _010*01XXX,2,Hangup
; exten => _010*01XXX*.,1,Dial(${TRUNKIAX1}/${EXTEN:16},55,o)
; exten => _010*01XXX*.,2,Hangup




; parameters for agi-VDADcloser.agi (2 fields separated by five dashes "-----"):
; 1. the full extension formatted by VICIDIAL for internal transfers * separated
; 2. the word START to denote the beginning of the acceptance of the transfer
; inbound VICIDIAL transfer calls can arrive through PRI T1 crossover or IAX channel
exten => _90009.,1,Answer ; Answer the line
exten => _90009.,2,AGI(agi-VDADcloser.agi,${EXTEN}-----START)
exten => _90009.,3,Hangup

; parameters for agi-VDADcloser_inbound....agi (7 fields separated by five dashes "-----"):
; 1. the full name of the IN GROUP to be used in vicidial for the inbound call
; 2. the phone number that was called, for the log entry
; 3. the callerID or lead_id of the person that called(usually overridden)
; 4. the park extension audio file name if used
; 5. the status of the call initially(usually not used)
; 6. the list_id to insert the new lead under if it is new (and callerID available)
; 7. the phone dialing code to insert with the new lead if new (and callerID available)

; inbound VICIDIAL call with CID delivery through T1 PRI
exten => 1234,1,Ringing ; call ringing
exten => 1234,2,Wait(1) ; Wait 1 second for CID delivery from PRI
exten => 1234,3,Answer ; Answer the line
exten => 1234,4,AGI(agi-VDADcloser_inboundCID.agi,CL_GALLERIA----------Closer-----park----------999-----1)
exten => 1234,5,Hangup

; inbound VICIDIAL call with ANI delivery through robbed-bit T1 (*NXXNXXXXXX*DNIS)
exten => 1234,1,Answer ; Answer the line
exten => 1234,2,AGI(agi-VDADcloser_inboundANI.agi,CL_GALLERIA----------Closer-----park----------999-----1)
exten => 1234,3,Hangup

; inbound VICIDIAL call with prompt for 4-digit fronter code
exten => 1234,1,Answer ; Answer the line
exten => 1234,2,AGI(agi-VDADcloser_inbound.agi,CL_GALLERIA----------Closer-----park----------999-----1)
exten => 1234,3,Hangup

; barge monitoring extension
exten => 8159,1,ZapBarge?
exten => 8159,2,Hangup

; ZapBarge? direct channel extensions
exten => 8612001,1,ZapBarge(1)
exten => 8612002,1,ZapBarge(2)
exten => 8612003,1,ZapBarge(3)
exten => 8612004,1,ZapBarge(4)
exten => 8612005,1,ZapBarge(5)
exten => 8612006,1,ZapBarge(6)
exten => 8612007,1,ZapBarge(7)
exten => 8612008,1,ZapBarge(8)
exten => 8612009,1,ZapBarge(9)
exten => 8612010,1,ZapBarge(10)
exten => 8612011,1,ZapBarge(11)
exten => 8612012,1,ZapBarge(12)
exten => 8612013,1,ZapBarge(13)
exten => 8612014,1,ZapBarge(14)
exten => 8612015,1,ZapBarge(15)
exten => 8612016,1,ZapBarge(16)
exten => 8612017,1,ZapBarge(17)
exten => 8612018,1,ZapBarge(18)
exten => 8612019,1,ZapBarge(19)
exten => 8612020,1,ZapBarge(20)
exten => 8612021,1,ZapBarge(21)
exten => 8612022,1,ZapBarge(22)
exten => 8612023,1,ZapBarge(23)
exten => 8612024,1,ZapBarge(24)

; astGUIclient conferences
exten => 8600001,1,Meetme,8600001|q
exten => 8600002,1,Meetme,8600002|q
exten => 8600003,1,Meetme,8600003|q
exten => 8600004,1,Meetme,8600004|q
exten => 8600005,1,Meetme,8600005|q
exten => 8600006,1,Meetme,8600006|q
exten => 8600007,1,Meetme,8600007|q
exten => 8600008,1,Meetme,8600008|q
exten => 8600009,1,Meetme,8600009|q
exten => 8600010,1,Meetme,8600010|q
exten => 8600011,1,Meetme,8600011|q
exten => 8600012,1,Meetme,8600012|q
exten => 8600013,1,Meetme,8600013|q
exten => 8600014,1,Meetme,8600014|q
exten => 8600015,1,Meetme,8600015|q
exten => 8600016,1,Meetme,8600016|q
exten => 8600017,1,Meetme,8600017|q
exten => 8600018,1,Meetme,8600018|q
exten => 8600019,1,Meetme,8600019|q
exten => 8600020,1,Meetme,8600020|q
exten => 8600021,1,Meetme,8600021|q
exten => 8600022,1,Meetme,8600022|q
exten => 8600023,1,Meetme,8600023|q
exten => 8600024,1,Meetme,8600024|q
exten => 8600025,1,Meetme,8600025|q
exten => 8600026,1,Meetme,8600026|q
exten => 8600027,1,Meetme,8600027|q
exten => 8600028,1,Meetme,8600028|q
exten => 8600029,1,Meetme,8600029|q

exten => _X48600XXX,1,MeetMeAdmin(${EXTEN:2},T,${EXTEN:0:1})
exten => _X48600XXX,2,Hangup

exten => _X38600XXX,1,MeetMeAdmin(${EXTEN:2},t,${EXTEN:0:1})
exten => _X38600XXX,2,Hangup

exten => 8300,1,Hangup

; VICIDIAL conferences
exten => 8600051,1,Meetme,8600051
exten => 8600052,1,Meetme,8600052
exten => 8600053,1,Meetme,8600053
exten => 8600054,1,Meetme,8600054
exten => 8600055,1,Meetme,8600055
exten => 8600056,1,Meetme,8600056
exten => 8600057,1,Meetme,8600057
exten => 8600058,1,Meetme,8600058
exten => 8600059,1,Meetme,8600059
exten => 8600060,1,Meetme,8600060
exten => 8600061,1,Meetme,8600061
exten => 8600062,1,Meetme,8600062
exten => 8600063,1,Meetme,8600063
exten => 8600064,1,Meetme,8600064
exten => 8600065,1,Meetme,8600065
exten => 8600066,1,Meetme,8600066
exten => 8600067,1,Meetme,8600067
exten => 8600068,1,Meetme,8600068
exten => 8600069,1,Meetme,8600069
exten => 8600070,1,Meetme,8600070
exten => 8600071,1,Meetme,8600071
exten => 8600072,1,Meetme,8600072
exten => 8600073,1,Meetme,8600073
exten => 8600074,1,Meetme,8600074
exten => 8600075,1,Meetme,8600075
exten => 8600076,1,Meetme,8600076
exten => 8600077,1,Meetme,8600077
exten => 8600078,1,Meetme,8600078
exten => 8600079,1,Meetme,8600079
exten => 8600080,1,Meetme,8600080
exten => 8600081,1,Meetme,8600081
exten => 8600082,1,Meetme,8600082
exten => 8600083,1,Meetme,8600083
exten => 8600084,1,Meetme,8600084
exten => 8600085,1,Meetme,8600085
exten => 8600086,1,Meetme,8600086
exten => 8600087,1,Meetme,8600087
exten => 8600088,1,Meetme,8600088
exten => 8600089,1,Meetme,8600089
exten => 8600090,1,Meetme,8600090
exten => 8600091,1,Meetme,8600091
exten => 8600092,1,Meetme,8600092
exten => 8600093,1,Meetme,8600093
exten => 8600094,1,Meetme,8600094
exten => 8600095,1,Meetme,8600095
exten => 8600096,1,Meetme,8600096
exten => 8600097,1,Meetme,8600097
exten => 8600098,1,Meetme,8600098
exten => 8600099,1,Meetme,8600099
exten => 8600100,1,Meetme,8600100
exten => 8600101,1,Meetme,8600101
exten => 8600102,1,Meetme,8600102
exten => 8600103,1,Meetme,8600103
exten => 8600104,1,Meetme,8600104
exten => 8600105,1,Meetme,8600105
exten => 8600106,1,Meetme,8600106
exten => 8600107,1,Meetme,8600107
exten => 8600108,1,Meetme,8600108
exten => 8600109,1,Meetme,8600109
exten => 8600110,1,Meetme,8600110
exten => 8600111,1,Meetme,8600111
exten => 8600112,1,Meetme,8600112
exten => 8600113,1,Meetme,8600113
exten => 8600114,1,Meetme,8600114
exten => 8600115,1,Meetme,8600115
exten => 8600116,1,Meetme,8600116
exten => 8600117,1,Meetme,8600117
exten => 8600118,1,Meetme,8600118
exten => 8600119,1,Meetme,8600119
exten => 8600120,1,Meetme,8600120
exten => 8600121,1,Meetme,8600121
exten => 8600122,1,Meetme,8600122
exten => 8600123,1,Meetme,8600123
exten => 8600124,1,Meetme,8600124
exten => 8600125,1,Meetme,8600125
exten => 8600126,1,Meetme,8600126
exten => 8600127,1,Meetme,8600127
exten => 8600128,1,Meetme,8600128
exten => 8600129,1,Meetme,8600129
exten => 8600130,1,Meetme,8600130
exten => 8600131,1,Meetme,8600131
exten => 8600132,1,Meetme,8600132
exten => 8600133,1,Meetme,8600133
exten => 8600134,1,Meetme,8600134
exten => 8600135,1,Meetme,8600135
exten => 8600136,1,Meetme,8600136
exten => 8600137,1,Meetme,8600137
exten => 8600138,1,Meetme,8600138
exten => 8600139,1,Meetme,8600139
exten => 8600140,1,Meetme,8600140
exten => 8600141,1,Meetme,8600141
exten => 8600142,1,Meetme,8600142
exten => 8600143,1,Meetme,8600143
exten => 8600144,1,Meetme,8600144
exten => 8600145,1,Meetme,8600145
exten => 8600146,1,Meetme,8600146
exten => 8600147,1,Meetme,8600147
exten => 8600148,1,Meetme,8600148
exten => 8600149,1,Meetme,8600149
exten => 8600150,1,Meetme,8600150
exten => 8600151,1,Meetme,8600151
exten => 8600152,1,Meetme,8600152
exten => 8600153,1,Meetme,8600153
exten => 8600154,1,Meetme,8600154
exten => 8600155,1,Meetme,8600155
exten => 8600156,1,Meetme,8600156
exten => 8600157,1,Meetme,8600157
exten => 8600158,1,Meetme,8600158
exten => 8600159,1,Meetme,8600159
exten => 8600160,1,Meetme,8600160
exten => 8600161,1,Meetme,8600161
exten => 8600162,1,Meetme,8600162
exten => 8600163,1,Meetme,8600163
exten => 8600164,1,Meetme,8600164
exten => 8600165,1,Meetme,8600165
exten => 8600166,1,Meetme,8600166
exten => 8600167,1,Meetme,8600167
exten => 8600168,1,Meetme,8600168
exten => 8600169,1,Meetme,8600169
exten => 8600170,1,Meetme,8600170
exten => 8600171,1,Meetme,8600171
exten => 8600172,1,Meetme,8600172
exten => 8600173,1,Meetme,8600173
exten => 8600174,1,Meetme,8600174
exten => 8600175,1,Meetme,8600175
exten => 8600176,1,Meetme,8600176
exten => 8600177,1,Meetme,8600177
exten => 8600178,1,Meetme,8600178
exten => 8600179,1,Meetme,8600179
exten => 8600180,1,Meetme,8600180
exten => 8600181,1,Meetme,8600181
exten => 8600182,1,Meetme,8600182
exten => 8600183,1,Meetme,8600183
exten => 8600184,1,Meetme,8600184
exten => 8600185,1,Meetme,8600185
exten => 8600186,1,Meetme,8600186
exten => 8600187,1,Meetme,8600187
exten => 8600188,1,Meetme,8600188
exten => 8600189,1,Meetme,8600189
exten => 8600190,1,Meetme,8600190
exten => 8600191,1,Meetme,8600191
exten => 8600192,1,Meetme,8600192
exten => 8600193,1,Meetme,8600193
exten => 8600194,1,Meetme,8600194
exten => 8600195,1,Meetme,8600195
exten => 8600196,1,Meetme,8600196
exten => 8600197,1,Meetme,8600197
exten => 8600198,1,Meetme,8600198
exten => 8600199,1,Meetme,8600199
exten => 8600200,1,Meetme,8600200
; quiet entry and leaving conferences for VICIDIAL
exten => _78600XXX,1,Meetme,${EXTEN:1}|q
; quiet monitor extensions for meetme rooms (for room managers)
exten => _68600XXX,1,Meetme,${EXTEN:1}|mq




; park channel for client GUI parking, hangup after 30 minutes
; create a GSM formatted audio file named "park.gsm" that is 30 minutes long
; and put it in /var/lib/asterisk/sounds
exten => 8301,1,Answer
exten => 8301,2,AGI(park_CID.agi)
exten => 8301,3,Playback(park)
exten => 8301,4,Hangup
exten => 8303,1,Answer
exten => 8303,2,AGI(park_CID.agi)
exten => 8303,3,Playback(conf)
exten => 8303,4,Hangup

; park channel for client GUI conferencing, hangup after 30 minutes
; create a GSM formatted audio file named "conf.gsm" that is 30 minutes long
; and put it in /var/lib/asterisk/sounds
exten => 8302,1,Answer
exten => 8302,2,Playback(conf)
exten => 8302,3,Hangup

; default audio for safe harbor 2-second-after-hello message then hangup
; create a GSM formatted audio file complies with safe harbor rules
; and put it in /var/lib/asterisk/sounds then change filename below
exten => 8307,1,Answer
exten => 8307,2,Playback(vm-goodbye)
exten => 8307,3,Hangup

; this is used for recording conference calls, the client app sends the filename
; value as a callerID recordings go to /var/spool/asterisk/monitor (WAV)
exten => 8309,1,Answer
exten => 8309,2,Monitor(wav,${CALLERIDNAME})
exten => 8309,3,Wait,3600
exten => 8309,4,Hangup

; this is used for recording conference calls, the client app sends the filename
; value as a callerID recordings go to /var/spool/asterisk/monitor (GSM)
exten => 8310,1,Answer
exten => 8310,2,Monitor(gsm,${CALLERIDNAME})
exten => 8310,3,Wait,3600
exten => 8310,4,Hangup

; this is used for playing a message to an answering machine forwarded from AMD in VICIDIAL
; replace conf with the message file you want to leave
exten => 8320,1,WaitForSilence(2000,2) ; AMD got machine. leave message after recording
exten => 8320,2,Playback(conf)
exten => 8320,3,AGI(VD_amd_post.agi,${EXTEN})
exten => 8320,4,Hangup

; use for selective CallerID hangup by area code(hard-coded)
exten => 8352,1,AGI(agi-VDADselective_CID_hangup.agi,${EXTEN})
exten => 8352,2,Playback(safe_harbor)
exten => 8352,3,Hangup

; prompt recording AGI script, ID is 4321
exten => 8168,1,Answer
exten => 8168,2,AGI(agi-record_prompts.agi)
exten => 8168,3,Hangup

; playback of recorded prompts
exten => _851XXXXX,1,Answer
exten => _851XXXXX,2,Playback(${EXTEN})
exten => _851XXXXX,3,Hangup

; this is used to allow the GUI to send you directly into voicemail
; don't forget to set GUI variable $voicemail_exten to this extension
exten => 8501,1,VoicemailMain(s${CALLERIDNUM})
exten => 8501,2,Hangup

; this is used to allow the GUI to send live calls directly into voicemail
; don't forget to set GUI variable $voicemail_dump_exten to this extension
exten => _6666.,1,Wait(2)
exten => _6666.,2,Voicemail(${EXTEN:14})
exten => _6666.,3,Hangup

; this is used for sending DTMF signals within conference calls, the client app
; sends the digits to be played in the callerID field
; sound files must be placed in /var/lib/asterisk/sounds
exten => 8500998,1,Answer
exten => 8500998,2,Playback(silence)
exten => 8500998,3,AGI(agi-dtmf.agi)
exten => 8500998,4,Hangup




;#### VDAD SIP UNREGISTERED TRANSFER ENTRIES ####
;#### Use these entries IN PLACE OF the entries above if you are using SIP trunks
;#### and are not registering your provider in sip.conf
;; VICIDIAL_auto_dialer transfer script:
;exten => 8365,1,Playback(sip-silence)
;exten => 8365,2,AGI(agi://127.0.0.1:4577/call_log)
;;exten => 8365,2,AGI(call_log.agi,${EXTEN})
;exten => 8365,3,AGI(agi-VDADtransfer.agi,${EXTEN})
;exten => 8365,4,AGI(agi-VDADtransfer.agi,${EXTEN})
;exten => 8365,5,AGI(agi-VDADtransfer.agi,${EXTEN})
;exten => 8365,6,Hangup

;#### VDAD STANDARD TRANSFER ENTRIES ####
; VICIDIAL_auto_dialer transfer script:
exten => 8365,1,Playback(sip-silence)
exten => 8365,2,AGI(agi://127.0.0.1:4577/call_log)
;exten => 8365,1,AGI(call_log.agi,${EXTEN})
exten => 8365,3,AGI(agi-VDADtransfer.agi,${EXTEN:2})
exten => 8365,4,AGI(agi-VDADtransfer.agi,${EXTEN:2})
exten => 8365,5,AGI(agi-VDADtransfer.agi,${EXTEN:2})
exten => 8365,6,Hangup

;
;; VICIDIAL_auto_dialer transfer script SURVEY at beginning:
exten => 8366,1,Playback(sip-silence)
exten => 8366,2,AGI(agi://127.0.0.1:4577/call_log)
;;exten => 8366,2,AGI(call_log.agi,${EXTEN})
exten => 8366,3,AGI(agi-VDADtransferSURVEY.agi,${EXTEN})
exten => 8366,4,AGI(agi-VDADtransferSURVEY.agi,${EXTEN})
exten => 8366,5,Hangup
;
;; VICIDIAL_auto_dialer transfer script Load Balance Overflow:
exten => 8367,1,Playback(sip-silence)
exten => 8367,2,AGI(agi://127.0.0.1:4577/call_log)
;;exten => 8367,2,AGI(call_log.agi,${EXTEN})
exten => 8367,3,AGI(agi-VDAD_LO_transfer.agi,${EXTEN})
exten => 8367,4,AGI(agi-VDAD_LO_transfer.agi,${EXTEN})
exten => 8367,5,Hangup
;
;; VICIDIAL_auto_dialer transfer script Load Balanced:
exten => 8368,1,Playback(sip-silence)
exten => 8368,2,AGI(agi://127.0.0.1:4577/call_log)
;;exten => 8368,2,AGI(call_log.agi,${EXTEN})
exten => 8368,3,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8368,4,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8368,5,Hangup
;
;; VICIDIAL_auto_dialer transfer script AMD with Load Balanced:
exten => 8369,1,Playback(sip-silence)
exten => 8369,2,AGI(agi://127.0.0.1:4577/call_log)
;;exten => 8369,2,AGI(call_log.agi,${EXTEN})
exten => 8369,3,AMD(3500||120|50|5|256)
exten => 8369,4,AGI(VD_amd.agi,${EXTEN})
exten => 8369,5,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8369,6,AGI(agi-VDAD_LB_transfer.agi,${EXTEN})
exten => 8369,7,Hangup
;
;; VICIDIAL auto-dial reminder script
exten => 8372,1,Playback(sip-silence)
exten => 8372,2,AGI(agi://127.0.0.1:4577/call_log)
;;exten => 8372,2,AGI(call_log.agi,${EXTEN})
exten => 8372,3,AGI(agi-VDADautoREMINDER.agi,${EXTEN})
exten => 8372,4,AGI(agi-VDADautoREMINDER.agi,${EXTEN})
exten => 8372,5,Hangup






d. You need to edit “/etc/asterisk/manager.conf” and add the following lines:

admin
secret = amp111
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

cron
secret = 1234
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

updatecron
secret = 1234
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user

listencron
secret = 1234
read = system,call,log,verbose,command,agent,user
write = command

sendcron
secret = 1234
read = command
write = system,call,log,verbose,command,agent,user

user1
secret = 1234
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user




e. You need to edit “/etc/asterisk/meetme.conf” and add the following line:

#include vicidial_meetme.conf

f. You need to create a file “/etc/asterisk/vicidial_meetme.conf” and add the following lines:

conf => 8600011
conf => 8600012
conf => 8600013
conf => 8600014
conf => 8600015
conf => 8600016
conf => 8600017
conf => 8600018
conf => 8600019
conf => 8600020
conf => 8600021
conf => 8600022
conf => 8600023
conf => 8600024
conf => 8600025
conf => 8600026
conf => 8600027
conf => 8600028
conf => 8600029
conf => 8600051
conf => 8600052
conf => 8600053
conf => 8600054
conf => 8600055
conf => 8600056
conf => 8600057
conf => 8600058
conf => 8600059
conf => 8600060
conf => 8600061
conf => 8600062
conf => 8600063
conf => 8600064
conf => 8600065
conf => 8600066
conf => 8600067
conf => 8600068
conf => 8600069
conf => 8600070
conf => 8600071
conf => 8600072
conf => 8600073
conf => 8600074
conf => 8600075
conf => 8600076
conf => 8600077
conf => 8600078
conf => 8600079
conf => 8600080
conf => 8600081
conf => 8600082
conf => 8600083
conf => 8600084
conf => 8600085
conf => 8600086
conf => 8600087
conf => 8600088
conf => 8600089
conf => 8600090
conf => 8600091
conf => 8600092
conf => 8600093
conf => 8600094
conf => 8600095
conf => 8600096
conf => 8600097
conf => 8600098
conf => 8600099
conf => 8600100

g. In order to get better performance in Perl Script, you need to start asterisk using Matt Florell’s starup script. For this purpose, you need to edit “/usr/sbin/amportal” near line 178 and make follwing change:

case "$1" in
start)
chown_asterisk
# run_asterisk #Replace for Vicidial use
/usr/share/astguiclient/start_asterisk_boot.pl
run_fop
 ;;
stop)
stop_asterisk
stop_fop
 ;;
restart)
stop_asterisk
stop_fop
sleep 1
chown_asterisk
# run_asterisk #Replace for Vicidial use
/usr/share/astguiclient/start_asterisk_boot.pl
run_fop
 ;;
chown)
chown_asterisk
 ;;
kill)
kill_amp
 ;;
*)
echo "----------AMP Control Script-----------"




All must be right now to start using VICIDIAL and FreePBX
If anyone has any questions, comments, or concerns, please let me know.

Vicidial Scratch Install

How To install ViciDial/astGUIclient 2.2.1 With Asterisk 1.4.21.2 On CentOS 5.5

How To install ViciDial/astGUIclient 2.2.1 With Asterisk 1.4.21.2 On CentOS 5.5

 

Introduction


VICIDIAL is an enterprise class, open source, call center suite in use by many large call centers around the world.
Asterisk is software that turns an ordinary computer into a voice communications server.
Together, you have a full featured predictive dialer. It can also function as an ACD for inbound calls, or closer calls coming from VICIDIAL outbound fronters. It is capable of inbound, outbound, and blended call handling. VICIDIAL even allows you to have agents logged in from remote locations.

 

Preliminary Notes


In this tutorial I will be installing this on a newly installed CentOS 5.5 64-bit dedicated server that I am leasing from a data center. It has no control panel (cPanel, Plesk, ISPconfig, etc..) because a control panel is not needed. Your should be comfortable using a command line terminal in Linux and know basic server administration. These same instructions apply to CentOS 5.5 32-bit except for one minor change when editing the php.ini for eAccelerator in which I pointed out in that part of the configuration.

This tutorial will not explain how to configure or use vicidial. For that, I recommend purchasing the Agent and Managers Manual from www.eflo.net. This is required reading. There is also a free version of the Agent and Manager's Manual available for download that will help. You may also use the forums to ask specific questions.

This tutorial is a derivative of the original scratch install instructions found in the astguiclient source package. It has been adapted to CentOS.

From time to time this page will get updated.

 


You must login as root to install the following software.

 

 

Update the system


Make sure you update the system first, then reboot if you installed an updated kernel.

yum -y update
reboot


Install the following software

yum install gcc gcc-c++ 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 ncurses ncurses-devel screen sox mysql-server mysql-devel ntp kernel-devel mutt

 

Setup MySQL



Setup default MySQL tables, start MySQL and configure root password
Replace "mypassword" with your real password.

mysql_install_db
/etc/init.d/mysqld start
/usr/bin/mysqladmin -u root password 'mypassword'

 

Update the time zone


Configure the system time and update it. (I set the server time zone to Arizona, so this is how I did it)

rm /etc/localtime
ln -sf /usr/share/zoneinfo/US/Arizona /etc/localtime
rdate -s nist1-ny.ustiming.org

Changes take effect immediately after you run the rdate command.

Have a look inside /usr/share/zoneinfo/US/ for different time zones.

 

Turn off ntpd and remove it from bootup runlevels.

You will be running ntpdate from cron instead.

service ntpd stop
chkconfig ntpd off

 

Setup CPAN and install some modules


Run the following command

perl -MCPAN -e shell

 

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.
This may take a while.

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
quit

In the end, I usually run all these commands once again to make sure its all installed.

 

Installing the Asterisk-Perl module


NOTE: Do NOT use the 0.09 or any newer version, they do not work with ViciDial.

cd /usr/src
wget http://asterisk.gnuinter.net/files/asterisk-perl-0.08.tar.gz
tar -zxf asterisk-perl-0.08.tar.gz
cd asterisk-perl-0.08
perl Makefile.PL
make all
make install

 

Installing additional software from source (optional, but highly recommended)


Next, you will download, compile and install the following software.

  • lame
  • ttyload
  • iftop
  • mtop
  • mytop
  • sipsak
  • ploticus

LAME:
LAME is an MP3 encoder used to convert audio files from WAV to MP3. Some prefer GSM usually, but others have standardized on MP3 so you would need this utility to be loaded to use that option.

cd /usr/src
wget http://downloads.sourceforge.net/project/lame/lame/3.98.2/lame-398-2.tar.gz
tar -zxf lame-398-2.tar.gz
cd lame-398-2
./configure
make
make install


TTYLOAD:
ttyload is a simple terminal application that shows the processor load in a graphical time-based scrolling graph. I use it to view how loaded the system is and it visualizes load spikes very well.

cd /usr/src
wget http://www.daveltd.com/src/util/ttyload/ttyload-0.5.tar.gz
tar -zxf ttyload-0.5.tar.gz
cd ttyload-0.5
make
ln -s /usr/src/ttyload-0.5/ttyload /usr/bin/ttyload


IFTOP:
iftop is a good console bandwidth visualization tool that shows you active connections, where they are going to/from and how much of your precious bandwidth they are using.

cd /usr/src
wget http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz
tar -zxf iftop-0.17.tar.gz
cd iftop-0.17
./configure
make
make install


MTOP:
mtop is a great utility for real-time monitoring of mysql and the queries that are running in it.
Note: the root mysql password must be blank before installing this

mysql -u root -p


Enter your MySQL password, then the following MySQL command:

SET PASSWORD FOR root@localhost=PASSWORD('');QUIT;

cd /usr/src
wget http://downloads.sourceforge.net/project/mtop/mtop/v0.6.6/mtop-0.6.6.tar.gz
tar -zxf mtop-0.6.6.tar.gz
cd mtop-0.6.6
perl Makefile.PL
make
make install


Enter the following MySQL command to put your root password back the way it was originally
Replace "mypassword" with your real password.

SET PASSWORD FOR root@localhost=PASSWORD('mypassword');QUIT;


MYTOP:
mytop is is an optional utility for monitoring the threads and overall performance of mysql
Note: the root mysql password must be blank before installing this

mysql -u root -p


Enter your MySQL password, then the following MySQL command:

SET PASSWORD FOR root@localhost=PASSWORD('');QUIT;

cd /usr/src
wget http://jeremy.zawodny.com/mysql/mytop/mytop-1.6.tar.gz
tar -zxf mytop-1.6.tar.gz
cd mytop-1.6
perl Makefile.PL
make
make test
make install


Enter the following MySQL command to put your root password back the way it was originally
Replace "mypassword" with your real password.

SET PASSWORD FOR root@localhost=PASSWORD('mypassword');QUIT;


SIPSAK:
sipsak is an optional utility that VICIDIAL can use to send messages to an agent's SIP-based phone(like the Snom 320) to display text on their LCD screen.

cd /usr/src
wget http://download.berlios.de/sipsak/sipsak-0.9.6-1.tar.gz
tar -zxf sipsak-0.9.6-1.tar.gz
cd sipsak-0.9.6
./configure
make
make install
/usr/local/bin/sipsak --version


PLOTICUS:
ploticus is a free graph creation package that allows you to create line graphs within PNG files simply by creating a config file and a data file. ViciDial uses this package to generate server performance graphs that can be displayed real-time within the ViciDial reports page.

cd /usr/src
wget http://downloads.sourceforge.net/project/ploticus/ploticus/2.41/pl241src.tar.gz
tar -zxf pl241src.tar.gz
cd pl241src/src/
make clean
make
make install
mkdir -p /var/www/html/vicidial/ploticus/
cp pl /var/www/html/vicidial/ploticus/

 

Installing eAccelerator for PHP


Install the php module

cd /usr/src
wget http://sourceforge.net/projects/eaccelerator/files/eaccelerator/eAccelerator 0.9.6.1/eaccelerator-0.9.6.1.zip/download
unzip eaccelerator-0.9.6.1.zip
cd eaccelerator-0.9.6.1
export PHP_PREFIX="/usr"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make
make install


Configure php.ini

nano /etc/php.ini

You will want to make sure NOTICE logging is turned off:

error_reporting  =  E_ALL & ~E_NOTICE
memory_limit = 48M
short_open_tag = On
max_execution_time = 330
max_input_time = 360
post_max_size = 48M
upload_max_filesize = 42M
default_socket_timeout = 360

Add the following lines to the dynamic extensions section of php.ini:

Note: For CentOS 32-bit, use this below: zend_extension="/usr/lib/php/modules/eaccelerator.so"

zend_extension="/usr/lib64/php/modules/eaccelerator.so"
;For CentOS 32-bit: zend_extension="/usr/lib/php/modules/eaccelerator.so"
eaccelerator.shm_size="48"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"


mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator
php -v

You should see something like this:

PHP 5.1.6 (cli) (built: Jan 13 2010 17:09:42)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
   with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

 

Editing the Apache config file


nano /etc/httpd/conf/httpd.conf


To disable logging, change:
           

CustomLog logs/access_log common
        to this:
CustomLog /dev/null common

To enable web browsing of Recordings on Asterisk server, add this:
   
Alias /RECORDINGS/ "/var/spool/asterisk/monitorDONE/"

<Directory "/var/spool/asterisk/monitorDONE">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
<files *.mp3>
Forcetype application/forcedownload
</files>
</Directory>

Restart the Apache web server to apply the changes

/etc/init.d/httpd restart

 

Installing Asterisk


At the time of this writing, you cannot install the latest version of Asterisk 1.6 or 1.8.
ViciDial 2.2.1 is currently compatible with Asterisk 1.4.21.2. This version of Asterisk also needs to be patched to work with vicidial correctly.

mkdir /usr/src/asterisk
cd /usr/src/asterisk
wget http://downloads.digium.com/pub/asterisk/old-releases/asterisk-1.4.21.2.tar.gz
wget http://downloads.digium.com/pub/zaptel/zaptel-1.4.12.1.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/old/libpri-1.4.9.tar.gz
tar -zxf asterisk-1.4.21.2.tar.gz
tar -zxf zaptel-1.4.12.1.tar.gz
tar -zxf libpri-1.4.9.tar.gz
cd libpri-1.4.9
make clean
make
make install
cd ../zaptel-1.4.12.1
./configure
make clean
make
make install
make config
cd ../asterisk-1.4.21.2
wget http://www.eflo.net/files/enter.h
wget http://www.eflo.net/files/leave.h
mv -f enter.h apps/enter.h
mv -f leave.h apps/leave.h
wget http://download.vicidial.com/asterisk-patches/1.4-gsm-gcc4.2.patch
patch -p1 ./codecs/gsm/Makefile 1.4-gsm-gcc4.2.patch
wget http://download.vicidial.com/conf/res_agi_defunct.patch
patch -p1 < res_agi_defunct.patch
      File to patch: res/res_agi.c
cd apps/
rm -f app_waitforsilence.c
wget http://download.vicidial.com/conf/app_waitforsilence.c
cd ../channels/
rm chan_sip.c
wget http://download.vicidial.com/conf/chan_sip.c
cd ../
./configure
make clean
make
make install
make samples
modprobe zaptel
modprobe ztdummy

 

Add init.d script and add to bootup runlevels

cp /usr/src/asterisk/asterisk-1.4.21.2/contrib/init.d/rc.redhat.asterisk /etc/init.d/asterisk
chkconfig --add asterisk

 

Installing Sound files



Download the sound files

cd /usr/src
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-en-ulaw-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-en-wav-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-core-sounds-en-gsm-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-en-ulaw-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-en-wav-current.tar.gz
wget http://downloads.digium.com/pub/telephony/sounds/asterisk-extra-sounds-en-gsm-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-moh-opsound-gsm-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-moh-opsound-ulaw-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-moh-opsound-wav-current.tar.gz

Set the sounds in place

cd /var/lib/asterisk/sounds
tar -zxf /usr/src/asterisk-core-sounds-en-gsm-current.tar.gz
tar -zxf /usr/src/asterisk-core-sounds-en-ulaw-current.tar.gz
tar -zxf /usr/src/asterisk-core-sounds-en-wav-current.tar.gz
tar -zxf /usr/src/asterisk-extra-sounds-en-gsm-current.tar.gz
tar -zxf /usr/src/asterisk-extra-sounds-en-ulaw-current.tar.gz
tar -zxf /usr/src/asterisk-extra-sounds-en-wav-current.tar.gz

mkdir /var/lib/asterisk/mohmp3
mkdir /var/lib/asterisk/quiet-mp3
mkdir /var/lib/asterisk/default
cd /var/lib/asterisk
ln -s mohmp3 default
ln -s moh mohmp3
cd mohmp3
tar -zxf /usr/src/asterisk-moh-opsound-gsm-current.tar.gz
tar -zxf /usr/src/asterisk-moh-opsound-ulaw-current.tar.gz
tar -zxf /usr/src/asterisk-moh-opsound-wav-current.tar.gz
rm CHANGES*
rm LICENSE*
rm CREDITS*
cd /var/lib/asterisk/moh
rm CHANGES*
rm LICENSE*
rm CREDITS*
cd /var/lib/asterisk/sounds
rm CHANGES*
rm LICENSE*
rm CREDITS*
cd /var/lib/asterisk/quiet-mp3


sox ../mohmp3/macroform-cold_day.wav macroform-cold_day.wav vol 0.25
sox ../mohmp3/macroform-cold_day.gsm macroform-cold_day.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/macroform-cold_day.ulaw -t ul macroform-cold_day.ulaw vol 0.25
sox ../mohmp3/macroform-robot_dity.wav macroform-robot_dity.wav vol 0.25
sox ../mohmp3/macroform-robot_dity.gsm macroform-robot_dity.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/macroform-robot_dity.ulaw -t ul macroform-robot_dity.ulaw vol 0.25
sox ../mohmp3/macroform-the_simplicity.wav macroform-the_simplicity.wav vol 0.25
sox ../mohmp3/macroform-the_simplicity.gsm macroform-the_simplicity.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/macroform-the_simplicity.ulaw -t ul macroform-the_simplicity.ulaw vol 0.25
sox ../mohmp3/reno_project-system.wav reno_project-system.wav vol 0.25
sox ../mohmp3/reno_project-system.gsm reno_project-system.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/reno_project-system.ulaw -t ul reno_project-system.ulaw vol 0.25
sox ../mohmp3/manolo_camp-morning_coffee.wav manolo_camp-morning_coffee.wav vol 0.25
sox ../mohmp3/manolo_camp-morning_coffee.gsm manolo_camp-morning_coffee.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/manolo_camp-morning_coffee.ulaw -t ul manolo_camp-morning_coffee.ulaw vol 0.25

 

Installing Astguiclient


Installing Astguiclient 2.2.1.

Note: the installer will ask where your web root is located. I use /var/www/html as my web root. This is where the installer will put your web-facing files.

mkdir /usr/src/astguiclient
cd /usr/src/astguiclient
wget http://downloads.sourceforge.net/project/astguiclient/astguiclient_2.2.1.zip
unzip astguiclient_2.2.1.zip
perl install.pl


Download and copy a gsm file

cd /var/lib/asterisk/sounds
wget http://astguiclient.sf.net/conf.gsm
cp conf.gsm park.gsm

 

Create the database and import the sample data


First, login to mysql to run some commands

mysql -u root -p


Enter these MySQL commands:

CREATE DATABASE `asterisk` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
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;
SET GLOBAL connect_timeout=60;

use asterisk;

\. /usr/src/astguiclient/extras/MySQL_AST_CREATE_tables.sql
\. /usr/src/astguiclient/extras/sip-iax_phones.sql
\. /usr/src/astguiclient/extras/first_server_install.sql
quit


In the Linux terminal, enter these commands

/usr/share/astguiclient/ADMIN_area_code_populate.pl
cp /usr/src/astguiclient/extras/performance_test_leads.txt /usr/share/astguiclient/LEADS_IN/
/usr/share/astguiclient/VICIDIAL_IN_new_leads_file.pl --forcelistid=107 --forcephonecode=1


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

nano /etc/rc.d/rc.local

### sybsys local login
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 zaptel drivers
modprobe zaptel
modprobe ztdummy
/sbin/ztcfg -vvvvvvvvvvvv

### 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:

crontab -e

### 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 --GSM
#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

### 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

 

Final Adjustments


It is important to change the externip and localnet values in the sip.conf

The externip needs to be the public ip of your server.
The localnet will consist of the public ip/netmask of your server.

nano /etc/asterisk/sip.conf

externip = 75.75.75.75
localnet=75.75.75.75/255.255.255.248


Run this perl script to update the server_ip fields in the asterisk tables (copy the command as-is)

/usr/share/astguiclient/ADMIN_update_server_ip.pl --old-server_ip=10.10.10.15


Update music on hold configuration

nano /etc/asterisk/musiconhold.conf

;
; 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


* There are other sample configration files in /usr/src/astguiclient/docs/conf_examples/ that you might want to look at and maybe copy from and customize.

 

Lastly, reboot the machine

reboot

 

Diagnostics


After reboot, check your logs for any errors, make sure asterisk is up and running. Be proactive and look for problems before you start configuring vicidial.

Run these commands to view log files:

  • tail -f -n 50 /var/log/asterisk/messages
  • tail -f -n 50 /var/log/messages
  • more /var/log/dmesg
  • tail -f -n 40 /etc/httpd/logs/error_log
  • tail -f -n 40 /var/log/maillog
  • tail -f -n 40 /var/log/cron

Run this command:

screen -ls

The output should look similar to this:


There are screens on:
    4090.asterisk   (Detached)
    4077.ASTfastlog (Detached)
    8325.ASTsend    (Detached)
    8322.ASTupdate  (Detached)
    4004.astshell20110228193500     (Detached)
    8334.ASTVDremote        (Detached)
    8328.ASTlisten  (Detached)
    12192.ASTVDadapt        (Detached)
    8331.ASTVDauto  (Detached)
    9 Sockets in /var/run/screen/S-root.

 

Start using vicidial


Login to vicidial and configure it.

Add users, campaigns, in-group, DID's, server, etc....

Go to: http://youripaddress/vicidial/admin.php

The default username is: 6666 and the password is: 1234

 

A note about security


When you get vicidial configured and working, make sure to follow basic common sense server administration rules like setting up a firewall, changing default passwords, disallow remote mysql connections or limiting it, etc...

 

 

 

Dont forget to purchase the Agent and Managers Manual from www.eflo.net.

 

Last Updated: 09/07/2011