LICENSE: AGPLv2 # # Other scripts that this application depends on: # - vdc_db_query.php: Updates information in the database # - manager_send.php: Sends manager actions to the DB for execution # - conf_exten_check.php: time sync and status updater, calls in queue # # CHANGELOG # 50607-1426 - First Build of VICIDIAL web client basic login process finished # 50628-1620 - Added some basic formatting and worked on process flow # 50628-1715 - Startup variables mapped to javascript variables # 50629-1303 - Added Login Closer in-groups selection box and vla update # 50629-1530 - Rough layout for customer info form section and button links # 50630-1453 - Rough Manual Dial/Hangup with customer info displayed # 50701-1450 - Added vicidial_log entries on dial and hangup # 50701-1634 - Added Logout function # 50705-1259 - Added call disposition functionality # 50705-1432 - Added lead info DB update function # 50705-1658 - Added web form functionality # 50706-1043 - Added call park and pickup functions # 50706-1234 - Added Start/Stop Recording functionality # 50706-1614 - Added conference channels display option # 50711-1333 - Removed call check redundancy and fixed a span bug # 50727-1424 - Added customer channel and participant present sensing/alerts # 50804-1057 - Added SendDTMF function and reconfigured the transfer span # 50804-1224 - Added Local and Internal Closer transfer functions # 50804-1628 - Added Blind transfer, activated LIVE CALL image and fixed bugs # 50804-1808 - Added button images for left buttons # 50815-1151 - Added 3Way calling functions to Transfer-conf frame # 50815-1602 - Added images and buttons for xfer functions # 50816-1813 - Added basic autodial outbound call pickup functions # 50817-1113 - Fixes to auto_dialing call receipt # 50817-1234 - Added inbound call receipt capability # 50817-1541 - Added customer time display # 50817-1541 - Added customer time display # 50818-1327 - Added stop-all-recordings-after-each-vicidial-call option # 50818-1703 - Added pretty login section # 50825-1200 - Modified form field lengths, added double-click dispositions # 50831-1603 - Fixed customer time bug and fronter display bug for CLOSER # 50901-1314 - Fixed CLOSER IN-GROUP Web Form bug # 50903-0904 - Added preview-lead code for manual dialing # 50904-0016 - Added ability to hangup manual dials before pickup # 50906-1319 - Added override for filters on xfer calls, fixed login display bug # 50909-1243 - Added hotkeys functionality for quick dispoing in auto-dial mode # 50912-0958 - Modified hotkeys function, agent must have user_level >= 5 to use # 50913-1212 - Added campaign_cid to 3rd party calls # 50923-1546 - Modified to work with language translation # 50926-1656 - Added campaign pull-down at login of active campaigns # 50928-1633 - Added manual dial alternate number dial option # 50930-1538 - Added session_id empty login failure and fixed 2 minor bugs # 51004-1656 - Fixed recording filename bug and new Spanish translation # 51020-1103 - Added campaign-specific recording control abilities # 51020-1352 - Added Basic vicidial_agent_log framework # 51021-1050 - Fixed custtime display and disable Enter/Return keypresses # 51021-1718 - Allows for multi-line comments (changes \n to !N in database) # 51110-1432 - Fixed non-standard http port issue # 51111-1047 - Added vicidial_agent_log lead_id earlier for manual dial # 51118-1305 - Activate multi-line comments from $multi_line_comments var # 51118-1313 - Move Transfer DIV to a floating span to preserve 800x600 view # 51121-1506 - Small PHP optimizations in many scripts and disabled globalize # 51129-1010 - Added ability to accept calls from other VICIDIAL servers # 51129-1254 - Fixed Hangups of other agents channels when customer hangs up # 51208-1732 - Created user-first login that looks for default phone info # 51219-1526 - Added variable framework for campaign and in-group scripts # 51221-1200 - Added SCRIPT tab, layout and functionality # 51221-1714 - Added auto-switch-to-SCRIPT-tab and auto-webform-popup # 51222-1605 - Added VMail message blind transfer button to xfer-conf frame # 51229-1028 - Added checks on web_form_address to allow for var in the DB value # 60117-1312 - Added Transfer-conf frame toggle on button press # 60208-1152 - Added DTMF-xfernumber preset links to xfer-conf frame # 60213-1129 - Added vicidial_users.hotkeys_active for any user hotkeys # 60213-1210 - Added ability to sort routing of calls by user_level # 60214-0932 - Initial Callback calendar display framework # 60214-1407 - Added ability to minimize the dispo screen to see info below # 60215-1104 - Added ANYONE scheduled callbacks functionality # 60410-1116 - Added persistant pause after dispo option and change dispo text # - Added web form submit that opens new window with dispo on submit # - Added PREVIOUS CALLBACK in customer info to flag callbacks # - Added link to try to hangup the call again in the dispo screen # - Added link noone-in-session screen to call agent phone again # - Added link customer-hungup screen to go straight to dispo screen # 60410-1532 - Added agent status and campaign calls dialing display option # 60411-1547 - Add ability to set callback as USERONLY and some basic formatting # 60413-1752 - Add basic USERONLY callback frame and listings # 60414-1039 - Changed manual dial preview and alt dial checkboxes to spans # - Added beta-level USERONLY callback functionality # - Added beta-level manual dialing with lead insertion functionality # 60415-1534 - Fixed manual dial lead preview and fixed manuald dial override bug # 60417-1108 - Added capability to do alt-number-dialing in auto-dial mode # - Changed several permissions to database-defined # 60419-1529 - Prevent manual dial or callbacks when alt-dial lead not finished # 60420-1647 - Fixed DiaLDiaLAltPhonE error, Call Agent Again DialControl error # 60421-1229 - Check GET/POST vars lines with isset to not trigger PHP NOTICES # 60424-1005 - Fixed Alt phone disabled bug for callbacks and manual dials # 60426-1058 - Added vicidial_user setting for default blended check for CLOSER # 60501-1008 - Added option to manual dial screen to manually lookup phone number # 60503-1653 - Fixed agentonly_callback not-defined bug in scheduled callbacks screen # 60504-1032 - Fixed manual dial display bug and transfer dispo alert bug # - Fixed recording filename display to not overrun 25 characters # 60510-1051 - Added Wrapup timer and wrapup message on wrapup screen after dispo # 60608-1453 - Added CLOSER campaign allowable in-groups limitations # 60609-1123 - Added add-number-to-DNC-list function and manual dial check DNC # 60619-1047 - Added variable filters to close security holes for login form # 60804-1710 - fixed scheduled CALLBK for other languages build # 60808-1145 - Added consultative transfers with customer data # 60808-2232 - Added campaign name to pulldown for login screen # 60809-1603 - Added option to locally transfer consult xfers # 60809-1732 - Added recheck of transferred channels before customer gone mesg # 60810-1011 - Fixed CXFER leave 3way call bugs # 60816-1602 - Added ALLCALLS recording delay option allcalls_delay # 60816-1716 - Fixed customer time display bug and client DST setting # 60821-1555 - Added option to omit phone_code on dialout of leads # 60821-1628 - Added ALLFORCE recording option # 60821-1643 - Added no_delete_sessions option to not delete sessions # 60822-0512 - Changed phone number fields to be maxlength of 12 # 60829-1531 - Made compatible with WeBRooTWritablE setting in dbconnect.php # 60906-1152 - Added Previous CallBack info display span # 60906-1715 - Allow for Local phone extension conferences # 61004-1729 - Add ability to control volume per channel in "calls in this session" # 61122-1341 - Added vicidial_user_groups allowed_campaigns restrictions # 61122-1523 - Added more SCRIPT variables # 61128-2229 - Added vicidial_live_agents and vicidial_auto_calls manual dial entries # 61130-1617 - Added lead_id to MonitorConf for recording_log # 61221-1212 - Changed width to 760 to better fit 800x600 screens, widened SCRIPT # 70109-1128 - Fixed wrapup timer bug # 70109-1635 - Added option for HotKeys automatically dialing next number in manual mode # - Added option for alternate number dialing with hotkeys # 70111-1600 - Added ability to use BLEND/INBND/*_C/*_B/*_I as closer campaigns # 70118-1517 - Added vicidial_agent_log and vicidial_user_log logging of user_group # 70201-1249 - Added FAST DIAL option for manually dialing, added UTF8 compatible code # 70201-1703 - Fixed cursor bug for most text input fields # 70202-1453 - Added first portions of Agent Pause Codes # 70203-0108 - Finished Agent Pause Codes functionality # 70203-0930 - Added dialed_number to webform output # 70203-1010 - Added dialed_label to webform output # 70206-1201 - Fixed allow_closers bug # 70206-1332 - Added vicidial_recording_override users setting function # 70212-1252 - Fixed small issue with CXFER # 70213-1018 - Changed CXFER and AXFER to update customer information before transfer # 70214-1233 - Added queuemetrics_log_id field for server_id in queue_log # 70215-1240 - Added queuemetrics_log_id field for server_id in queue_log # 70222-1617 - Changed queue_log PAUSE/UNPAUSE to PAUSEALL/UNPAUSEALL # 70226-1252 - Added Mute/UnMute to agent screen # 70309-1035 - Allow amphersands and questions marks in comments to pass through # 70313-1052 - Allow pound signs(hash) in comments to pass through # 70316-1406 - Moved the MUTE button to be accessible during a transfer/conf # 70319-1446 - Added agent-deactive-display and disable customer info update functions # 70319-1626 - Added option to allow agent logins to campaigns with no leads in the hopper # 70320-1501 - Added option to allow retry of leave-3way-call from dispo screen # 70322-1545 - Added sipsak display ability # 70510-1319 - Added onUnload force Logout # 70806-1530 - Added Presets Dial links above agent mute button # 70823-2118 - Fixed XMLHTTPRequest, HotKeys and Scheduled Callbacks issues with MSIE # 70828-1443 - Added source_id to output of SCRIPTtab-IFRAME and WEBFORM # 71022-1427 - Added formatting of the customer phone number in the main status bar # 71029-1848 - Changed CLOSER-type campaign to not use campaign_id restrictions # 71101-1204 - Fixed bug in callback calendar with DST # 71116-0957 - Added campaign_weight and calls_today to the vla table insertion # 71120-1719 - Added XMLHTPRequest lookup of allowable campaigns for agents during login # 71122-0256 - Added auto-pause notification # 71125-1751 - Changed Transfer section to allow for selection of in-groups to send calls to # 71127-0408 - Added height and width settings for easier modification of screen size # 71129-2025 - restricted callbacks count and list to campaign only # 71223-0318 - changed logging of closer calls # 71226-1117 - added option to kick all calls from conference upon logout # 80109-1510 - added gender select list # 80116-1032 - added option on CLOSER-type campaigns to change in-groups when paused # 80317-2106 - added recording override options for inbound group calls # 80331-1433 - Added second transfer try for VICIDIAL transfers/hangups on manual dial calls # 80402-0121 - Fixes for manual dial transfers on some systems # 80407-2112 - Work on adding phone login load balancing across servers # 80416-0559 - Added ability to log computer_ip at login, set the $PhoneSComPIP variable # 80428-0413 - UTF8 changes and testing # 80505-0054 - Added multi-phones load-balanced alias option # 80507-0932 - Fixed Script display bug (+ instead of space) # 80519-1425 - Added calls in queue display # 80523-1630 - Added Timeclock links # 80625-0047 - Added U option for gender, added date/phone display options # 80630-2210 - Added queue_log entries for Manual Dial # 80703-0139 - Added alter customer phone permissions # 80703-1106 - Added API functionality for Hangup and Dispo, added Agent Display Queue Count # 80707-2325 - Added vicidial_id to recording_log for tracking of vicidial or closer log to recording # 80709-0358 - Added Default alt phone dial hard-code option # 80719-1147 - Changed recording and senddtmf conf prefix # 80815-1014 - Added manual dial list restriction option # 80823-2123 - Fixed form scroll for IE, added copy to clipboard(IE-only feature) # 80831-0548 - Added Extended alt-dial-phone display information for non-manual calls # 80909-1717 - Added support for campaign-specific DNC lists # 80915-1754 - Rewrote leave-3way functions for external calling # 81002-1908 - Fixed double-login bug in some conditions # 81007-0945 - Added three_way_call_cid option for outbound 3way calls # 81010-1047 - Fixed conf calling prefix to use settings, other 3way improvements # 81011-1403 - Fixed bugs in leave3way when transferring a manual dial call # 81012-1729 - Added INBOUND_MAN dial method to allow manual list dialing and inbound calls # 81013-1644 - Fixed bug in leave 3way for manual dial fronters # 81015-0405 - Fixed bug related to hangups on 3way calls # 81016-0703 - Changed leave 3way to allow function at any time transfer-conf is available # 81020-1501 - Fixed bugs in queue_log logging # 81023-0411 - Added compatibility for dial-in agents using AGI, bug fixes # $version = '2.0.5-179'; $build = '81023-0411'; require("dbconnect.php"); if (isset($_GET["DB"])) {$DB=$_GET["DB"];} elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];} if (isset($_GET["phone_login"])) {$phone_login=$_GET["phone_login"];} elseif (isset($_POST["phone_login"])) {$phone_login=$_POST["phone_login"];} if (isset($_GET["phone_pass"])) {$phone_pass=$_GET["phone_pass"];} elseif (isset($_POST["phone_pass"])) {$phone_pass=$_POST["phone_pass"];} if (isset($_GET["VD_login"])) {$VD_login=$_GET["VD_login"];} elseif (isset($_POST["VD_login"])) {$VD_login=$_POST["VD_login"];} if (isset($_GET["VD_pass"])) {$VD_pass=$_GET["VD_pass"];} elseif (isset($_POST["VD_pass"])) {$VD_pass=$_POST["VD_pass"];} if (isset($_GET["VD_campaign"])) {$VD_campaign=$_GET["VD_campaign"];} elseif (isset($_POST["VD_campaign"])) {$VD_campaign=$_POST["VD_campaign"];} if (isset($_GET["relogin"])) {$relogin=$_GET["relogin"];} elseif (isset($_POST["relogin"])) {$relogin=$_POST["relogin"];} if (!isset($phone_login)) { if (isset($_GET["pl"])) {$phone_login=$_GET["pl"];} elseif (isset($_POST["pl"])) {$phone_login=$_POST["pl"];} } if (!isset($phone_pass)) { if (isset($_GET["pp"])) {$phone_pass=$_GET["pp"];} elseif (isset($_POST["pp"])) {$phone_pass=$_POST["pp"];} } if (isset($VD_campaign)) { $VD_campaign = strtoupper($VD_campaign); $VD_campaign = eregi_replace(" ",'',$VD_campaign); } if (!isset($flag_channels)) { $flag_channels=0; $flag_string=''; } ### security strip all non-alphanumeric characters out of the variables ### $DB=ereg_replace("[^0-9a-z]","",$DB); $phone_login=ereg_replace("[^\,0-9a-zA-Z]","",$phone_login); $phone_pass=ereg_replace("[^0-9a-zA-Z]","",$phone_pass); $VD_login=ereg_replace("[^0-9a-zA-Z]","",$VD_login); $VD_pass=ereg_replace("[^0-9a-zA-Z]","",$VD_pass); $VD_campaign = ereg_replace("[^-\_0-9a-zA-Z]","",$VD_campaign); $forever_stop=0; if ($force_logout) { echo "Ora non sei collegato. Grazie\n"; exit; } $isdst = date("I"); $StarTtimE = date("U"); $NOW_TIME = date("Y-m-d H:i:s"); $tsNOW_TIME = date("YmdHis"); $FILE_TIME = date("Ymd-His"); $CIDdate = date("ymdHis"); $month_old = mktime(11, 0, 0, date("m"), date("d")-2, date("Y")); $past_month_date = date("Y-m-d H:i:s",$month_old); $minutes_old = mktime(date("H"), date("i")-2, date("s"), date("m"), date("d"), date("Y")); $past_minutes_date = date("Y-m-d H:i:s",$minutes_old); $random = (rand(1000000, 9999999) + 10000000); ############################################# ##### START SYSTEM_SETTINGS LOOKUP ##### $stmt = "SELECT use_non_latin,vdc_header_date_format,vdc_customer_date_format,vdc_header_phone_format,webroot_writable FROM system_settings;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysql_num_rows($rslt); $i=0; while ($i < $qm_conf_ct) { $row=mysql_fetch_row($rslt); $non_latin = $row[0]; $vdc_header_date_format = $row[1]; $vdc_customer_date_format = $row[2]; $vdc_header_phone_format = $row[3]; $WeBRooTWritablE = $row[4]; $i++; } ##### END SETTINGS LOOKUP ##### ########################################### ##### DEFINABLE SETTINGS AND OPTIONS ########################################### $conf_silent_prefix = '5'; # vicidial_conferences prefix to enter silently and muted for recording $dtmf_silent_prefix = '7'; # vicidial_conferences prefix to enter silently $HKuser_level = '5'; # minimum vicidial user_level for HotKeys $campaign_login_list = '1'; # show drop-down list of campaigns at login $manual_dial_preview = '1'; # allow preview lead option when manual dial $multi_line_comments = '1'; # set to 1 to allow multi-line comment box $user_login_first = '0'; # set to 1 to have the vicidial_user login before the phone login $view_scripts = '1'; # set to 1 to show the SCRIPTS tab $dispo_check_all_pause = '0'; # set to 1 to allow for persistent pause after dispo $callholdstatus = '1'; # set to 1 to show calls su hold count $agentcallsstatus = '0'; # set to 1 to show agent status and call dialed count $campagentstatctmax = '3'; # Number of secondi for campaign call and agent stats $show_campname_pulldown = '1'; # set to 1 to show campaign name su login pulldown $webform_sessionname = '1'; # set to 1 to include the session_name in webform URL $local_consult_xfers = '1'; # set to 1 to send consultative transfers from original server $clientDST = '1'; # set to 1 to check for DST su server for agent time $no_delete_sessions = '0'; # set to 1 to not delete sessions at logout $volumecontrol_active = '1'; # set to 1 to allow agents to alter volume of channels $PreseT_DiaL_LinKs = '0'; # set to 1 to show a CHIAMA link for Dial Presets $LogiNAJAX = '1'; # set to 1 to do lookups su campaigns for login $HidEMonitoRSessionS = '1'; # set to 1 to hide remote monitoring channels from "session calls" $LogouTKicKAlL = '1'; # set to 1 to hangup all calls in session upon agent logout $TelefonoSComPIP = '1'; # set to 1 to log computer IP to phone if blank, set to 2 to force log each login $DefaulTAlTDiaL = '0'; # set to 1 to enable ALT CHIAMA by default if enabled for the campaign $TEST_all_statuses = '0'; # TEST variable allows all statuses in dispo screen $BROWSER_HEIGHT = 500; # set to the minimum browser height, default=500 $BROWSER_WIDTH = 770; # set to the minimum browser width, default=770 # options now set in DB: #$alt_phone_dialing = '1'; # allow agents to call alt phone numbers #$scheduled_callbacks = '1'; # set to 1 to allow agent to choose scheduled callbacks # $agentonly_callbacks = '1'; # set to 1 to allow agent to choose agent-only scheduled callbacks #$agentcall_manual = '1'; # set to 1 to allow agent to make manual calls during autodial session ### SCREEN WIDTH AND HEIGHT CALCULATIONS ### ### DO NOT EDIT! ### $MASTERwidth=($BROWSER_WIDTH - 340); $MASTERheight=($BROWSER_HEIGHT - 200); if ($MASTERwidth < 430) {$MASTERwidth = '430';} if ($MASTERheight < 300) {$MASTERheight = '300';} $CAwidth = ($MASTERwidth + 340); # 770 - cover all (none-in-session, customer hunngup, etc...) $MNwidth = ($MASTERwidth + 330); # 760 - main frame $XFwidth = ($MASTERwidth + 320); # 750 - transfer/conference $HCwidth = ($MASTERwidth + 310); # 740 - hotkeys and callbacks $AMwidth = ($MASTERwidth + 270); # 700 - agent mute and preset-dial links $SCwidth = ($MASTERwidth + 230); # 670 - live call secondi counter $SSwidth = ($MASTERwidth + 176); # 606 - scroll script $SDwidth = ($MASTERwidth + 170); # 600 - scroll script, customer data and calls-in-session $HKwidth = ($MASTERwidth + 70); # 500 - Hotkeys button $HSwidth = ($MASTERwidth + 1); # 431 - Header spacer $HKheight = ($MASTERheight + 105); # 405 - HotKey active Button $AMheight = ($MASTERheight + 100); # 400 - Agent mute and preset dial links $MBheight = ($MASTERheight + 65); # 365 - Manual Dial Buttons $CBheight = ($MASTERheight + 50); # 350 - Agent Callback, pause code, volume control Buttons and agent status $SSheight = ($MASTERheight + 31); # 331 - script content $HTheight = ($MASTERheight + 10); # 310 - transfer frame, callback comments and hotkey $BPheight = ($MASTERheight - 250); # 50 - bottom buffer $US='_'; $CL=':'; $AT='@'; $DS='-'; $date = date("r"); $ip = getenv("REMOTE_ADDR"); $browser = getenv("HTTP_USER_AGENT"); $script_name = getenv("SCRIPT_NAME"); $server_name = getenv("SERVER_NAME"); $server_port = getenv("SERVER_PORT"); if (eregi("443",$server_port)) {$HTTPprotocol = 'https://';} else {$HTTPprotocol = 'http://';} if (($server_port == '80') or ($server_port == '443') ) {$server_port='';} else {$server_port = "$CL$server_port";} $agcPAGE = "$HTTPprotocol$server_name$server_port$script_name"; $agcDIR = eregi_replace('vicidial.php','',$agcPAGE); header ("Content-type: text/html; charset=utf-8"); header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header ("Pragma: no-cache"); // HTTP/1.0 echo "\n"; echo "\n"; echo "\n"; if ($campaign_login_list > 0) { $camp_form_code = "\n"; } else { $camp_form_code = "\n"; } if ($LogiNAJAX > 0) { ?> VICIDIAL web client: Re-Login\n"; echo "\n"; echo "\n"; echo " Timeclock
\n"; echo "\n"; echo "\n"; echo "\n";echo "\n";echo "
English Italiano
\n"; echo "
\n"; echo "\n"; echo "


