diff --git a/agc_2-X/trunk/docs/BASE_INSTALL.txt b/agc_2-X/trunk/docs/BASE_INSTALL.txt index b65a7ed6..44dea57f 100644 --- a/agc_2-X/trunk/docs/BASE_INSTALL.txt +++ b/agc_2-X/trunk/docs/BASE_INSTALL.txt @@ -31,16 +31,16 @@ PHASE 1: INSTALLING ASTERISK 1. follow these command line steps: mkdir /usr/src/asterisk cd /usr/src/asterisk -wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.26.2.tar.gz -wget http://ftp.digium.com/pub/zaptel/releases/zaptel-1.2.23.tar.gz +wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.27.tar.gz +wget http://ftp.digium.com/pub/zaptel/releases/zaptel-1.2.24.tar.gz wget http://ftp.digium.com/pub/libpri/releases/libpri-1.2.7.tar.gz -gunzip asterisk-1.2.26.2.tar.gz -tar xvf asterisk-1.2.26.2.tar -gunzip zaptel-1.2.23.tar.gz -tar xvf zaptel-1.2.23.tar +gunzip asterisk-1.2.27.tar.gz +tar xvf asterisk-1.2.27.tar +gunzip zaptel-1.2.24.tar.gz +tar xvf zaptel-1.2.24.tar gunzip libpri-1.2.7.tar.gz tar xvf libpri-1.2.7.tar -cd ./zaptel-1.2.23 +cd ./zaptel-1.2.24 wget http://www.freedomphones.net/files/newt-0.51.6.tar.gz gunzip newt-0.51.6.tar.gz tar xvf newt-0.51.6.tar @@ -58,7 +58,7 @@ cd ../libpri-1.2.7 make clean make make install -cd ../asterisk-1.2.26.2 +cd ../asterisk-1.2.27 (1.2 tree) If you want to include Answering Machine Detection ability you will need to download app_amd.c and amd.conf and alter the apps/Makefile to compile it properly @@ -73,11 +73,11 @@ cd ../asterisk-1.2.26.2 wget http://www.eflo.net/files/amd2.conf mkdir /etc/asterisk mv amd2.conf /etc/asterisk/amd.conf - *OPTIONAL*(1.2.23 thru 1.2.26.2) apply the meetme DTMF passthru patch + *OPTIONAL*(1.2.23 thru 1.2.27) apply the meetme DTMF passthru patch wget http://www.eflo.net/files/meetme_DTMF_passthru-1.2.23.patch patch -p1 < ./meetme_DTMF_passthru-1.2.23.patch - File to patch: app_meetme.c - *OPTIONAL*(1.2.12.1 thru 1.2.26.2) apply the meetme volume control patch + *OPTIONAL*(1.2.12.1 thru 1.2.27) apply the meetme volume control patch *Different patches available for 1.2.7.1 through 1.2.14 wget http://www.eflo.net/files/meetme_volume_control_1.2.16.patch patch -p1 < ./meetme_volume_control_1.2.16.patch @@ -89,7 +89,7 @@ cd ../asterisk-1.2.26.2 patch -p1 < ./cli_chan_concise_delimiter.patch - File to patch: cli.c - *OPTIONAL*(1.2.14 thru 1.2.26.2) rewrite of waitforsilence + *OPTIONAL*(1.2.14 thru 1.2.27) rewrite of waitforsilence wget http://www.eflo.net/files/app_waitforsilence.c mv -f app_waitforsilence.c apps/app_waitforsilence.c @@ -237,13 +237,13 @@ musiconhold audio files to be converted to native formats like GSM, ULAW and ALA mv -f *.mp3 ../orig-mp3/ mkdir ../quiet-mp3 cd ../quiet-mp3 - sox -r 44100 -w -s -c 1 ../mohmp3/fpm-sunshine.raw -r 8000 -c 1 -v 0.5 fpm-sunshine.wav + sox -r 44100 -w -s -c 1 ../mohmp3/fpm-sunshine.raw -r 8000 -c 1 -v 0.25 fpm-sunshine.wav sox fpm-sunshine.wav -t gsm -r 8000 -b -c 1 fpm-sunshine.gsm sox fpm-sunshine.wav -t ul -r 8000 -b -c 1 fpm-sunshine.pcm - sox -r 44100 -w -s -c 1 ../mohmp3/fpm-calm-river.raw -r 8000 -c 1 -v 0.5 fpm-calm-river.wav + sox -r 44100 -w -s -c 1 ../mohmp3/fpm-calm-river.raw -r 8000 -c 1 -v 0.25 fpm-calm-river.wav sox fpm-calm-river.wav -t gsm -r 8000 -b -c 1 fpm-calm-river.gsm sox fpm-calm-river.wav -t ul -r 8000 -b -c 1 fpm-calm-river.pcm - sox -r 44100 -w -s -c 1 ../mohmp3/fpm-world-mix.raw -r 8000 -c 1 -v 0.5 fpm-world-mix.wav + sox -r 44100 -w -s -c 1 ../mohmp3/fpm-world-mix.raw -r 8000 -c 1 -v 0.25 fpm-world-mix.wav sox fpm-world-mix.wav -t gsm -r 8000 -b -c 1 fpm-world-mix.gsm sox fpm-world-mix.wav -t ul -r 8000 -b -c 1 fpm-world-mix.pcm rm -f ../mohmp3/*.raw diff --git a/agc_2-X/trunk/docs/REQUIRED_APPS_INSTALL.txt b/agc_2-X/trunk/docs/REQUIRED_APPS_INSTALL.txt index 430edfee..77740a75 100644 --- a/agc_2-X/trunk/docs/REQUIRED_APPS_INSTALL.txt +++ b/agc_2-X/trunk/docs/REQUIRED_APPS_INSTALL.txt @@ -308,16 +308,16 @@ make install mkdir /usr/src/asterisk cd /usr/src/asterisk -wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.26.2.tar.gz -wget http://ftp.digium.com/pub/zaptel/releases/zaptel-1.2.23.tar.gz +wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.27.tar.gz +wget http://ftp.digium.com/pub/zaptel/releases/zaptel-1.2.24.tar.gz wget http://ftp.digium.com/pub/libpri/releases/libpri-1.2.7.tar.gz -gunzip asterisk-1.2.26.2.tar.gz -tar xvf asterisk-1.2.26.2.tar -gunzip zaptel-1.2.23.tar.gz -tar xvf zaptel-1.2.23.tar +gunzip asterisk-1.2.27.tar.gz +tar xvf asterisk-1.2.27.tar +gunzip zaptel-1.2.24.tar.gz +tar xvf zaptel-1.2.24.tar gunzip libpri-1.2.7.tar.gz tar xvf libpri-1.2.7.tar -cd ./zaptel-1.2.23 +cd ./zaptel-1.2.24 wget http://www.freedomphones.net/files/newt-0.51.6.tar.gz gunzip newt-0.51.6.tar.gz tar xvf newt-0.51.6.tar @@ -335,7 +335,7 @@ cd ../libpri-1.2.7 make clean make make install -cd ../asterisk-1.2.26.2 +cd ../asterisk-1.2.27 cd apps wget http://www.eflo.net/files/app_amd2.c mv app_amd2.c app_amd.c @@ -403,13 +403,13 @@ mkdir ../orig-mp3 mv -f *.mp3 ../orig-mp3/ mkdir ../quiet-mp3 cd ../quiet-mp3 -sox -r 44100 -w -s -c 1 ../mohmp3/fpm-sunshine.raw -r 8000 -c 1 -v 0.5 fpm-sunshine.wav +sox -r 44100 -w -s -c 1 ../mohmp3/fpm-sunshine.raw -r 8000 -c 1 -v 0.25 fpm-sunshine.wav sox fpm-sunshine.wav -t gsm -r 8000 -b -c 1 fpm-sunshine.gsm sox fpm-sunshine.wav -t ul -r 8000 -b -c 1 fpm-sunshine.pcm -sox -r 44100 -w -s -c 1 ../mohmp3/fpm-calm-river.raw -r 8000 -c 1 -v 0.5 fpm-calm-river.wav +sox -r 44100 -w -s -c 1 ../mohmp3/fpm-calm-river.raw -r 8000 -c 1 -v 0.25 fpm-calm-river.wav sox fpm-calm-river.wav -t gsm -r 8000 -b -c 1 fpm-calm-river.gsm sox fpm-calm-river.wav -t ul -r 8000 -b -c 1 fpm-calm-river.pcm -sox -r 44100 -w -s -c 1 ../mohmp3/fpm-world-mix.raw -r 8000 -c 1 -v 0.5 fpm-world-mix.wav +sox -r 44100 -w -s -c 1 ../mohmp3/fpm-world-mix.raw -r 8000 -c 1 -v 0.25 fpm-world-mix.wav sox fpm-world-mix.wav -t gsm -r 8000 -b -c 1 fpm-world-mix.gsm sox fpm-world-mix.wav -t ul -r 8000 -b -c 1 fpm-world-mix.pcm rm -f ../mohmp3/*.raw @@ -444,6 +444,36 @@ rm -f /usr/lib/asterisk/modules/format_au.so rm -f /usr/lib/asterisk/modules/format_pcm_alaw.so rm -f /usr/lib/asterisk/modules/pbx_functions.so +### If downgrading from 1.4.X Asterisk to 1.2.X asterisk: +rm -f /usr/lib/asterisk/modules/app_channelredirect.so +rm -f /usr/lib/asterisk/modules/app_followme.so +rm -f /usr/lib/asterisk/modules/app_morsecode.so +rm -f /usr/lib/asterisk/modules/app_speech_utils.so +rm -f /usr/lib/asterisk/modules/format_h264.so +rm -f /usr/lib/asterisk/modules/func_base64.so +rm -f /usr/lib/asterisk/modules/func_cdr.so +rm -f /usr/lib/asterisk/modules/func_channel.so +rm -f /usr/lib/asterisk/modules/func_curl.so +rm -f /usr/lib/asterisk/modules/func_cut.so +rm -f /usr/lib/asterisk/modules/func_db.so +rm -f /usr/lib/asterisk/modules/func_env.so +rm -f /usr/lib/asterisk/modules/func_global.so +rm -f /usr/lib/asterisk/modules/func_groupcount.so +rm -f /usr/lib/asterisk/modules/func_language.so +rm -f /usr/lib/asterisk/modules/func_logic.so +rm -f /usr/lib/asterisk/modules/func_math.so +rm -f /usr/lib/asterisk/modules/func_md5.so +rm -f /usr/lib/asterisk/modules/func_moh.so +rm -f /usr/lib/asterisk/modules/func_rand.so +rm -f /usr/lib/asterisk/modules/func_realtime.so +rm -f /usr/lib/asterisk/modules/func_sha1.so +rm -f /usr/lib/asterisk/modules/func_strings.so +rm -f /usr/lib/asterisk/modules/func_timeout.so +rm -f /usr/lib/asterisk/modules/res_clioriginate.so +rm -f /usr/lib/asterisk/modules/res_convert.so +rm -f /usr/lib/asterisk/modules/res_smdi.so +rm -f /usr/lib/asterisk/modules/res_snmp.so +rm -f /usr/lib/asterisk/modules/res_speech.so mkdir /usr/src/asterisk-1.4 cd /usr/src/asterisk-1.4 diff --git a/agc_2-X/trunk/docs/SCRATCH_INSTALL.txt b/agc_2-X/trunk/docs/SCRATCH_INSTALL.txt index f5ee81e0..43d42e8b 100644 --- a/agc_2-X/trunk/docs/SCRATCH_INSTALL.txt +++ b/agc_2-X/trunk/docs/SCRATCH_INSTALL.txt @@ -851,13 +851,13 @@ with the following patch: - mkdir /usr/src/asterisk - cd /usr/src/asterisk A. if you want 1.2 release (reliable with new features): - - wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.24.tar.gz - - wget http://ftp.digium.com/pub/zaptel/releases/zaptel-1.2.21.tar.gz + - wget http://ftp.digium.com/pub/asterisk/releases/asterisk-1.2.27.tar.gz + - wget http://ftp.digium.com/pub/zaptel/releases/zaptel-1.2.24.tar.gz - wget http://ftp.digium.com/pub/libpri/releases/libpri-1.2.5.tar.gz - - gunzip asterisk-1.2.24.tar.gz - - tar xvf asterisk-1.2.24.tar - - gunzip zaptel-1.2.21.tar.gz - - tar xvf zaptel-1.2.21.tar + - gunzip asterisk-1.2.27.tar.gz + - tar xvf asterisk-1.2.27.tar + - gunzip zaptel-1.2.24.tar.gz + - tar xvf zaptel-1.2.24.tar - gunzip libpri-1.2.5.tar.gz - tar xvf libpri-1.2.5.tar B. if you want latest SVN_1.2 version (release tree with new patches) @@ -882,7 +882,7 @@ with the following patch: edit this line at the top and just add a hash # in front of it as shown: #PBX_LIBS+=$(shell $(CROSS_COMPILE_BIN)gtk-config --cflags >/dev/null 2>/dev/null && echo "pbx_gtkconsole.so") - - cd ./zaptel-1.2.21 + - cd ./zaptel-1.2.24 - make clean - make - make install @@ -890,7 +890,7 @@ with the following patch: - make clean - make - make install - - cd ../asterisk-1.2.24 + - cd ../asterisk-1.2.27 - (1.2 tree) If you want to include Answering Machine Detection ability you will need to download app_amd.c and amd.conf and alter the apps/Makefile to compile it properly @@ -905,11 +905,11 @@ with the following patch: - wget http://www.eflo.net/files/amd2.conf - mkdir /etc/asterisk - mv amd2.conf /etc/asterisk/amd.conf - *OPTIONAL*(1.2.23 thru 1.2.24) apply the meetme DTMF passthru patch + *OPTIONAL*(1.2.23 thru 1.2.27) apply the meetme DTMF passthru patch - wget http://www.eflo.net/files/meetme_DTMF_passthru-1.2.23.patch - patch -p1 < ./meetme_DTMF_passthru-1.2.23.patch - File to patch: app_meetme.c - *OPTIONAL*(1.2.12.1 thru 1.2.24) apply the meetme volume control patch + *OPTIONAL*(1.2.12.1 thru 1.2.27) apply the meetme volume control patch *Different patches available for 1.2.7.1 through 1.2.14 - wget http://www.eflo.net/files/meetme_volume_control_1.2.16.patch - patch -p1 < ./meetme_volume_control_1.2.16.patch @@ -921,7 +921,7 @@ with the following patch: - patch -p1 < ./cli_chan_concise_delimiter.patch - File to patch: cli.c - *OPTIONAL*(1.2.14 thru 1.2.24) rewrite of waitforsilence + *OPTIONAL*(1.2.14 thru 1.2.27) rewrite of waitforsilence - wget http://www.eflo.net/files/app_waitforsilence.c - mv -f app_waitforsilence.c apps/app_waitforsilence.c @@ -1023,13 +1023,13 @@ musiconhold audio files to be converted to native formats like GSM, ULAW and ALA mv -f *.mp3 ../orig-mp3/ mkdir ../quiet-mp3 cd ../quiet-mp3 - sox -r 44100 -w -s -c 1 ../mohmp3/fpm-sunshine.raw -r 8000 -c 1 -v 0.5 fpm-sunshine.wav + sox -r 44100 -w -s -c 1 ../mohmp3/fpm-sunshine.raw -r 8000 -c 1 -v 0.25 fpm-sunshine.wav sox fpm-sunshine.wav -t gsm -r 8000 -b -c 1 fpm-sunshine.gsm sox fpm-sunshine.wav -t ul -r 8000 -b -c 1 fpm-sunshine.pcm - sox -r 44100 -w -s -c 1 ../mohmp3/fpm-calm-river.raw -r 8000 -c 1 -v 0.5 fpm-calm-river.wav + sox -r 44100 -w -s -c 1 ../mohmp3/fpm-calm-river.raw -r 8000 -c 1 -v 0.25 fpm-calm-river.wav sox fpm-calm-river.wav -t gsm -r 8000 -b -c 1 fpm-calm-river.gsm sox fpm-calm-river.wav -t ul -r 8000 -b -c 1 fpm-calm-river.pcm - sox -r 44100 -w -s -c 1 ../mohmp3/fpm-world-mix.raw -r 8000 -c 1 -v 0.5 fpm-world-mix.wav + sox -r 44100 -w -s -c 1 ../mohmp3/fpm-world-mix.raw -r 8000 -c 1 -v 0.25 fpm-world-mix.wav sox fpm-world-mix.wav -t gsm -r 8000 -b -c 1 fpm-world-mix.gsm sox fpm-world-mix.wav -t ul -r 8000 -b -c 1 fpm-world-mix.pcm rm -f ../mohmp3/*.raw diff --git a/agc_2-X/trunk/docs/conf_examples/iax.conf.sample-1.4 b/agc_2-X/trunk/docs/conf_examples/iax.conf.sample-1.4 new file mode 100644 index 00000000..7bd5c4c0 --- /dev/null +++ b/agc_2-X/trunk/docs/conf_examples/iax.conf.sample-1.4 @@ -0,0 +1,796 @@ +[general] +bindport=4569 +iaxcompat=yes +bandwidth=high +allow=all +allow=gsm ; Always allow GSM, it's cool :) +jitterbuffer=no +tos=lowdelay +iaxthreadcount = 200 +iaxmaxthreadcount = 1000 + +;register => 1112223333:PASSWORD@iax.binfone.com +register => ASTloop:test@127.0.0.1:40569 +register => ASTblind:test@127.0.0.1:41569 + +[vicihelp] +host=67.134.219.20 ;voip.vicidial-group.com +type=friend +context=opengateway +disallow=all +allow=gsm +allow=ulaw +permit=67.134.219.20/255.255.255.255 +insecure=very + +[ASTloop] +type=friend +accountcode=ASTloop +context=default +auth=plaintext +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +qualify=yes + +[ASTblind] +type=friend +accountcode=ASTblind +context=default +auth=plaintext +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +qualify=yes + +[1112223333] +auth=md5 +type=friend +username=1112223333 +secret=PASSWORD +host=iax.binfone.com +context=incoming-IAX-context-in-extensions.conf + +[ASTtest2] +type=friend +accountcode=IAXtrunk2 +context=default +auth=plaintext +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +qualify=yes + +[firefly01] +type=friend +accountcode=firefly01 +context=default +auth=plaintext +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=gsm +qualify=yes + + +[cc300] +type=friend +accountcode=cc300 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc301] +type=friend +accountcode=cc301 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc302] +type=friend +accountcode=cc302 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc303] +type=friend +accountcode=cc303 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc304] +type=friend +accountcode=cc304 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc305] +type=friend +accountcode=cc305 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc306] +type=friend +accountcode=cc306 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc307] +type=friend +accountcode=cc307 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc308] +type=friend +accountcode=cc308 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc309] +type=friend +accountcode=cc309 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc310] +type=friend +accountcode=cc310 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc311] +type=friend +accountcode=cc311 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc312] +type=friend +accountcode=cc312 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc313] +type=friend +accountcode=cc313 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc314] +type=friend +accountcode=cc314 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc315] +type=friend +accountcode=cc315 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc316] +type=friend +accountcode=cc316 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc317] +type=friend +accountcode=cc317 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc318] +type=friend +accountcode=cc318 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc319] +type=friend +accountcode=cc319 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc320] +type=friend +accountcode=cc320 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc321] +type=friend +accountcode=cc321 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc322] +type=friend +accountcode=cc322 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc323] +type=friend +accountcode=cc323 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc324] +type=friend +accountcode=cc324 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc325] +type=friend +accountcode=cc325 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc326] +type=friend +accountcode=cc326 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc327] +type=friend +accountcode=cc327 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc328] +type=friend +accountcode=cc328 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc329] +type=friend +accountcode=cc329 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc330] +type=friend +accountcode=cc330 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc331] +type=friend +accountcode=cc331 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc332] +type=friend +accountcode=cc332 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc333] +type=friend +accountcode=cc333 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc334] +type=friend +accountcode=cc334 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc335] +type=friend +accountcode=cc335 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc336] +type=friend +accountcode=cc336 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc337] +type=friend +accountcode=cc337 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc338] +type=friend +accountcode=cc338 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc339] +type=friend +accountcode=cc339 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc340] +type=friend +accountcode=cc340 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc341] +type=friend +accountcode=cc341 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc342] +type=friend +accountcode=cc342 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc343] +type=friend +accountcode=cc343 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc344] +type=friend +accountcode=cc344 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc345] +type=friend +accountcode=cc345 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc346] +type=friend +accountcode=cc346 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc347] +type=friend +accountcode=cc347 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc348] +type=friend +accountcode=cc348 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc349] +type=friend +accountcode=cc349 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + +[cc350] +type=friend +accountcode=cc350 +context=default +auth=md5 +host=dynamic +permit=0.0.0.0/0.0.0.0 +secret=test +disallow=all +allow=ulaw +allow=alaw +allow=gsm +qualify=yes + diff --git a/agc_2-X/trunk/www/agc/vdc_db_query.php b/agc_2-X/trunk/www/agc/vdc_db_query.php index a9ce5966..dd5c2528 100644 --- a/agc_2-X/trunk/www/agc/vdc_db_query.php +++ b/agc_2-X/trunk/www/agc/vdc_db_query.php @@ -1544,6 +1544,8 @@ if ($ACTION == 'VDADREcheckINCOMING') ################################################################################ if ($ACTION == 'VDADcheckINCOMING') { + $VDCL_ingroup_recording_override = ''; + $VDCL_ingroup_rec_filename = ''; $Ctype = 'A'; $MT[0]=''; $row=''; $rowx=''; @@ -1716,7 +1718,7 @@ if ($ACTION == 'VDADcheckINCOMING') $VDCL_xferconf_b_dtmf = $row[4]; $VDCL_xferconf_b_number = $row[5]; } - echo "|||||$VDCL_campaign_script|$VDCL_get_call_launch|$VDCL_xferconf_a_dtmf|$VDCL_xferconf_a_number|$VDCL_xferconf_b_dtmf|$VDCL_xferconf_b_number|\n|\n"; + echo "|||||$VDCL_campaign_script|$VDCL_get_call_launch|$VDCL_xferconf_a_dtmf|$VDCL_xferconf_a_number|$VDCL_xferconf_b_dtmf|$VDCL_xferconf_b_number||||\n|\n"; $stmt = "select phone_number,alt_dial from vicidial_auto_calls where callerid = '$callerid' order by call_time desc limit 1;"; if ($DB) {echo "$stmt\n";} diff --git a/agc_2-X/trunk/www/agc/vicidial.php b/agc_2-X/trunk/www/agc/vicidial.php index 8eee24e5..a987e222 100644 --- a/agc_2-X/trunk/www/agc/vicidial.php +++ b/agc_2-X/trunk/www/agc/vicidial.php @@ -3938,12 +3938,12 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";} else {LIVE_default_xfer_group = default_xfer_group;} - if ( (VDIC_data_VDIG[12].length > 0) && (VDIC_data_VDIG[12]!='DISABLED') ) + if ( (VDIC_data_VDIG[12].length > 1) && (VDIC_data_VDIG[12]!='DISABLED') ) {LIVE_campaign_recording = VDIC_data_VDIG[12];} else {LIVE_campaign_recording = campaign_recording;} - if ( (VDIC_data_VDIG[13].length > 0) && (VDIC_data_VDIG[13]!='NONE') ) + if ( (VDIC_data_VDIG[13].length > 1) && (VDIC_data_VDIG[13]!='NONE') ) {LIVE_campaign_rec_filename = VDIC_data_VDIG[13];} else {LIVE_campaign_rec_filename = campaign_rec_filename;} diff --git a/agc_2-X/trunk/www/vicidial/admin.php b/agc_2-X/trunk/www/vicidial/admin.php index 991b2de4..a0d651e1 100644 --- a/agc_2-X/trunk/www/vicidial/admin.php +++ b/agc_2-X/trunk/www/vicidial/admin.php @@ -13676,6 +13676,7 @@ if ($ADD==999999)
\n\n";
+
+
+if (!$group)
+{
+echo "\n\n";
+echo "PLEASE SELECT AN IN-GROUP AND DATE ABOVE THEN CLICK SUBMIT\n";
+}
+
+else
+{
+# $time_BEGIN=$AM_shift_BEGIN;
+# $time_END=$AM_shift_END;
+#$query_date_BEGIN = "$query_date $time_BEGIN";
+#$query_date_END = "$query_date $time_END";
+
+$Cqdate = explode('-',$query_date);
+
+if ($shift == 'AM')
+ {
+ $query_date_BEGIN = date("Y-m-d H:i:s", mktime(1, 0, 0, $Cqdate[1], $Cqdate[2], $Cqdate[0]));
+ $query_date_END = date("Y-m-d H:i:s", mktime(17, 45, 0, $Cqdate[1], $Cqdate[2], $Cqdate[0]));
+ }
+if ($shift == 'PM')
+ {
+ $query_date_BEGIN = date("Y-m-d H:i:s", mktime(17, 45, 1, $Cqdate[1], $Cqdate[2], $Cqdate[0]));
+ $query_date_END = date("Y-m-d H:i:s", mktime(24, 59, 59, $Cqdate[1], $Cqdate[2], $Cqdate[0]));
+ }
+if ($shift == 'ALL')
+ {
+ $query_date_BEGIN = date("Y-m-d H:i:s", mktime(1, 0, 0, $Cqdate[1], $Cqdate[2], $Cqdate[0]));
+ $query_date_END = date("Y-m-d H:i:s", mktime(24, 59, 59, $Cqdate[1], $Cqdate[2], $Cqdate[0]));
+ }
+
+echo "VICIDIAL: In-Group Fronter-Closer Stats $NOW_TIME\n";
+
+echo "\n";
+echo "---------- TOTALS FOR $query_date_BEGIN to $query_date_END\n";
+
+$stmt="select count(*) from vicidial_closer_log where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='" . mysql_real_escape_string($group) . "' and status = 'SALE';";
+$rslt=mysql_query($stmt, $link);
+if ($DB) {echo "$stmt\n";}
+$row=mysql_fetch_row($rslt);
+$A1_points = ($row[0] * 1);
+$A1_points = sprintf("%10s", $A1_points);
+$A1_tally = sprintf("%10s", $row[0]);
+
+$TOT_tally = ($A1_tally + $A2_tally + $A3_tally + $A4_tally);
+$TOT_points = ($A1_points + $A2_points + $A3_points + $A4_points);
+$TOT_tally = sprintf("%10s", $TOT_tally);
+$TOT_points = sprintf("%10s", $TOT_points);
+
+echo "STATUS CUSTOMERS\n";
+echo "SALES: $A1_tally\n";
+
+echo "\n";
+
+
+
+
+
+
+
+
+
+##############################
+######### FRONTER STATS
+
+$TOTagents=0;
+$TOTcalls=0;
+$TOTsales=0;
+$totA1=0;
+$totA2=0;
+$totA3=0;
+$totA4=0;
+$totA5=0;
+$totA6=0;
+$totA7=0;
+$totA8=0;
+$totA9=0;
+$totDROP=0;
+$totOTHER=0;
+
+echo "\n";
+echo "---------- FRONTER STATS\n";
+echo "+--------------------------+-------+--------+--------+------+------+------+\n";
+echo "| AGENT |SUCCESS| XFERS |SUCCESS%| SALE | DROP |OTHER |\n";
+echo "+--------------------------+-------+--------+--------+------+------+------+\n";
+
+#$stmt="select vicidial_xfer_log.user,full_name,count(*) from vicidial_xfer_log,vicidial_users where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='" . mysql_real_escape_string($group) . "' and vicidial_xfer_log.user is not null and vicidial_xfer_log.user=vicidial_users.user group by vicidial_xfer_log.user;";
+$stmt="select user,count(distinct lead_id) from vicidial_xfer_log where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='" . mysql_real_escape_string($group) . "' and user is not null group by user;";
+if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");}
+$rslt=mysql_query($stmt, $link);
+if ($DB) {echo "$stmt\n";}
+$users_to_print = mysql_num_rows($rslt);
+$i=0;
+while ($i < $users_to_print)
+ {
+ $row=mysql_fetch_row($rslt);
+
+ $TOTcalls = ($TOTcalls + $row[1]);
+
+ $userRAW[$i]=$row[0];
+ $user[$i] = sprintf("%-6s", $row[0]);while(strlen($user[$i])>6) {$user[$i] = substr("$user[$i]", 0, -1);}
+ $USERcallsRAW[$i] = $row[1];
+ $USERcalls[$i] = sprintf("%6s", $row[1]);
+
+ $i++;
+ }
+
+$i=0;
+while ($i < $users_to_print)
+ {
+ $stmt="select full_name from vicidial_users where user='$userRAW[$i]';";
+ if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");}
+ $rslt=mysql_query($stmt, $link);
+ if ($DB) {echo "$stmt\n";}
+ $names_to_print = mysql_num_rows($rslt);
+ if ($names_to_print > 0)
+ {
+ $row=mysql_fetch_row($rslt);
+ if ($non_latin < 1)
+ {
+ $full_name[$i] = sprintf("%-15s", $row[0]); while(strlen($full_name[$i])>15) {$full_name[$i] = substr("$full_name[$i]", 0, -1);}
+ }
+ else
+ {
+ $full_name[$i] = sprintf("%-45s", $row[0]); while(mb_strlen($full_name[$i],'utf-8')>15) {$full_name[$i] = mb_substr("$full_name[$i]", 0, -1,'utf-8');}
+ }
+ }
+ else
+ {$full_name[$i] = ' ';}
+
+ $A1=0; $A2=0; $A3=0; $A4=0; $A5=0; $A6=0; $A7=0; $A8=0; $A9=0; $DROP=0; $OTHER=0; $sales=0;
+ $stmt="select vc.status,count(distinct vc.lead_id) from vicidial_xfer_log vx, vicidial_closer_log vc where vx.call_date >= '$query_date_BEGIN' and vx.call_date <= '$query_date_END' and vc.call_date >= '$query_date_BEGIN' and vc.call_date <= '$query_date_END' and vc.campaign_id='" . mysql_real_escape_string($group) . "' and vx.campaign_id='" . mysql_real_escape_string($group) . "' and vx.user='$userRAW[$i]' and vc.lead_id=vx.lead_id and vc.xfercallid=vx.xfercallid group by vc.status;";
+ if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");}
+ $rslt=mysql_query($stmt, $link);
+ if ($DB) {echo "$stmt\n";}
+ $lead_ids_to_print = mysql_num_rows($rslt);
+ $j=0;
+ while ($j < $lead_ids_to_print)
+ {
+ $row=mysql_fetch_row($rslt);
+ $recL=0;
+ if ( ($row[0]=='SALE') and ($recL < 1) ) {$A1=$row[1]; $recL++; $sales=($sales + $row[1]);}
+ # if ( ($row[0]=='A2') and ($recL < 1) ) {$A2=$row[1]; $recL++; $sales=($sales + $row[1]);}
+ # if ( ($row[0]=='A3') and ($recL < 1) ) {$A3=$row[1]; $recL++; $sales=($sales + $row[1]);}
+ # if ( ($row[0]=='A4') and ($recL < 1) ) {$A4=$row[1]; $recL++; $sales=($sales + $row[1]);}
+ # if ( ($row[0]=='A5') and ($recL < 1) ) {$A5=$row[1]; $recL++;}
+ # if ( ($row[0]=='A6') and ($recL < 1) ) {$A6=$row[1]; $recL++;}
+ # if ( ($row[0]=='A7') and ($recL < 1) ) {$A7=$row[1]; $recL++;}
+ # if ( ($row[0]=='A8') and ($recL < 1) ) {$A8=$row[1]; $recL++;}
+ # if ( ($row[0]=='A9') and ($recL < 1) ) {$A9=$row[1]; $recL++;}
+ if ( ($row[0]=='DROP') and ($recL < 1) ) {$DROP=$row[1]; $recL++;}
+ if ($recL < 1) {$OTHER=($row[1] + $OTHER); $recL++;}
+ $j++;
+ }
+
+ $totA1 = ($totA1 + $A1);
+ $totA2 = ($totA2 + $A2);
+ $totA3 = ($totA3 + $A3);
+ $totA4 = ($totA4 + $A4);
+ $totA5 = ($totA5 + $A5);
+ $totA6 = ($totA6 + $A6);
+ $totA7 = ($totA7 + $A7);
+ $totA8 = ($totA8 + $A8);
+ $totA9 = ($totA9 + $A9);
+ $totDROP = ($totDROP + $DROP);
+ $totOTHER = ($totOTHER + $OTHER);
+ $TOTsales = ($TOTsales + $sales);
+
+ if ( ($USERcallsRAW[$i] > 0) and ($sales > 0) ) {$Spct = ( ($sales / $USERcallsRAW[$i]) * 100);}
+ else {$Spct=0;}
+ $Spct = round($Spct, 2);
+ $Spct = sprintf("%01.2f", $Spct);
+
+
+ $A1 = sprintf("%4s", $A1);
+ $A2 = sprintf("%4s", $A2);
+ $A3 = sprintf("%4s", $A3);
+ $A4 = sprintf("%4s", $A4);
+ $A5 = sprintf("%4s", $A5);
+ $A6 = sprintf("%4s", $A6);
+ $A7 = sprintf("%4s", $A7);
+ $A8 = sprintf("%4s", $A8);
+ $A9 = sprintf("%4s", $A9);
+ $DROP = sprintf("%4s", $DROP);
+ $OTHER = sprintf("%4s", $OTHER);
+ $sales = sprintf("%5s", $sales);
+ $Spct = sprintf("%6s", $Spct);
+
+ echo "| $user[$i] - $full_name[$i] | $sales | $USERcalls[$i] | $Spct%| $A1 | $DROP | $OTHER |\n";
+
+ $i++;
+ }
+
+
+if ( ($TOTcalls > 0) and ($TOTsales > 0) ) {$totSpct = ( ($TOTsales / $TOTcalls) * 100);}
+ else {$totSpct=0;}
+$totSpct = round($totSpct, 2);
+$totSpct = sprintf("%01.2f", $totSpct);
+$totSpct = sprintf("%6s", $totSpct);
+
+$TOTagents = sprintf("%6s", $i);
+$TOTcalls = sprintf("%6s", $TOTcalls);
+$TOTsales = sprintf("%5s", $TOTsales);
+$totA1 = sprintf("%5s", $totA1);
+$totA2 = sprintf("%5s", $totA2);
+$totA3 = sprintf("%5s", $totA3);
+$totA4 = sprintf("%5s", $totA4);
+$totA5 = sprintf("%5s", $totA5);
+$totA6 = sprintf("%5s", $totA6);
+$totA7 = sprintf("%5s", $totA7);
+$totA8 = sprintf("%5s", $totA8);
+$totA9 = sprintf("%5s", $totA9);
+$totDROP = sprintf("%5s", $totDROP);
+$totOTHER = sprintf("%5s", $totOTHER);
+
+
+$stmt="select avg(queue_seconds) from vicidial_closer_log where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='" . mysql_real_escape_string($group) . "';";
+$rslt=mysql_query($stmt, $link);
+if ($DB) {echo "$stmt\n";}
+$row=mysql_fetch_row($rslt);
+
+$AVGwait = $row[0];
+$AVGwait_M = ($AVGwait / 60);
+$AVGwait_M = round($AVGwait_M, 2);
+$AVGwait_M_int = intval("$AVGwait_M");
+$AVGwait_S = ($AVGwait_M - $AVGwait_M_int);
+$AVGwait_S = ($AVGwait_S * 60);
+$AVGwait_S = round($AVGwait_S, 0);
+if ($AVGwait_S < 10) {$AVGwait_S = "0$AVGwait_S";}
+$AVGwait_MS = "$AVGwait_M_int:$AVGwait_S";
+$AVGwait = sprintf("%6s", $AVGwait_MS);
+
+
+echo "+--------------------------+-------+--------+--------+------+------+------+\n";
+echo "| TOTAL FRONTERS: $TOTagents | $TOTsales | $TOTcalls | $totSpct%|$totA1 |$totDROP |$totOTHER |\n";
+echo "+--------------------------+-------+--------+--------+------+------+------+\n";
+echo "| Average time in Queue for customers: $AVGwait |\n";
+echo "+--------------------------+-------+--------+--------+------+------+------+\n";
+
+
+
+
+
+##############################
+######### CLOSER STATS
+
+$TOTagents=0;
+$TOTcalls=0;
+$totA1=0;
+$totA2=0;
+$totA3=0;
+$totA4=0;
+$totA5=0;
+$totA6=0;
+$totA7=0;
+$totA8=0;
+$totA9=0;
+$totDROP=0;
+$totOTHER=0;
+$TOTsales=0;
+
+echo "\n";
+echo "---------- CLOSER STATS\n";
+echo "+--------------------------+--------+------+------+------+------+-------+\n";
+echo "| AGENT | CALLS | SALE | DROP |OTHER | SALE | CONV %|\n";
+echo "+--------------------------+--------+------+------+------+------+-------+\n";
+
+$stmt="select user,count(*) from vicidial_closer_log where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='" . mysql_real_escape_string($group) . "' and user is not null group by user;";
+if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");}
+$rslt=mysql_query($stmt, $link);
+if ($DB) {echo "$stmt\n";}
+$users_to_print = mysql_num_rows($rslt);
+$i=0;
+while ($i < $users_to_print)
+ {
+ $row=mysql_fetch_row($rslt);
+
+ $TOTcalls = ($TOTcalls + $row[1]);
+ $userRAW[$i]=$row[0];
+ $user[$i] = sprintf("%-6s", $row[0]);while(strlen($user[$i])>6) {$user[$i] = substr("$user[$i]", 0, -1);}
+ $USERcalls[$i] = sprintf("%6s", $row[1]);
+ $USERcallsRAW[$i] = $row[1];
+
+ $i++;
+ }
+
+$i=0;
+while ($i < $users_to_print)
+ {
+ $stmt="select full_name from vicidial_users where user='$userRAW[$i]';";
+ if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");}
+ $rslt=mysql_query($stmt, $link);
+ if ($DB) {echo "$stmt\n";}
+ $names_to_print = mysql_num_rows($rslt);
+ if ($names_to_print > 0)
+ {
+ $row=mysql_fetch_row($rslt);
+ if ($non_latin < 1)
+ {
+ $full_name[$i] = sprintf("%-15s", $row[0]); while(strlen($full_name[$i])>15) {$full_name[$i] = substr("$full_name[$i]", 0, -1);}
+ }
+ else
+ {
+ $full_name[$i] = sprintf("%-45s", $row[0]); while(mb_strlen($full_name[$i],'utf-8')>15) {$full_name[$i] = mb_substr("$full_name[$i]", 0, -1,'utf-8');}
+ }
+ }
+ else
+ {$full_name[$i] = ' ';}
+
+ $A1=0; $A2=0; $A3=0; $A4=0; $A5=0; $A6=0; $A7=0; $A8=0; $A9=0; $DROP=0; $OTHER=0; $sales=0; $uTOP=0; $uBOT=0; $points=0;
+ $stmt="select status,count(*) from vicidial_closer_log where call_date >= '$query_date_BEGIN' and call_date <= '$query_date_END' and campaign_id='" . mysql_real_escape_string($group) . "' and user='$userRAW[$i]' group by status;";
+ if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");}
+ $rslt=mysql_query($stmt, $link);
+ if ($DB) {echo "$stmt\n";}
+ $lead_ids_to_print = mysql_num_rows($rslt);
+ $j=0;
+ while ($j < $lead_ids_to_print)
+ {
+ $row=mysql_fetch_row($rslt);
+ $recL=0;
+ if ( ($row[0]=='SALE') and ($recL < 1) )
+ {
+ $A1=$row[1]; $recL++;
+ $sales=($sales + $row[1]);
+ $points = ($points + ($row[1] * 1) );
+ }
+ if ( ($row[0]=='A2') and ($recL < 1) )
+ {
+ $A2=$row[1]; $recL++;
+ $sales=($sales + $row[1]);
+ $uTOP=($uTOP + $row[1]);
+ $points = ($points + ($row[1] * 2) );
+ }
+ if ( ($row[0]=='A3') and ($recL < 1) )
+ {
+ $A3=$row[1]; $recL++;
+ $sales=($sales + $row[1]);
+ $uBOT=($uBOT + $row[1]);
+ $points = ($points + ($row[1] * 2) );
+ }
+ if ( ($row[0]=='A4') and ($recL < 1) )
+ {
+ $A4=$row[1]; $recL++;
+ $sales=($sales + $row[1]);
+ $uTOP=($uTOP + $row[1]);
+ $uBOT=($uBOT + $row[1]);
+ $points = ($points + ($row[1] * 3) );
+ }
+# if ( ($row[0]=='A5') and ($recL < 1) ) {$A5=$row[1]; $recL++;}
+# if ( ($row[0]=='A6') and ($recL < 1) ) {$A6=$row[1]; $recL++;}
+# if ( ($row[0]=='A7') and ($recL < 1) ) {$A7=$row[1]; $recL++;}
+# if ( ($row[0]=='A8') and ($recL < 1) ) {$A8=$row[1]; $recL++;}
+# if ( ($row[0]=='A9') and ($recL < 1) ) {$A9=$row[1]; $recL++;}
+ if ( ($row[0]=='DROP') and ($recL < 1) ) {$DROP=$row[1]; $recL++;}
+ if ($recL < 1) {$OTHER=($row[1] + $OTHER); $recL++;}
+
+ $j++;
+ }
+
+ $totA1 = ($totA1 + $A1); $TOTsales = ($TOTsales + $A1);
+ $totA2 = ($totA2 + $A2); $TOTsales = ($TOTsales + $A2); $totTOP = ($totTOP + $A2);
+ $totA3 = ($totA3 + $A3); $TOTsales = ($TOTsales + $A3); $totBOT = ($totBOT + $A3);
+ $totA4 = ($totA4 + $A4); $TOTsales = ($TOTsales + $A4); $totTOP = ($totTOP + $A4); $totBOT = ($totBOT + $A4);
+ $totA5 = ($totA5 + $A5);
+ $totA6 = ($totA6 + $A6);
+ $totA7 = ($totA7 + $A7);
+ $totA8 = ($totA8 + $A8);
+ $totA9 = ($totA9 + $A9);
+ $totDROP = ($totDROP + $DROP);
+ $totOTHER = ($totOTHER + $OTHER);
+ $totPOINTS = ($totPOINTS + $points);
+
+ if ( ($USERcallsRAW[$i] > 0) and ($sales > 0) ) {$Cpct = ( ($sales / ( ($USERcallsRAW[$i] - 0) - $DROP) ) * 100);}
+ else {$Cpct=0;}
+ $Cpct = round($Cpct, 2);
+ $Cpct = sprintf("%01.2f", $Cpct);
+ $Cpct = sprintf("%6s", $Cpct);
+
+ if ( ($sales > 0) and ($uTOP > 0) ) {$TOP = ( ($uTOP / $sales) * 100);}
+ else {$TOP=0;}
+ $TOP = round($TOP, 0);
+ $TOP = sprintf("%01.0f", $TOP);
+ $TOP = sprintf("%3s", $TOP);
+
+ if ( ($sales > 0) and ($uBOT > 0) ) {$BOT = ( ($uBOT / $sales) * 100);}
+ else {$BOT=0;}
+ $BOT = round($BOT, 0);
+ $BOT = sprintf("%01.0f", $BOT);
+ $BOT = sprintf("%3s", $BOT);
+
+ if ( ($USERcallsRAW[$i] > 0) and ($points > 0) ) {$ppc = ($points / ( ($USERcallsRAW[$i] - 0) - $DROP) );}
+ else {$ppc=0;}
+ $ppc = round($ppc, 2);
+ $ppc = sprintf("%01.2f", $ppc);
+ $ppc = sprintf("%4s", $ppc);
+
+
+ $A1 = sprintf("%4s", $A1);
+ $A2 = sprintf("%4s", $A2);
+ $A3 = sprintf("%4s", $A3);
+ $A4 = sprintf("%4s", $A4);
+ $A5 = sprintf("%4s", $A5);
+ $A6 = sprintf("%4s", $A6);
+ $A7 = sprintf("%4s", $A7);
+ $A8 = sprintf("%4s", $A8);
+ $A9 = sprintf("%4s", $A9);
+ $DROP = sprintf("%4s", $DROP);
+ $OTHER = sprintf("%4s", $OTHER);
+ $sales = sprintf("%4s", $sales);
+
+ echo "| $user[$i] - $full_name[$i] | $USERcalls[$i] | $A1 | $DROP | $OTHER | $sales |$Cpct%|\n";
+
+ $i++;
+ }
+
+
+if ( ($TOTcalls > 0) and ($TOTsales > 0) ) {$totCpct = ( ($TOTsales / ( ($TOTcalls - 0) - $totDROP) ) * 100);}
+ else {$totCpct=0;}
+$totCpct = round($totCpct, 2);
+$totCpct = sprintf("%01.2f", $totCpct);
+$totCpct = sprintf("%6s", $totCpct);
+
+if ( ($TOTcalls > 0) and ($totPOINTS > 0) ) {$ppc = ($totPOINTS / ( ($TOTcalls - $totOTHER) - $totDROP) );}
+ else {$ppc=0;}
+$ppc = round($ppc, 2);
+$ppc = sprintf("%01.2f", $ppc);
+$ppc = sprintf("%4s", $ppc);
+
+if ( ($TOTsales > 0) and ($totTOP > 0) ) {$TOP = ( ($totTOP / $TOTsales) * 100);}
+ else {$TOP=0;}
+$TOP = round($TOP, 0);
+$TOP = sprintf("%01.0f", $TOP);
+$TOP = sprintf("%3s", $TOP);
+
+if ( ($TOTsales > 0) and ($totBOT > 0) ) {$BOT = ( ($totBOT / $TOTsales) * 100);}
+ else {$BOT=0;}
+$BOT = round($BOT, 0);
+$BOT = sprintf("%01.0f", $BOT);
+$BOT = sprintf("%3s", $BOT);
+
+$TOTagents = sprintf("%6s", $i);
+$TOTcalls = sprintf("%6s", $TOTcalls);
+$totA1 = sprintf("%5s", $totA1);
+$totA2 = sprintf("%5s", $totA2);
+$totA3 = sprintf("%5s", $totA3);
+$totA4 = sprintf("%5s", $totA4);
+$totA5 = sprintf("%5s", $totA5);
+$totA6 = sprintf("%5s", $totA6);
+$totA7 = sprintf("%5s", $totA7);
+$totA8 = sprintf("%5s", $totA8);
+$totA9 = sprintf("%5s", $totA9);
+$totDROP = sprintf("%5s", $totDROP);
+$totOTHER = sprintf("%5s", $totOTHER);
+$TOTsales = sprintf("%5s", $TOTsales);
+
+echo "+--------------------------+--------+------+------+------+------+-------+\n";
+echo "| TOTAL CLOSERS: $TOTagents | $TOTcalls |$totA1 |$totDROP |$totOTHER |$TOTsales |$totCpct%|\n";
+echo "+--------------------------+--------+------+------+------+------+-------+\n";
+
+
+
+
+
+
+
+
+
+$ENDtime = date("U");
+$RUNtime = ($ENDtime - $STARTtime);
+if ($DB) {echo "\nRun Time: $RUNtime seconds\n";}
+}
+
+
+
+
+
+?>
+
+
+
+