"; echo ""; echo ""; echo "\n"; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "
Re-Login
 
Login Telefono:
Password Telefono:
Login Utente:
Password Utente:
Campagna: $camp_form_code

VERSIONE: $version       BUILD: $build
\n"; echo "\n\n"; echo "\n\n"; echo "\n\n"; exit; } if ($user_login_first == 1) { if ( (strlen($VD_login)<1) or (strlen($VD_pass)<1) or (strlen($VD_campaign)<1) ) { echo "VICIDIAL web client: Login Campagna\n"; echo "\n"; echo "\n"; echo " Timeclock
\n"; echo "\n"; echo "\n"; echo "\n";echo "\n"; echo "
English Italiano
\n"; echo "
\n"; echo "\n"; #echo "\n"; #echo "\n"; echo "

Login Utente

"; echo ""; echo ""; echo ""; echo "\n"; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "
Login Campagna
 
Login Utente:
Password Utente:
Campagna: $camp_form_code
  \n"; echo "

VERSIONE: $version       BUILD: $build
\n"; echo "\n\n"; echo "\n\n"; echo "\n\n"; exit; } else { if ( (strlen($phone_login)<2) or (strlen($phone_pass)<2) ) { $stmt="SELECT phone_login,phone_pass from vicidial_users where user='$VD_login' and pass='$VD_pass' and user_level > 0;"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $phone_login=$row[0]; $phone_pass=$row[1]; echo "VICIDIAL web client: Login\n"; echo "\n"; echo "\n"; echo " Timeclock
\n"; echo "\n"; echo "\n"; echo "\n";echo "\n"; echo "
English Italiano
\n"; echo "
\n"; echo "\n"; echo "


"; echo ""; echo ""; echo "\n"; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "
Login
 
Login Telefono:
Password Telefono:
Login Utente:
Password Utente:
Campagna: $camp_form_code
  \n"; echo "

VERSIONE: $version       BUILD: $build
\n"; echo "\n\n"; echo "\n\n"; echo "\n\n"; exit; } } } if ( (strlen($phone_login)<2) or (strlen($phone_pass)<2) ) { echo "VICIDIAL web client: Login Telefono\n"; echo "\n"; echo "\n"; echo " Timeclock
\n"; echo "\n"; echo "\n"; echo "\n";echo "\n";echo "
English Italiano
\n"; echo "
\n"; echo "\n"; echo "


"; echo ""; echo ""; echo "\n"; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "
Login Telefono
 
Login Telefono:
Password Telefono:
  \n"; echo "

VERSIONE: $version       BUILD: $build
\n"; echo "\n\n"; echo "\n\n"; echo "\n\n"; exit; } else { if ($WeBRooTWritablE > 0) {$fp = fopen ("./vicidial_auth_entries.txt", "a");} $VDloginDISPLAY=0; if ( (strlen($VD_login)<2) or (strlen($VD_pass)<2) or (strlen($VD_campaign)<2) ) { $VDloginDISPLAY=1; } else { $stmt="SELECT count(*) from vicidial_users where user='$VD_login' and pass='$VD_pass' and user_level > 0;"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $auth=$row[0]; if($auth>0) { $login=strtoupper($VD_login); $password=strtoupper($VD_pass); ##### grab the full name of the agent $stmt="SELECT full_name,user_level,hotkeys_active,agent_choose_ingroups,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,closer_default_blended,user_group,vicidial_recording_override,alter_custphone_override from vicidial_users where user='$VD_login' and pass='$VD_pass'"; $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $LOGfullname=$row[0]; $user_level=$row[1]; $VU_hotkeys_active=$row[2]; $VU_agent_choose_ingroups=$row[3]; $VU_scheduled_callbacks=$row[4]; $agentonly_callbacks=$row[5]; $agentcall_manual=$row[6]; $VU_vicidial_recording=$row[7]; $VU_vicidial_transfers=$row[8]; $VU_closer_default_blended=$row[9]; $VU_user_group=$row[10]; $VU_vicidial_recording_override=$row[11]; $VU_alter_custphone_override=$row[12]; if ($WeBRooTWritablE > 0) { fwrite ($fp, "vdweb|GOOD|$date|$VD_login|$VD_pass|$ip|$browser|$LOGfullname|\n"); fclose($fp); } $user_abb = "$VD_login$VD_login$VD_login$VD_login"; while ( (strlen($user_abb) > 4) and ($forever_stop < 200) ) {$user_abb = eregi_replace("^.","",$user_abb); $forever_stop++;} $stmt="SELECT allowed_campaigns from vicidial_user_groups where user_group='$VU_user_group';"; $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $LOGallowed_campaigns =$row[0]; if ( (!eregi(" $VD_campaign ",$LOGallowed_campaigns)) and (!eregi("ALL-CAMPAIGNS",$LOGallowed_campaigns)) ) { echo "VICIDIAL web client: VICIDIAL Login Campagna\n"; echo "\n"; echo "\n"; echo " Timeclock
\n"; echo "\n"; echo "\n"; echo "\n";echo "\n"; echo "
English Italiano
\n"; echo "Sorry, you are not allowed to login to this campaign: $VD_campaign\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "Login: \n
"; echo "Password:
\n"; echo "Campagna: $camp_form_code
\n"; echo "   \n"; echo "\n"; echo "
\n\n"; echo "\n\n"; echo "\n\n"; exit; } ##### check to see that the campaign is active $stmt="SELECT count(*) FROM vicidial_campaigns where campaign_id='$VD_campaign' and active='Y';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $CAMPactive=$row[0]; if($CAMPactive>0) { if ($TEST_all_statuses > 0) {$selectableSQL = '';} else {$selectableSQL = "selectable='Y' and";} $VARstatuses=''; $VARstatusnames=''; ##### grab the statuses that can be used for dispositioning by an agent $stmt="SELECT status,status_name FROM vicidial_statuses WHERE $selectableSQL status != 'NEW' order by status limit 50;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $VD_statuses_ct = mysql_num_rows($rslt); $i=0; while ($i < $VD_statuses_ct) { $row=mysql_fetch_row($rslt); $statuses[$i] =$row[0]; $status_names[$i] =$row[1]; $VARstatuses = "$VARstatuses'$statuses[$i]',"; $VARstatusnames = "$VARstatusnames'$status_names[$i]',"; $i++; } ##### grab the campaign-specific statuses that can be used for dispositioning by an agent $stmt="SELECT status,status_name FROM vicidial_campaign_statuses WHERE $selectableSQL status != 'NEW' and campaign_id='$VD_campaign' order by status limit 50;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $VD_statuses_camp = mysql_num_rows($rslt); $j=0; while ($j < $VD_statuses_camp) { $row=mysql_fetch_row($rslt); $statuses[$i] =$row[0]; $status_names[$i] =$row[1]; $VARstatuses = "$VARstatuses'$statuses[$i]',"; $VARstatusnames = "$VARstatusnames'$status_names[$i]',"; $i++; $j++; } $VD_statuses_ct = ($VD_statuses_ct+$VD_statuses_camp); $VARstatuses = substr("$VARstatuses", 0, -1); $VARstatusnames = substr("$VARstatusnames", 0, -1); ##### grab the campaign-specific HotKey statuses that can be used for dispositioning by an agent $stmt="SELECT hotkey,status,status_name FROM vicidial_campaign_hotkeys WHERE selectable='Y' and status != 'NEW' and campaign_id='$VD_campaign' order by hotkey limit 9;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $HK_statuses_camp = mysql_num_rows($rslt); $w=0; $HKboxA=''; $HKboxB=''; $HKboxC=''; while ($w < $HK_statuses_camp) { $row=mysql_fetch_row($rslt); $HKhotkey[$w] =$row[0]; $HKstatus[$w] =$row[1]; $HKstatus_name[$w] =$row[2]; $HKhotkeys = "$HKhotkeys'$HKhotkey[$w]',"; $HKstatuses = "$HKstatuses'$HKstatus[$w]',"; $HKstatusnames = "$HKstatusnames'$HKstatus_name[$w]',"; if ($w < 3) {$HKboxA = "$HKboxA $HKhotkey[$w] - $HKstatus[$w] - $HKstatus_name[$w]
";} if ( ($w >= 3) and ($w < 6) ) {$HKboxB = "$HKboxB $HKhotkey[$w] - $HKstatus[$w] - $HKstatus_name[$w]
";} if ($w >= 6) {$HKboxC = "$HKboxC $HKhotkey[$w] - $HKstatus[$w] - $HKstatus_name[$w]
";} $w++; } $HKhotkeys = substr("$HKhotkeys", 0, -1); $HKstatuses = substr("$HKstatuses", 0, -1); $HKstatusnames = substr("$HKstatusnames", 0, -1); ##### grab the campaign settings $stmt="SELECT park_ext,park_file_name,web_form_address,allow_closers,auto_dial_level,dial_timeout,dial_prefix,campaign_cid,campaign_vdad_exten,campaign_rec_exten,campaign_recording,campaign_rec_filename,campaign_script,get_call_launch,am_message_exten,xferconf_a_dtmf,xferconf_a_number,xferconf_b_dtmf,xferconf_b_number,alt_number_dialing,scheduled_callbacks,wrapup_seconds,wrapup_message,closer_campaigns,use_internal_dnc,allcalls_delay,omit_phone_code,agent_pause_codes_active,no_hopper_leads_logins,campaign_allow_inbound,manual_dial_list_id,default_xfer_group,xfer_groups,disable_alter_custphone,display_queue_count,manual_dial_filter,agent_clipboard_copy,use_campaign_dnc,three_way_call_cid,dial_method FROM vicidial_campaigns where campaign_id = '$VD_campaign';"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $row=mysql_fetch_row($rslt); $park_ext = $row[0]; $park_file_name = $row[1]; $web_form_address = $row[2]; $allow_closers = $row[3]; $auto_dial_level = $row[4]; $dial_timeout = $row[5]; $dial_prefix = $row[6]; $campaign_cid = $row[7]; $campaign_vdad_exten = $row[8]; $campaign_rec_exten = $row[9]; $campaign_recording = $row[10]; $campaign_rec_filename = $row[11]; $campaign_script = $row[12]; $get_call_launch = $row[13]; $campaign_am_message_exten = $row[14]; $xferconf_a_dtmf = $row[15]; $xferconf_a_number = $row[16]; $xferconf_b_dtmf = $row[17]; $xferconf_b_number = $row[18]; $alt_number_dialing = $row[19]; $VC_scheduled_callbacks = $row[20]; $wrapup_secondi = $row[21]; $wrapup_message = $row[22]; $closer_campaigns = $row[23]; $use_internal_dnc = $row[24]; $allcalls_delay = $row[25]; $omit_phone_code = $row[26]; $agent_pause_codes_active = $row[27]; $no_hopper_leads_logins = $row[28]; $campaign_allow_inbound = $row[29]; $manual_dial_list_id = $row[30]; $default_xfer_group = $row[31]; $xfer_groups = $row[32]; $disable_alter_custphone = $row[33]; $display_queue_count = $row[34]; $manual_dial_filter = $row[35]; $CopY_tO_ClipboarD = $row[36]; $use_campaign_dnc = $row[37]; $three_way_call_cid = $row[38]; $dial_method = $row[39]; if ( (!ereg('DISABLED',$VU_vicidial_recording_override)) and ($VU_vicidial_recording > 0) ) { $campaign_recording = $VU_vicidial_recording_override; print "\n"; } if ( ($VC_scheduled_callbacks=='Y') and ($VU_scheduled_callbacks=='1') ) {$scheduled_callbacks='1';} if ($VU_vicidial_recording=='0') {$campaign_recording='NEVER';} if ($VU_alter_custphone_override=='ALLOW_ALTER') {$disable_alter_custphone='N';} if ($alt_number_dialing=='Y') {$alt_phone_dialing='1';} else { $alt_phone_dialing='0'; $DefaulTAlTDiaL='0'; } if ($display_queue_count=='N') {$callholdstatus='0';} if ($dial_method == 'INBOUND_MAN') {$VU_closer_default_blended=0;} $closer_campaigns = preg_replace("/^ | -$/","",$closer_campaigns); $closer_campaigns = preg_replace("/ /","','",$closer_campaigns); $closer_campaigns = "'$closer_campaigns'"; if ($agent_pause_codes_active=='Y') { ##### grab the pause codes for this campaign $stmt="SELECT pause_code,pause_code_name FROM vicidial_pause_codes WHERE campaign_id='$VD_campaign' order by pause_code limit 50;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $VD_pause_codes = mysql_num_rows($rslt); $j=0; while ($j < $VD_pause_codes) { $row=mysql_fetch_row($rslt); $pause_codes[$i] =$row[0]; $pause_code_names[$i] =$row[1]; $VARpause_codes = "$VARpause_codes'$pause_codes[$i]',"; $VARpause_code_names = "$VARpause_code_names'$pause_code_names[$i]',"; $i++; $j++; } $VD_pause_codes_ct = ($VD_pause_codes_ct+$VD_pause_codes); $VARpause_codes = substr("$VARpause_codes", 0, -1); $VARpause_code_names = substr("$VARpause_code_names", 0, -1); } ##### grab the inbound groups to choose from if campaign contains CLOSER $VARingroups="''"; if ($campaign_allow_inbound == 'Y') { $VARingroups=''; $stmt="select group_id from vicidial_inbound_groups where active = 'Y' and group_id IN($closer_campaigns) order by group_id limit 60;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $closer_ct = mysql_num_rows($rslt); $INgrpCT=0; while ($INgrpCT < $closer_ct) { $row=mysql_fetch_row($rslt); $closer_groups[$INgrpCT] =$row[0]; $VARingroups = "$VARingroups'$closer_groups[$INgrpCT]',"; $INgrpCT++; } $VARingroups = substr("$VARingroups", 0, -1); } ##### grab the allowable inbound groups to choose from for transfer options $xfer_groups = preg_replace("/^ | -$/","",$xfer_groups); $xfer_groups = preg_replace("/ /","','",$xfer_groups); $xfer_groups = "'$xfer_groups'"; $VARxfergroups="''"; if ($allow_closers == 'Y') { $VARxfergroups=''; $stmt="select group_id,group_name from vicidial_inbound_groups where active = 'Y' and group_id IN($xfer_groups) order by group_id limit 60;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $xfer_ct = mysql_num_rows($rslt); $XFgrpCT=0; while ($XFgrpCT < $xfer_ct) { $row=mysql_fetch_row($rslt); $VARxfergroups = "$VARxfergroups'$row[0]',"; $VARxfergroupsnames = "$VARxfergroupsnames'$row[1]',"; if ($row[0] == "$default_xfer_group") {$default_xfer_group_name = $row[1];} $XFgrpCT++; } $VARxfergroups = substr("$VARxfergroups", 0, -1); $VARxfergroupsnames = substr("$VARxfergroupsnames", 0, -1); } ##### grab the number of leads in the hopper for this campaign $stmt="SELECT count(*) FROM vicidial_hopper where campaign_id = '$VD_campaign' and status='READY';"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $row=mysql_fetch_row($rslt); $campaign_leads_to_call = $row[0]; print "\n"; } else { $VDloginDISPLAY=1; $VDdisplayMESSAGE = "Campagna non attiva, prova di nuovo
"; } } else { if ($WeBRooTWritablE > 0) { fwrite ($fp, "vdweb|FAIL|$date|$VD_login|$VD_pass|$ip|$browser|\n"); fclose($fp); } $VDloginDISPLAY=1; $VDdisplayMESSAGE = "Login errato, prova di nuovo
"; } } if ($VDloginDISPLAY) { echo "VICIDIAL web client: Login Campagna\n"; echo "\n"; echo "\n"; echo " Timeclock
\n"; echo "\n"; echo "\n"; echo "\n";echo "\n"; echo "
English Italiano
\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "

$VDdisplayMESSAGE

"; echo ""; echo ""; echo ""; echo "\n"; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "
Login Campagna
 
Login Utente:
Password Utente:
Campagna: $camp_form_code
  \n"; echo "

VERSIONE: $version       BUILD: $build
\n"; echo "\n\n"; echo "\n\n"; echo "\n\n"; exit; } # code for parsing load-balanced agent phone allocation where agent interface # will send multiple phones-table logins so that the script can determine the # server that has the fewest agents logged into it. # login: ca101,cb101,cc101 $alias_found=0; $stmt="select count(*) from phones_alias where alias_id = '$phone_login';"; $rslt=mysql_query($stmt, $link); $alias_ct = mysql_num_rows($rslt); if ($alias_ct > 0) { $row=mysql_fetch_row($rslt); $alias_found = "$row[0]"; } if ($alias_found > 0) { $stmt="select alias_name,logins_list from phones_alias where alias_id = '$phone_login' limit 1;"; $rslt=mysql_query($stmt, $link); $alias_ct = mysql_num_rows($rslt); if ($alias_ct > 0) { $row=mysql_fetch_row($rslt); $alias_name = "$row[0]"; $phone_login = "$row[1]"; } } $pa=0; if ( (eregi(',',$phone_login)) and (strlen($phone_login) > 2) ) { $phoneSQL = "("; $phones_auto = explode(',',$phone_login); $phones_auto_ct = count($phones_auto); while($pa < $phones_auto_ct) { if ($pa > 0) {$phoneSQL .= " or ";} $desc = ($phones_auto_ct - $pa); # traverse in reverse order $phoneSQL .= "(login='$phones_auto[$desc]' and pass='$phone_pass')"; $pa++; } $phoneSQL .= ")"; } else {$phoneSQL = "login='$phone_login' and pass='$phone_pass'";} $authphone=0; $stmt="SELECT count(*) from phones where $phoneSQL and active = 'Y';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $authphone=$row[0]; if (!$authphone) { echo "VICIDIAL web client: Login Telefono Error\n"; echo "\n"; echo "\n"; echo " Timeclock
\n"; echo "\n"; echo "\n"; echo "\n";echo "\n"; echo "
English Italiano
\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "


"; echo ""; echo ""; echo "\n"; echo "\n"; echo ""; echo "\n"; echo ""; echo "\n"; echo "\n"; echo "\n"; echo "
Login Error
 
Spiacente, il telefono inserito non e` attivo in questo sistema, riprova di nuovo:
 
Login Telefono:
Password Telefono:

VERSIONE: $version       BUILD: $build
\n"; echo "\n\n"; echo "\n\n"; echo "\n\n"; exit; } else { ### go through the entered phones to figure out which server has fewest agents ### logged in and use that phone login account if ($pa > 0) { $pb=0; $pb_login=''; $pb_server_ip=''; $pb_count=0; $pb_log=''; while($pb < $phones_auto_ct) { ### find the server_ip of each phone_login $stmtx="SELECT server_ip from phones where login = '$phones_auto[$pb]';"; if ($DB) {echo "|$stmtx|\n";} if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");} $rslt=mysql_query($stmtx, $link); $rowx=mysql_fetch_row($rslt); ### get number of agents logged in to each server $stmt="SELECT count(*) from vicidial_live_agents where server_ip = '$rowx[0]';"; if ($DB) {echo "|$stmt|\n";} if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");} $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); ### find out whether the server is set to active $stmt="SELECT count(*) from servers where server_ip = '$rowx[0]' and active='Y';"; if ($DB) {echo "|$stmt|\n";} if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");} $rslt=mysql_query($stmt, $link); $rowy=mysql_fetch_row($rslt); ### find out whether the server_updater is running $stmt="SELECT count(*) from server_updater where server_ip = '$rowx[0]' and last_update > '$past_minutes_date';"; if ($DB) {echo "|$stmt|\n";} if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");} $rslt=mysql_query($stmt, $link); $rowz=mysql_fetch_row($rslt); $pb_log .= "$phones_auto[$pb]|$rowx[0]|$row[0]|$rowy[0]|$rowz[0]| "; if ( ($rowy[0] > 0) && ($rowz[0] > 0) ) { if ( ($pb_count >= $row[0]) || (strlen($pb_server_ip) < 4) ) { $pb_count=$row[0]; $pb_server_ip=$rowx[0]; $phone_login=$phones_auto[$pb]; } } $pb++; } echo "\n"; } echo "VICIDIAL web client\n"; $stmt="SELECT * from phones where login='$phone_login' and pass='$phone_pass' and active = 'Y';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $extension=$row[0]; $dialplan_number=$row[1]; $voicemail_id=$row[2]; $phone_ip=$row[3]; $computer_ip=$row[4]; $server_ip=$row[5]; $login=$row[6]; $pass=$row[7]; $status=$row[8]; $active=$row[9]; $phone_type=$row[10]; $fullname=$row[11]; $company=$row[12]; $picture=$row[13]; $messages=$row[14]; $old_messages=$row[15]; $protocol=$row[16]; $local_gmt=$row[17]; $ASTmgrUSERNAME=$row[18]; $ASTmgrSECRET=$row[19]; $login_user=$row[20]; $login_pass=$row[21]; $login_campaign=$row[22]; $park_on_extension=$row[23]; $conf_on_extension=$row[24]; $VICIDiaL_park_on_extension=$row[25]; $VICIDiaL_park_on_filename=$row[26]; $monitor_prefix=$row[27]; $recording_exten=$row[28]; $voicemail_exten=$row[29]; $voicemail_dump_exten=$row[30]; $ext_context=$row[31]; $dtmf_send_extension=$row[32]; $call_out_number_group=$row[33]; $client_browser=$row[34]; $install_directory=$row[35]; $local_web_callerID_URL=$row[36]; $VICIDiaL_web_URL=$row[37]; $AGI_call_logging_enabled=$row[38]; $user_switching_enabled=$row[39]; $conferencing_enabled=$row[40]; $admin_hangup_enabled=$row[41]; $admin_hijack_enabled=$row[42]; $admin_monitor_enabled=$row[43]; $call_parking_enabled=$row[44]; $updater_check_enabled=$row[45]; $AFLogging_enabled=$row[46]; $QUEUE_ACTION_enabled=$row[47]; $CallerID_popup_enabled=$row[48]; $voicemail_button_enabled=$row[49]; $enable_fast_refresh=$row[50]; $fast_refresh_rate=$row[51]; $enable_persistant_mysql=$row[52]; $auto_dial_next_number=$row[53]; $VDstop_rec_after_each_call=$row[54]; $DBX_server=$row[55]; $DBX_database=$row[56]; $DBX_user=$row[57]; $DBX_pass=$row[58]; $DBX_port=$row[59]; $outbound_cid=$row[65]; $enable_sipsak_messages=$row[66]; if ($TelefonoSComPIP == '1') { if (strlen($computer_ip) < 4) { $stmt="UPDATE phones SET computer_ip='$ip' where login='$phone_login' and pass='$phone_pass' and active = 'Y';"; if ($DB) {echo "|$stmt|\n";} if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");} $rslt=mysql_query($stmt, $link); } } if ($TelefonoSComPIP == '2') { $stmt="UPDATE phones SET computer_ip='$ip' where login='$phone_login' and pass='$phone_pass' and active = 'Y';"; if ($DB) {echo "|$stmt|\n";} if ($non_latin > 0) {$rslt=mysql_query("SET NAMES 'UTF8'");} $rslt=mysql_query($stmt, $link); } if ($clientDST) { $local_gmt = ($local_gmt + $isdst); } if ($protocol == 'EXTERNAL') { $protocol = 'Local'; $extension = "$dialplan_number$AT$ext_context"; } $SIP_user = "$protocol/$extension"; $SIP_user_DiaL = "$protocol/$extension"; if ( (ereg('8300',$dialplan_number)) and (strlen($dialplan_number)<5) and ($protocol == 'Local') ) { $SIP_user = "$protocol/$extension$VD_login"; } $stmt="SELECT asterisk_version from servers where server_ip='$server_ip';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $asterisk_version=$row[0]; # If a park extension is not set, use the default one if ( (strlen($park_ext)>0) && (strlen($park_file_name)>0) ) { $VICIDiaL_park_on_extension = "$park_ext"; $VICIDiaL_park_on_filename = "$park_file_name"; print "\n"; } print "\n"; # If a web form address is not set, use the default one if (strlen($web_form_address)>0) { $VICIDiaL_web_form_address = "$web_form_address"; print "\n"; } else { $VICIDiaL_web_form_address = "$VICIDiaL_web_URL"; print "\n"; $VICIDiaL_web_form_address_enc = rawurlencode($VICIDiaL_web_form_address); } $VICIDiaL_web_form_address_enc = rawurlencode($VICIDiaL_web_form_address); # If closers are allowed su this campaign if ($allow_closers=="Y") { $VICIDiaL_allow_closers = 1; print "\n"; } else { $VICIDiaL_allow_closers = 0; print "\n"; } $session_ext = eregi_replace("[^a-z0-9]", "", $extension); if (strlen($session_ext) > 10) {$session_ext = substr($session_ext, 0, 10);} $session_rand = (rand(1,9999999) + 10000000); $session_name = "$StarTtimE$US$session_ext$session_rand"; if ($webform_sessionname) {$webform_sessionname = "&session_name=$session_name";} else {$webform_sessionname = '';} $stmt="DELETE from web_client_sessions where start_time < '$past_month_date' and extension='$extension' and server_ip = '$server_ip' and program = 'vicidial';"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_query($stmt, $link); $stmt="INSERT INTO web_client_sessions values('$extension','$server_ip','vicidial','$NOW_TIME','$session_name');"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_query($stmt, $link); if ( ($campaign_allow_inbound == 'Y') || ($campaign_leads_to_call > 0) || (ereg('Y',$no_hopper_leads_logins)) ) { ### insert an entry into the user log for the login event $stmt = "INSERT INTO vicidial_user_log (user,event,campaign_id,event_date,event_epoch,user_group) values('$VD_login','LOGIN','$VD_campaign','$NOW_TIME','$StarTtimE','$VU_user_group')"; if ($DB) {echo "|$stmt|\n";} $rslt=mysql_query($stmt, $link); ##### check to see if the user has a conf extension already, this happens if they previously exited uncleanly $stmt="SELECT conf_exten FROM vicidial_conferences where extension='$SIP_user' and server_ip = '$server_ip' LIMIT 1;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $prev_login_ct = mysql_num_rows($rslt); $i=0; while ($i < $prev_login_ct) { $row=mysql_fetch_row($rslt); $session_id =$row[0]; $i++; } if ($prev_login_ct > 0) {print "\n";} else { ##### grab the next available vicidial_conference room and reserve it $stmt="SELECT count(*) FROM vicidial_conferences where server_ip='$server_ip' and ((extension='') or (extension is null));"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); if ($row[0] > 0) { $stmt="UPDATE vicidial_conferences set extension='$SIP_user', leave_3way='0' where server_ip='$server_ip' and ((extension='') or (extension is null)) limit 1;"; if ($format=='debug') {echo "\n";} $rslt=mysql_query($stmt, $link); $stmt="SELECT conf_exten from vicidial_conferences where server_ip='$server_ip' and ( (extension='$SIP_user') or (extension='$user') );"; if ($format=='debug') {echo "\n";} $rslt=mysql_query($stmt, $link); $row=mysql_fetch_row($rslt); $session_id = $row[0]; } print "\n"; } ### mark leads that were not dispositioned during previous calls as ERI $stmt="UPDATE vicidial_list set status='ERI', user='' where status IN('QUEUE','INCALL') and user ='$VD_login';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $affected_rows = mysql_affected_rows($link); print "\n"; $stmt="DELETE from vicidial_hopper where status IN('QUEUE','INCALL','DONE') and user ='$VD_login';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $affected_rows = mysql_affected_rows($link); print "\n"; $stmt="DELETE from vicidial_live_agents where user ='$VD_login';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $affected_rows = mysql_affected_rows($link); print "\n"; $stmt="DELETE from vicidial_live_inbound_agents where user ='$VD_login';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $affected_rows = mysql_affected_rows($link); print "\n"; # print "You have logged in as user: $VD_login su phone: $SIP_user nella campagna: $VD_campaign
\n"; $VICIDiaL_is_logged_in=1; ### set the callerID for manager middleware-app to connect the phone to the user $SIqueryCID = "S$CIDdate$session_id"; ############################################# ##### INIZIO SYSTEM_SETTINGS LOOKUP ##### $stmt = "SELECT enable_queuemetrics_logging,queuemetrics_server_ip,queuemetrics_dbname,queuemetrics_login,queuemetrics_pass,queuemetrics_log_id,vicidial_agent_disable,allow_sipsak_messages FROM system_settings;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $qm_conf_ct = mysql_num_rows($rslt); $i=0; while ($i < $qm_conf_ct) { $row=mysql_fetch_row($rslt); $enable_queuemetrics_logging = $row[0]; $queuemetrics_server_ip = $row[1]; $queuemetrics_dbname = $row[2]; $queuemetrics_login = $row[3]; $queuemetrics_pass = $row[4]; $queuemetrics_log_id = $row[5]; $vicidial_agent_disable = $row[6]; $allow_sipsak_messages = $row[7]; $i++; } ##### END QUEUEMETRICS LOGGING LOOKUP ##### ########################################### if ( ($enable_sipsak_messages > 0) and ($allow_sipsak_messages > 0) and (eregi("SIP",$protocol)) ) { $SIPSAK_prefix = 'LIN-'; print "\n"; passthru("/usr/local/bin/sipsak -M -O desktop -B \"$SIPSAK_prefix$VD_campaign\" -r 5060 -s sip:$extension@$phone_ip > /dev/null"); $SIqueryCID = "$SIPSAK_prefix$VD_campaign$DS$CIDdate"; } ### insert a NUOVO record to the vicidial_manager table to be processed $stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','Originate','$SIqueryCID','Channel: $SIP_user_DiaL','Context: $ext_context','Exten: $session_id','Priority: 1','Callerid: $SIqueryCID','','','','','');"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $affected_rows = mysql_affected_rows($link); print "\n"; if ($auto_dial_level > 0) { print "\n"; ##### grab the campaign_weight and number of calls today su that campaign for the agent $stmt="SELECT campaign_weight,calls_today FROM vicidial_campaign_agents where user='$VD_login' and campaign_id = '$VD_campaign';"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $vca_ct = mysql_num_rows($rslt); if ($vca_ct > 0) { $row=mysql_fetch_row($rslt); $campaign_weight = $row[0]; $calls_today = $row[1]; $i++; } else { $campaign_weight = '0'; $calls_today = '0'; $stmt="INSERT INTO vicidial_campaign_agents (user,campaign_id,campaign_rank,campaign_weight,calls_today) values('$VD_login','$VD_campaign','0','0','$calls_today');"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $affected_rows = mysql_affected_rows($link); print "\n"; } $closer_chooser_string=''; $stmt="INSERT INTO vicidial_live_agents (user,server_ip,conf_exten,extension,status,lead_id,campaign_id,uniqueid,callerid,channel,random_id,last_call_time,last_update_time,last_call_finish,closer_campaigns,user_level,campaign_weight,calls_today) values('$VD_login','$server_ip','$session_id','$SIP_user','PAUSED','','$VD_campaign','','','','$random','$NOW_TIME','$tsNOW_TIME','$NOW_TIME','$closer_chooser_string','$user_level','$campaign_weight','$calls_today');"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $affected_rows = mysql_affected_rows($link); print "\n"; if ($enable_queuemetrics_logging > 0) { $linkB=mysql_connect("$queuemetrics_server_ip", "$queuemetrics_login", "$queuemetrics_pass"); mysql_select_db("$queuemetrics_dbname", $linkB); $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='NONE',agent='Agent/$VD_login',verb='AGENTLOGIN',data1='$VD_login@agents',serverid='$queuemetrics_log_id';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $linkB); $affected_rows = mysql_affected_rows($linkB); print "\n"; $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='NONE',agent='Agent/$VD_login',verb='PAUSEALL',serverid='$queuemetrics_log_id';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $linkB); $affected_rows = mysql_affected_rows($linkB); print "\n"; mysql_close($linkB); mysql_select_db("$VARDB_database", $link); } if ($campaign_allow_inbound == 'Y') { print "\n"; } } else { print "\n"; $stmt="INSERT INTO vicidial_live_agents (user,server_ip,conf_exten,extension,status,lead_id,campaign_id,uniqueid,callerid,channel,random_id,last_call_time,last_update_time,last_call_finish,user_level) values('$VD_login','$server_ip','$session_id','$SIP_user','PAUSED','','$VD_campaign','','','','$random','$NOW_TIME','$tsNOW_TIME','$NOW_TIME','$user_level');"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $affected_rows = mysql_affected_rows($link); print "\n"; if ($enable_queuemetrics_logging > 0) { $linkB=mysql_connect("$queuemetrics_server_ip", "$queuemetrics_login", "$queuemetrics_pass"); mysql_select_db("$queuemetrics_dbname", $linkB); $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='$VD_campaign',agent='Agent/$VD_login',verb='AGENTLOGIN',data1='$VD_login@agents',serverid='$queuemetrics_log_id';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $linkB); $affected_rows = mysql_affected_rows($linkB); print "\n"; $stmt = "INSERT INTO queue_log SET partition='P01',time_id='$StarTtimE',call_id='NONE',queue='NONE',agent='Agent/$VD_login',verb='PAUSEALL',serverid='$queuemetrics_log_id';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $linkB); $affected_rows = mysql_affected_rows($linkB); print "\n"; mysql_close($linkB); mysql_select_db("$VARDB_database", $link); } } } else { echo "VICIDIAL web client: VICIDIAL Login Campagna\n"; echo "\n"; echo "\n"; echo " Timeclock
\n"; echo "\n"; echo "\n"; echo "\n";echo "\n"; echo "
English Italiano
\n"; echo "Spiacenti, non ci sono contatti da chiamare per questa campagna\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "Login: \n
"; echo "Password:
\n"; echo "Campagna: $camp_form_code
\n"; echo "   \n"; echo "\n"; echo "
\n\n"; echo "\n\n"; echo "\n\n"; exit; } if (strlen($session_id) < 1) { echo "VICIDIAL web client: VICIDIAL Login Campagna\n"; echo "\n"; echo "\n"; echo " Timeclock
\n"; echo "\n"; echo "\n"; echo "\n";echo "\n"; echo "
English Italiano
\n"; echo "Sorry, there are no available sessions\n"; echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "Login: \n
"; echo "Password:
\n"; echo "Campagna: $camp_form_code
\n"; echo "   \n"; echo "\n"; echo "
\n\n"; echo "\n\n"; echo "\n\n"; exit; } if (ereg('MSIE',$browser)) { $useIE=1; print "\n"; } else { $useIE=0; print "\n"; } $StarTtimE = date("U"); $NOW_TIME = date("Y-m-d H:i:s"); ##### Agent is going to log in so insert the vicidial_agent_log entry now $stmt="INSERT INTO vicidial_agent_log (user,server_ip,event_time,campaign_id,pause_epoch,pause_sec,wait_epoch,user_group,sub_status) values('$VD_login','$server_ip','$NOW_TIME','$VD_campaign','$StarTtimE','0','$StarTtimE','$VU_user_group','LOGIN');"; if ($DB) {echo "$stmt\n";} $rslt=mysql_query($stmt, $link); $affected_rows = mysql_affected_rows($link); $agent_log_id = mysql_insert_id($link); print "\n"; $S='*'; $D_s_ip = explode('.', $server_ip); if (strlen($D_s_ip[0])<2) {$D_s_ip[0] = "0$D_s_ip[0]";} if (strlen($D_s_ip[0])<3) {$D_s_ip[0] = "0$D_s_ip[0]";} if (strlen($D_s_ip[1])<2) {$D_s_ip[1] = "0$D_s_ip[1]";} if (strlen($D_s_ip[1])<3) {$D_s_ip[1] = "0$D_s_ip[1]";} if (strlen($D_s_ip[2])<2) {$D_s_ip[2] = "0$D_s_ip[2]";} if (strlen($D_s_ip[2])<3) {$D_s_ip[2] = "0$D_s_ip[2]";} if (strlen($D_s_ip[3])<2) {$D_s_ip[3] = "0$D_s_ip[3]";} if (strlen($D_s_ip[3])<3) {$D_s_ip[3] = "0$D_s_ip[3]";} $server_ip_dialstring = "$D_s_ip[0]$S$D_s_ip[1]$S$D_s_ip[2]$S$D_s_ip[3]$S"; ##### grab the datails of all active scripts in the system $stmt="SELECT script_id,script_name,script_text FROM vicidial_scripts WHERE active='Y' order by script_id limit 100;"; $rslt=mysql_query($stmt, $link); if ($DB) {echo "$stmt\n";} $MM_scripts = mysql_num_rows($rslt); $e=0; while ($e < $MM_scripts) { $row=mysql_fetch_row($rslt); $MMscriptid[$e] =$row[0]; $MMscriptname[$e] = urlencode($row[1]); $MMscripttext[$e] = urlencode($row[2]); $MMscriptids = "$MMscriptids'$MMscriptid[$e]',"; $MMscriptnames = "$MMscriptnames'$MMscriptname[$e]',"; $MMscripttexts = "$MMscripttexts'$MMscripttext[$e]',"; $e++; } $MMscriptids = substr("$MMscriptids", 0, -1); $MMscriptnames = substr("$MMscriptnames", 0, -1); $MMscripttexts = substr("$MMscripttexts", 0, -1); } } ################################################################ ### BEGIN - build the callback calendar (12 months) ### ################################################################ define ('ADAY', (60*60*24)); $CdayARY = getdate(); $Cmon = $CdayARY['mon']; $Cyear = $CdayARY['year']; $CTODAY = date("Y-m"); $CTODAYmday = date("j"); $CINC=0; $Cmonths = Array('Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno', 'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'); $Cdays = Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); $CCAL_OUT = ''; $CCAL_OUT .= ""; while ($CINC < 12) { if ( ($CINC == 0) || ($CINC == 4) ||($CINC == 8) ) {$CCAL_OUT .= "";} $CCAL_OUT .= ""; if ( ($CINC == 3) || ($CINC == 7) ||($CINC == 11) ) {$CCAL_OUT .= "";} $CINC++; } $CCAL_OUT .= "
"; $CYyear = $Cyear; $Cmonth= ($Cmon + $CINC); if ($Cmonth > 12) { $Cmonth = ($Cmonth - 12); $CYyear++; } $Cstart= mktime(11,0,0,$Cmonth,1,$CYyear); $CfirstdayARY = getdate($Cstart); #echo "|$Cmon|$Cmonth|$CINC|\n"; $CPRNTDAY = date("Y-m", $Cstart); $CCAL_OUT .= ""; $CCAL_OUT .= ""; $CCAL_OUT .= ""; $CCAL_OUT .= ""; foreach($Cdays as $Cday) { $CDCLR="#ffffff"; $CCAL_OUT .= ""; } for( $Ccount=0;$Ccount<(6*7);$Ccount++) { $Cdayarray = getdate($Cstart); if((($Ccount) % 7) == 0) { if($Cdayarray['mon'] != $CfirstdayARY['mon']) break; $CCAL_OUT .= ""; } if($Ccount < $CfirstdayARY['wday'] || $Cdayarray['mon'] != $Cmonth) { $CCAL_OUT .= ""; } else { if( ($Cdayarray['mday'] == $CTODAYmday) and ($CPRNTDAY == $CTODAY) ) { $CPRNTmday = $Cdayarray['mday']; if ($CPRNTmday < 10) {$CPRNTmday = "0$CPRNTmday";} $CBL = ""; $CEL = ""; $CCAL_OUT .= ""; $Cstart += ADAY; } else { $CDCLR="#ffffff"; if ( ($Cdayarray['mday'] < $CTODAYmday) and ($CPRNTDAY == $CTODAY) ) { $CDCLR="#CCCCCC"; $CBL = ''; $CEL = ''; } else { $CPRNTmday = $Cdayarray['mday']; if ($CPRNTmday < 10) {$CPRNTmday = "0$CPRNTmday";} $CBL = ""; $CEL = ""; } $CCAL_OUT .= ""; $Cstart += ADAY; } } } $CCAL_OUT .= ""; $CCAL_OUT .= "
"; $CCAL_OUT .= "
"; $CCAL_OUT .= "$CfirstdayARY[month] $CfirstdayARY[year]"; $CCAL_OUT .= "
"; $CCAL_OUT .= "
"; $CCAL_OUT .= "
"; $CCAL_OUT .= "$Cday"; $CCAL_OUT .= "
"; $CCAL_OUT .= "
 "; $CCAL_OUT .= "
"; $CCAL_OUT .= "$CBL$Cdayarray[mday]$CEL"; $CCAL_OUT .= "
"; $CCAL_OUT .= "
"; $CCAL_OUT .= "
"; $CCAL_OUT .= "$CBL$Cdayarray[mday]$CEL"; $CCAL_OUT .= "
"; $CCAL_OUT .= "
"; $CCAL_OUT .= "
"; #echo "$CCAL_OUT\n"; ################################################################ ### END - build the callback calendar (12 months) ### ################################################################ ?> \n"; ?>
MARGINWIDTH=0 MARGINHEIGHT=0 LEFTMARGIN=0 TOPMARGIN=0 VALIGN=TOP ALIGN=LEFT>
    0) {echo "GROUPS     \n";} ?> LOGOUT\n"; ?>
height=30>
VICIDIAL SCRIPT VALIGN=MIDDLE ALIGN=CENTER>   LIVE     ID sessione:     Chiamata in corso
height=>

VICIDIAL
CHIAMATA MANUALE       CHIAMATA VELOCE
X CHIAMATABACK ATTIVE

secondi:     D1 - CHIAMA\n"; echo "
\n"; echo "D2 - CHIAMA\n"; } else {echo "
\n";} ?>


height=460>
RICHIAMI PER L`OPERATORE :
Selezionare una callback per chiamare il cliente ora. Una volta fatto click, il record sara` rimosso dalla lista.

  Aggiorna                 Torna Indietro
height=460>
NUOVA CHIAMATA MANUALE PER IL CONTATTO :

Inserisci le informazioni per il nuovo contatto da chiamare.
\n"; } ?> Nota: tutti i nuovi contatti chiamati manualmente andranno nella lista

Codice di Chiamata:   (Vale 1 negli USA ed in Canada)
Telefono Number:   (12 digits max - digits only)
Cerca Contatti esistenti:   (Questa opzione tentera` di trovare il numero di telefono nel sistema prima di inserire un nuovo contatto)


If you want to dial a number and have it NOT be added as a new lead, enter in the exact dialstring that you want to call in the Chiamata automatica field below. To hangup this call you will have to open the CHIAMATAS IN THIS SESSION link at the bottom of the screen and hang it up by clicking su its channel link there.
 
Chiamata automatica:   (solo digit per favore)

Chiama Ora                 Torna Indietro

Il tuo stato:
Calls Dialing:
>
Trasferimento - Conferenza
LOCAL CLOSER Riaggancia la linea trasferita Riaggancia entrambe le linee
Numero da chiamare   CHIAMA OVERRIDE   LASCIA LA CONFERENZA A 3 Effettua il Blind Transfer D1 D2
secondi   channel Chiama il Cliente Metti in attesa il cliente Blind Transfer VMail Message
height=70>
Esito Contatto:

-
height=70>
Tasti Funzione per Esiti: Se attivo, premi il tasto corrispondente all`esito desiderato e la chiamata sara` riagganciata automaticamente:
height=70>
Informazioni richiamo precedente: close



height=70>
Extended Alt Telefono Information: minimizza



ingrandisci
Alt Telefono Info
height=500>
Non c'รจ nessuno nella tua sessione:
Torna Indietro

Chiama l`operatore di nuovo
height=500>
Il cliente ha riagganciato:
Torna Indietro

Termina e definisci un Esito per la chiamata
height=550>
Call Wrapup: secondi di riposo restanti



Termina riposo e continua
height=500>
La tua sessione e` stata disabilitata
LOGOUT

Torna Indietro
height=500>

LOGOUT
 
height=47>
Tutti i cambiamenti eseguiti sui dati del cliente non saranno salvati, bisogna effettuare le modifiche prima di riagganciare.
height=460>
ESITO CHIAMATA :       Aggancia di nuovo       minimizza
Selezione Esito di fine chiamata
PAUSA OPERATORE
PULISCI IL FORM | INVIA

WEB FORM INVIA

 
height=460>
SELEZIONARE UN CODICE PAUSA:
Pausa Code Selection

 
height=460>
Selezionare una data di richiamo! :
Seleziona una data qui sotto       Ora:   Minuti:    
CHIAMATABACK PERSONALE (nessun altro potra` richiamarlo)
";} ?> Note Richiamo:

INVIA



 
height=460>
SELEZIONE del CLOSER INBOUND GROUP
Selezione del Closer Inbound Group
CHIAMATA MISTA(outbound attivato)
RESET | INVIA



 
Canale Canale CHIAMATABACK PERSONALE (nessun altro potra` richiamarlo)
";} ?>
height=>
VICIDIAL SCRIPT
0) && ( ($user_level>=$HKuser_level) or ($VU_hotkeys_active > 0) ) ) { ?> TASTI FUNZIONE DISATTIVATI >
Versione di VICIDIAL web-client:     BUILD:               Server:              
Mostra le informazioni relative al canale della conferenza

 
id="MainTable">
STATO:
Chiama il prossimo numero
LEAD PREVIEW
CHIAMA ALT NUM
FILE REGISTRAZIONE:

ID Registrazione:
Start Registrazione

Web Form

Metti in attesa la chiamata
Trasferimento - Conferenza

Riaggancia il cliente

Trasmetti Tono Tastiera

align=left valign=top>
  Cust Time:   Canale:
Dati Cliente:
Titolo:   Nome:   MI:   Cognome:
Indirizzo1:
Indirizzo2:   Indirizzo3:
Citta`:   Stato:   CAP:
Provincia:   Vendor ID:   Sesso:
Telefono:                     "; echo ""; } else { echo ""; } ?>   Prefisso:   Num. Alternativo:
Mostra:   Email:
Note: \n";} else {echo "\n";} ?>
>