1052 lines
45 KiB
PHP
1052 lines
45 KiB
PHP
<?php
|
|
# vdc_chat_display.php
|
|
#
|
|
# Copyright (C) 2026 Joe Johnson, Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
|
#
|
|
# This is the interface for agents to chat with customers and each other. It's separate from the manager-to-agent
|
|
# chat interface out of necessity and calls the chat_db_query.php page to send information and display it. It will
|
|
# display any open chat the agent has, and of those open chats the full conversation of the current active chat
|
|
# will be displayed. It will also show when an agent has a new unread message in any of his conversations and
|
|
# allow the agent to toggle between them. They can also initiate chats with any agent currently logged into a
|
|
# campaign through the agent interface.
|
|
#
|
|
# Builds:
|
|
# 150903-2349 - First build
|
|
# 151213-1107 - Added variable filtering
|
|
# 151218-0913 - Added missing translation code and user auth
|
|
# 160303-0051 - Added code for chat transfers
|
|
# 160818-1235 - Added line colors and scrolling
|
|
# 170528-1001 - Added variable filtering
|
|
# 190902-0914 - Fix for PHP 7.2
|
|
# 201117-2207 - Changes for better compatibility with non-latin data input
|
|
# 210616-2040 - Added optional CORS support, see options.php for details
|
|
# 220220-0928 - Added allow_web_debug system setting
|
|
# 220518-2211 - Small fix for encrypted auth
|
|
# 230518-2002 - Added customer_chat_refresh_seconds options.php setting, and message display
|
|
# 260302-1156 - Code updates for PHP8 compatibility
|
|
#
|
|
|
|
require("dbconnect_mysqli.php");
|
|
require("functions.php");
|
|
|
|
$php_script = 'vdc_chat_display.php';
|
|
|
|
$MT[0]='';
|
|
$chat_group_ids=$MT;
|
|
$customer_chat_refresh_seconds=1;
|
|
|
|
if (isset($_GET["email"])) {$email=$_GET["email"];}
|
|
elseif (isset($_POST["email"])) {$email=$_POST["email"];}
|
|
else {$email="";}
|
|
if (isset($_GET["email_invite_lead_id"])) {$email_invite_lead_id=$_GET["email_invite_lead_id"];}
|
|
elseif (isset($_POST["email_invite_lead_id"])) {$email_invite_lead_id=$_POST["email_invite_lead_id"];}
|
|
else {$email_invite_lead_id="";}
|
|
if (isset($_GET["chat_id"])) {$chat_id=$_GET["chat_id"];}
|
|
elseif (isset($_POST["chat_id"])) {$chat_id=$_POST["chat_id"];}
|
|
else {$chat_id="";}
|
|
if (isset($_GET["chat_group_id"])) {$chat_group_id=$_GET["chat_group_id"];}
|
|
elseif (isset($_POST["chat_group_id"])) {$chat_group_id=$_POST["chat_group_id"];}
|
|
else {$chat_group_id="";}
|
|
if (isset($_GET["chat_group_ids"])) {$chat_group_ids=$_GET["chat_group_ids"];}
|
|
elseif (isset($_POST["chat_group_ids"])) {$chat_group_ids=$_POST["chat_group_ids"];}
|
|
if (isset($_GET["server_ip"])) {$server_ip=$_GET["server_ip"];}
|
|
elseif (isset($_POST["server_ip"])) {$server_ip=$_POST["server_ip"];}
|
|
if (isset($_GET["lead_id"])) {$lead_id=$_GET["lead_id"];}
|
|
elseif (isset($_POST["lead_id"])) {$lead_id=$_POST["lead_id"];}
|
|
else {$lead_id=0;}
|
|
if (isset($_GET["user"])) {$user=$_GET["user"];}
|
|
elseif (isset($_POST["user"])) {$user=$_POST["user"];}
|
|
else {$user="";}
|
|
if (isset($_GET["campaign"])) {$campaign=$_GET["campaign"];}
|
|
elseif (isset($_POST["campaign"])) {$campaign=$_POST["campaign"];}
|
|
else {$campaign="";}
|
|
if (isset($_GET["dial_method"])) {$dial_method=$_GET["dial_method"];}
|
|
elseif (isset($_POST["dial_method"])) {$dial_method=$_POST["dial_method"];}
|
|
else {$dial_method="";}
|
|
if (isset($_GET["pass"])) {$pass=$_GET["pass"];}
|
|
elseif (isset($_POST["pass"])) {$pass=$_POST["pass"];}
|
|
else {$pass="";}
|
|
if (isset($_GET["child_window"])) {$child_window=$_GET["child_window"];}
|
|
elseif (isset($_POST["child_window"])) {$child_window=$_POST["child_window"];}
|
|
else {$child_window="";}
|
|
if (isset($_GET["outside_user_name"])) {$outside_user_name=$_GET["outside_user_name"];}
|
|
elseif (isset($_POST["outside_user_name"])) {$outside_user_name=$_POST["outside_user_name"];}
|
|
if (isset($_GET["first_name"])) {$first_name=$_GET["first_name"];}
|
|
elseif (isset($_POST["first_name"])) {$first_name=$_POST["first_name"];}
|
|
else {$first_name="";}
|
|
if (isset($_GET["last_name"])) {$last_name=$_GET["last_name"];}
|
|
elseif (isset($_POST["last_name"])) {$last_name=$_POST["last_name"];}
|
|
else {$last_name="";}
|
|
if (isset($_GET["clickmute"])) {$clickmute=$_GET["clickmute"];}
|
|
elseif (isset($_POST["clickmute"])) {$clickmute=$_POST["clickmute"];}
|
|
if (isset($_GET["stage"])) {$stage=$_GET["stage"];}
|
|
elseif (isset($_POST["stage"])) {$stage=$_POST["stage"];}
|
|
else {$stage="";}
|
|
|
|
$PHP_SELF=$_SERVER['PHP_SELF'];
|
|
$PHP_SELF = preg_replace('/\.php.*/i','.php',$PHP_SELF);
|
|
|
|
$user=preg_replace("/\'|\"|\\\\|;| /","",$user);
|
|
$pass=preg_replace("/\'|\"|\\\\|;| /","",$pass);
|
|
|
|
#############################################
|
|
##### START SYSTEM_SETTINGS LOOKUP #####
|
|
$VUselected_language = '';
|
|
$stmt = "SELECT use_non_latin,enable_languages,language_method,default_language,allow_chats,allow_web_debug FROM system_settings;";
|
|
$rslt=mysql_to_mysqli($stmt, $link);
|
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
|
#if ($DB) {echo "$stmt\n";}
|
|
$qm_conf_ct = mysqli_num_rows($rslt);
|
|
if ($qm_conf_ct > 0)
|
|
{
|
|
$row=mysqli_fetch_row($rslt);
|
|
$non_latin = $row[0];
|
|
$SSenable_languages = $row[1];
|
|
$SSlanguage_method = $row[2];
|
|
$SSdefault_language = $row[3];
|
|
$SSallow_chats = $row[4];
|
|
$SSallow_web_debug = $row[5];
|
|
}
|
|
$VUselected_language = $SSdefault_language;
|
|
if ($SSallow_web_debug < 1 || !isset($DB)) {$DB=0;}
|
|
$DB=preg_replace("/[^0-9]/","",$DB);
|
|
##### END SETTINGS LOOKUP #####
|
|
###########################################
|
|
|
|
# if options file exists, use the override values for the above variables
|
|
# see the options-example.php file for more information
|
|
if (file_exists('options.php'))
|
|
{
|
|
require('options.php');
|
|
}
|
|
|
|
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
|
|
|
|
if (!isset($clickmute) || $clickmute!="1") {$clickmute="0";} // Prevents annoying quirk of playing the audio cue every time you click the tab to view this
|
|
|
|
$lead_id = preg_replace("/[^0-9]/","",$lead_id);
|
|
# $chat_id = preg_replace('/[^- \_\.0-9a-zA-Z]/','',$chat_id);
|
|
# $server_ip = preg_replace('/[^- \_\.0-9a-zA-Z]/','',$server_ip);
|
|
$email = preg_replace("/\'|\"|\\\\|;/","",$email);
|
|
# $dial_method = preg_replace('/[^-\_0-9a-zA-Z]/','',$dial_method);
|
|
$clickmute = preg_replace("/\'|\"|\\\\|;/","",$clickmute);
|
|
# $stage = preg_replace('/[^-\_0-9a-zA-Z]/','',$stage);
|
|
$email_invite_lead_id = preg_replace("/\'|\"|\\\\|;/","",$email_invite_lead_id);
|
|
# $child_window = preg_replace('/[^-\_0-9a-zA-Z]/','',$child_window);
|
|
$chat_group_ids = preg_replace("/\"|\\\\|;/","",$chat_group_ids);
|
|
$customer_chat_refresh_seconds=preg_replace("/[^0-9\.]/", "", $customer_chat_refresh_seconds);
|
|
if (!$customer_chat_refresh_seconds) {$customer_chat_refresh_seconds=1;}
|
|
$customer_chat_refresh_milliseconds = $customer_chat_refresh_seconds*1000;
|
|
|
|
if ($non_latin < 1)
|
|
{
|
|
$user = preg_replace('/[^-\_0-9a-zA-Z]/','',$user);
|
|
$pass=preg_replace("/[^-\.\+\/\=_0-9a-zA-Z]/","",$pass);
|
|
$outside_user_name = preg_replace('/[^- \_\.0-9a-zA-Z]/','',$user);
|
|
$first_name = preg_replace('/[^- \_\.0-9a-zA-Z]/','',$first_name);
|
|
$last_name = preg_replace('/[^- \_\.0-9a-zA-Z]/','',$last_name);
|
|
$campaign = preg_replace('/[^-\_0-9a-zA-Z]/','',$campaign);
|
|
$chat_group_id = preg_replace('/[^- \_\.0-9a-zA-Z]/','',$chat_group_id);
|
|
$chat_id = preg_replace('/[^- \_\.0-9a-zA-Z]/','',$chat_id);
|
|
$server_ip = preg_replace('/[^- \_\.0-9a-zA-Z]/','',$server_ip);
|
|
$dial_method = preg_replace('/[^-\_0-9a-zA-Z]/','',$dial_method);
|
|
$stage = preg_replace('/[^-\_0-9a-zA-Z]/','',$stage);
|
|
$child_window = preg_replace('/[^-\_0-9a-zA-Z]/','',$child_window);
|
|
}
|
|
else
|
|
{
|
|
$user = preg_replace('/[^-_0-9\p{L}]/u','',$user);
|
|
$pass = preg_replace('/[^-\.\+\/\=_0-9\p{L}]/u','',$pass);
|
|
$outside_user_name = preg_replace("/\'|\"|\\\\|;/","",$user);
|
|
$first_name = preg_replace('/[^- \_\.0-9\p{L}]/u','',$first_name);
|
|
$last_name = preg_replace('/[^- \_\.0-9\p{L}]/u','',$last_name);
|
|
$campaign = preg_replace('/[^-\_0-9\p{L}]/u','',$campaign);
|
|
$chat_group_id = preg_replace('/[^- \_\.0-9\p{L}]/u','',$chat_group_id);
|
|
$chat_id = preg_replace('/[^- \_\.0-9\p{L}]/u','',$chat_id);
|
|
$server_ip = preg_replace('/[^- \_\.0-9\p{L}]/u','',$server_ip);
|
|
$dial_method = preg_replace('/[^-\_0-9\p{L}]/u','',$dial_method);
|
|
$stage = preg_replace('/[^-\_0-9\p{L}]/u','',$stage);
|
|
$child_window = preg_replace('/[^-\_0-9\p{L}]/u','',$child_window);
|
|
}
|
|
|
|
if( (strlen($stage) > 0) and ($stage == 'WELCOME') )
|
|
{
|
|
echo _QXZ("Customer Chat Frame");
|
|
exit;
|
|
}
|
|
if ($SSallow_chats < 1)
|
|
{
|
|
header ("Content-type: text/html; charset=utf-8");
|
|
echo _QXZ("Error, chat disabled on this system");
|
|
exit;
|
|
}
|
|
|
|
$auth=0;
|
|
$auth_message = user_authorization($user,$pass,'',0,1,0,0,'vdc_chat_display');
|
|
if ($auth_message == 'GOOD')
|
|
{$auth=1;}
|
|
|
|
if( (strlen($user)<2) or (strlen($pass)<2) or ($auth==0))
|
|
{
|
|
echo _QXZ("Invalid Username/Password:")." |$user|$pass|$auth_message|vdc_chat_display|\n";
|
|
exit;
|
|
}
|
|
|
|
$user_stmt="SELECT full_name,user_level,selected_language from vicidial_users where user='$user';";
|
|
$user_level=0;
|
|
$user_rslt=mysql_to_mysqli($user_stmt, $link);
|
|
if (mysqli_num_rows($user_rslt)>0) {
|
|
$user_row=mysqli_fetch_row($user_rslt);
|
|
$full_name = $user_row[0];
|
|
$user_level = $user_row[1];
|
|
$VUselected_language = $user_row[2];
|
|
|
|
if ($chat_id) {
|
|
$chat_stmt="SELECT * from vicidial_live_chats where chat_creator='$user' and chat_id='$chat_id';";
|
|
# echo "<!-- \n$chat_stmt\n";
|
|
$chat_rslt=mysql_to_mysqli($chat_stmt, $link);
|
|
if (mysqli_num_rows($chat_rslt)>0) {
|
|
$chat_creator=$user;
|
|
echo "$chat_creator\n";
|
|
}
|
|
# echo "\\-->\n";
|
|
} else {
|
|
# echo "Waiting for chat request..."; exit;
|
|
$chat_stmt=""; # Defined for $DB, prevents warnings
|
|
}
|
|
} else {
|
|
unset($pass);
|
|
|
|
## Since user is not a vicidial user, check to see if they belong to another chat and use that as the default chat variable.
|
|
$chat_stmt="SELECT chat_id from vicidial_chat_participants where chat_member='$user';";
|
|
$chat_rslt=mysql_to_mysqli($chat_stmt, $link);
|
|
if (mysqli_num_rows($chat_rslt)>0) {
|
|
$chat_row=mysqli_fetch_row($chat_rslt);
|
|
$chat_id=$chat_row[0];
|
|
}
|
|
}
|
|
$stmt="SELECT * from vicidial_list where lead_id='$lead_id';";
|
|
$rslt=mysql_to_mysqli($stmt, $link);
|
|
if (mysqli_num_rows($rslt)>0) {
|
|
$row=mysqli_fetch_array($rslt);
|
|
$first_name=$row["first_name"];
|
|
$last_name=$row["last_name"];
|
|
if (!$full_name) {$full_name=trim("$first_name $last_name");}
|
|
if (!$email) {$email=$row["email"];}
|
|
}
|
|
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 '<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
';
|
|
?>
|
|
<html>
|
|
<head>
|
|
<title><?php echo _QXZ("Agent Chat Interface"); ?></title>
|
|
<script type="text/javascript" src="simpletreemenu.js">
|
|
|
|
/***********************************************
|
|
* Simple Tree Menu- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
|
|
* This notice MUST stay intact for legal use
|
|
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
|
|
***********************************************/
|
|
|
|
</script>
|
|
|
|
<link rel="stylesheet" type="text/css" href="css/simpletree.css" />
|
|
|
|
<script language="Javascript">
|
|
var clickMute=<?php echo $clickmute; ?>;
|
|
// Need campaign ID and dial_method to properly toggle the DialControl span
|
|
var campaign="<?php echo $campaign; ?>";
|
|
var dial_method="<?php echo $dial_method; ?>";
|
|
var email_invite_lead_id="<?php echo $email_invite_lead_id; ?>";
|
|
// Borrowed from parent window - need these to toggle controls when agent is starting chats
|
|
var DiaLControl_auto_HTML = "<a href=\"#\" onclick=\"AutoDial_ReSume_PauSe('VDADready','','','','','','','YES');\"><img src=\"./images/<?php echo _QXZ("vdc_LB_paused.gif") ?>\" border=\"0\" alt=\"You are paused\" /></a>";
|
|
var DiaLControl_auto_HTML_OFF = "<img src=\"./images/<?php echo _QXZ("vdc_LB_blank_OFF.gif") ?>\" border=\"0\" alt=\"pause button disabled\" />";
|
|
var DiaLControl_inbound_manual_HTML = "<a href=\"#\" onclick=\"AutoDial_ReSume_PauSe('VDADready','','','','','','','YES');\"><img src=\"./images/<?php echo _QXZ("vdc_LB_paused.gif"); ?>\" border=\"0\" alt=\"You are paused\" /></a><br /><a href=\"#\" onclick=\"ManualDialNext('','','','','','0','','','YES');\"><img src=\"./images/<?php echo _QXZ("vdc_LB_dialnextnumber.gif"); ?>\" border=\"0\" alt=\"Dial Next Number\" /></a>";
|
|
var DiaLControl_inbound_manual_HTML_OFF = "<img src=\"./images/<?php echo _QXZ("vdc_LB_blank_OFF.gif"); ?>\" border=\"0\" alt=\"pause button disabled\" /><br /><img src=\"./images/<?php echo _QXZ("vdc_LB_dialnextnumber_OFF.gif"); ?>\" border=\"0\" alt=\"Dial Next Number\" />";
|
|
|
|
// Show parent alert
|
|
function chat_alert_box(temp_message)
|
|
{
|
|
window.parent.document.getElementById("AlertBoxContent").innerHTML = temp_message;
|
|
|
|
parent.showDiv('AlertBox');
|
|
|
|
window.parent.document.alert_form.alert_button.focus();
|
|
}
|
|
|
|
|
|
function UpdateChatWindow() {
|
|
var chat_id=document.getElementById('chat_id').value;
|
|
var chat_creator=document.getElementById('chat_creator').value;
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
var current_message_field = document.getElementById('current_message_count');
|
|
if (current_message_field == null) {var current_message_count=0;} else {var current_message_count=current_message_field.value;}
|
|
|
|
if (chat_id)
|
|
{
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&chat_creator="+chat_creator+"&chat_id="+chat_id+"&user="+user+"&pass="+pass+"&user_level="+user_level+"¤t_message_count="+current_message_count+"&action=update_agent_chat_window";
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
// var fullchatlog = xmlhttp.responseText;
|
|
var chatlogresponse = xmlhttp.responseText;
|
|
var chatlog_array = chatlogresponse.split("\n");
|
|
var fullchatlog = chatlog_array[0];
|
|
var live_message_count = chatlog_array[1];
|
|
|
|
var last_live_message_count=document.getElementById('live_message_count_field');
|
|
if (live_message_count!=last_live_message_count.value) {
|
|
document.getElementById('ChatDisplay').innerHTML=fullchatlog;
|
|
last_live_message_count.value=live_message_count;
|
|
}
|
|
|
|
|
|
// document.getElementById('ChatDisplay').innerHTML=fullchatlog;
|
|
|
|
var current_message_field_update = document.getElementById('current_message_count');
|
|
if (current_message_field_update != null) {var current_message_count_update=current_message_field_update.value;}
|
|
|
|
// document.getElementById('ChatDisplay').innerHTML+=current_message_count_update+" > "+current_message_count;
|
|
|
|
if (current_message_count_update>current_message_count)
|
|
{
|
|
var myDiv = document.getElementById('ChatDisplay');
|
|
document.getElementById('ChatDisplay').scrollTop = document.getElementById('ChatDisplay').scrollHeight;
|
|
|
|
if (clickMute==0 && !document.getElementById("MuteCustomerChatAlert").checked)
|
|
{
|
|
document.getElementById("CustomerChatAudioAlertFile").play();
|
|
}
|
|
else if (clickMute>0)
|
|
{
|
|
clickMute=0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
delete xmlhttp;
|
|
}
|
|
}
|
|
}
|
|
|
|
function SendMessage(chat_id, user, message, chat_member_name) {
|
|
var chat_id=document.getElementById('chat_id').value;
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
var chat_message=encodeURIComponent(document.getElementById('chat_message').value.trim());
|
|
var chat_member_name=encodeURIComponent(document.getElementById('chat_member_name').value.trim());
|
|
window.user_level='<?php echo $user_level; ?>';
|
|
|
|
if (!document.getElementById('private_message') || !document.getElementById('private_message').checked) {
|
|
var chat_level=0;
|
|
} else {
|
|
var chat_level=1;
|
|
}
|
|
|
|
if (!chat_message || !user) {return false;}
|
|
if (!chat_member_name) {chat_alert_box("<?php echo _QXZ("Please enter a name to chat as."); ?>");}
|
|
if (!chat_id) {chat_alert_box("<?php echo _QXZ("You have not joined a chat yet."); ?>");}
|
|
document.getElementById('chat_message').value='';
|
|
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&chat_message="+chat_message+"&chat_level="+chat_level+"&user_level="+user_level+"&chat_id="+chat_id+"&chat_member_name="+chat_member_name+"&user="+user+"&pass="+pass+"&action=agent_send_message";
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
var posting_response = xmlhttp.responseText;
|
|
if (posting_response)
|
|
{
|
|
chat_alert_box(posting_response);
|
|
}
|
|
else
|
|
{
|
|
UpdateChatWindow();
|
|
}
|
|
}
|
|
}
|
|
delete xmlhttp;
|
|
}
|
|
}
|
|
|
|
function JoinChat(chat_id) {
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
var chat_member_name=encodeURIComponent(document.getElementById('chat_member_name').value.trim());
|
|
var chat_creator="";
|
|
|
|
if (!chat_member_name)
|
|
{
|
|
chat_alert_box("<?php echo _QXZ("Please enter your name before joining a chat."); ?>");
|
|
return false;
|
|
}
|
|
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&chat_id="+chat_id+"&chat_member_name="+chat_member_name+"&user="+user+"&pass="+pass+"&action=join_chat";
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
var join_attempt_results = xmlhttp.responseText.split("|");
|
|
if (join_attempt_results[1])
|
|
{
|
|
chat_alert_box(join_attempt_results[1]);
|
|
}
|
|
else
|
|
{
|
|
chat_creator=xmlhttp.responseText;
|
|
document.getElementById('chat_member_name').disabled = true;
|
|
}
|
|
}
|
|
document.getElementById('chat_id').value=chat_id;
|
|
document.getElementById('chat_creator').value=chat_creator;
|
|
// If user is chat creator, show option to end chat or invite people
|
|
if (chat_creator==user)
|
|
{
|
|
if (!email_invite_lead_id)
|
|
{
|
|
document.getElementById('chat_creator_console').innerHTML="<BR/><BR/><input class='blue_btn' type='button' style=\"width:150px\" value=\"<?php echo _QXZ("INVITE"); ?>\" onClick=\"javascript:document.getElementById('email_window').style.display='block'\">\n<BR/><BR/><input class='red_btn' type='button' style=\"width:150px\" value=\"<?php echo _QXZ("END CHAT"); ?>\" onClick=\"EndChat()\">";
|
|
}
|
|
else
|
|
{
|
|
document.getElementById('chat_creator_console').innerHTML="<BR/><BR/><input class='red_btn' type='button' style=\"width:150px\" value=\"<?php echo _QXZ("END CHAT"); ?>\" onClick=\"EndChat()\">";
|
|
}
|
|
}
|
|
}
|
|
delete xmlhttp;
|
|
}
|
|
|
|
}
|
|
|
|
function RefreshLiveChatWindow() {
|
|
var chat_id=document.getElementById('chat_id').value;
|
|
var chat_creator=document.getElementById('chat_creator').value;
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
window.user_level='<?php echo $user_level; ?>';
|
|
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&chat_creator="+chat_creator+"&chat_id="+chat_id+"&user="+user+"&pass="+pass+"&user_level="+user_level+"&action=show_live_chats";
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
var live_chat_info = xmlhttp.responseText;
|
|
document.getElementById('ActiveChats').innerHTML=live_chat_info;
|
|
UpdateChatWindow();
|
|
}
|
|
}
|
|
delete xmlhttp;
|
|
}
|
|
}
|
|
|
|
function StartChat() {
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
var chat_group_id=document.getElementById('chat_group_id').value;
|
|
var server_ip=document.getElementById('server_ip').value;
|
|
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&action=start_chat&user="+user+"&pass="+pass+"&chat_group_id="+chat_group_id+"&server_ip="+server_ip;
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
var start_chat_attempt_result = xmlhttp.responseText;
|
|
if (!start_chat_attempt_result) {
|
|
chat_alert_box("<?php echo _QXZ("ATTEMPT TO CREATE CHAT SESSION FAILED."); ?>");
|
|
} else if (start_chat_attempt_result=="NOT_PAUSED") {
|
|
chat_alert_box("<?php echo _QXZ("YOU MUST BE PAUSED TO INITIATE A CUSTOMER CHAT."); ?>");
|
|
} else if (start_chat_attempt_result=="NO_GROUP") {
|
|
chat_alert_box("<?php echo _QXZ("PLEASE SELECT A CHAT GROUP BEFORE STARTING A CHAT."); ?>");
|
|
} else if (start_chat_attempt_result=="FAILED_LIVE_STATUS") {
|
|
chat_alert_box("<?php echo _QXZ("UNABLE TO CHANGE LIVE AGENT STATUS"); ?>");
|
|
} else {
|
|
// parent.check_for_incoming_other('skip_email');
|
|
// DEACTIVATE PAUSE BUTTON - AGENTS SHOULD NOT BE ALLOWED TO TOGGLE THIS - THEY ARE ESSENTIALLY INCALL ONCE THEY START A CHAT EVEN IF THE CUSTOMER HASN'T JOINED YET
|
|
if (dial_method=="INBOUND_MAN")
|
|
{
|
|
window.parent.document.getElementById("DiaLControl").innerHTML = DiaLControl_inbound_manual_HTML_OFF;
|
|
}
|
|
else
|
|
{
|
|
window.parent.document.getElementById("DiaLControl").innerHTML = DiaLControl_auto_HTML_OFF;
|
|
}
|
|
chat_alert_box("<?php echo _QXZ("CHAT SESSION CREATED. INVITE CUSTOMER VIA EMAIL TO BEGIN."); ?>");
|
|
document.getElementById('chat_id').value=start_chat_attempt_result;
|
|
window.parent.document.vicidial_form.chat_id.value=start_chat_attempt_result;
|
|
document.getElementById('chat_creator').value=user;
|
|
document.getElementById('chat_creator_console').innerHTML="<BR/><BR/><input class='blue_btn' type='button' style=\"width:150px\" value=\"<?php echo _QXZ("INVITE"); ?>\" onClick=\"javascript:document.getElementById('email_window').style.display='block'\">\n<BR/><BR/><input class='red_btn' type='button' style=\"width:150px\" value=\"<?php echo _QXZ("END CHAT"); ?>\" onClick=\"EndChat()\">";
|
|
|
|
}
|
|
UpdateChatWindow();
|
|
}
|
|
}
|
|
delete xmlhttp;
|
|
}
|
|
}
|
|
|
|
function SendInvite() {
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
var lead_id=document.getElementById('lead_id').value;
|
|
var chat_id=document.getElementById('chat_id').value;
|
|
var chat_group_id=document.getElementById('chat_group_id').value;
|
|
var email=document.getElementById('email_invite').value;
|
|
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&action=send_invite&chat_id="+chat_id+"&chat_group_id="+chat_group_id+"&lead_id="+lead_id+"&user="+user+"&pass="+pass+"&email="+email;
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
var email_sent = xmlhttp.responseText;
|
|
if (email_sent)
|
|
{
|
|
parent.check_for_incoming_other(email_sent); // Force the agent interface to do it's thing for a live chat coming across, even though in this case the customer isn't in it yet. Sends lead ID to parent function as a flag, so as not to show the INVITE button when this page reloads
|
|
document.getElementById('email_window').style.display='none';
|
|
document.getElementById('chat_creator_console').innerHTML="<BR/><BR/><input class='red_btn' type='button' style=\"width:150px\" value=\"<?php echo _QXZ("END CHAT"); ?>\" onClick=\"EndChat()\">";
|
|
}
|
|
else
|
|
{
|
|
chat_alert_box("<?php echo _QXZ("There was a problem sending the email invite - please re-check your information and try again."); ?>"+email_sent);
|
|
}
|
|
}
|
|
}
|
|
delete xmlhttp;
|
|
}
|
|
}
|
|
|
|
function LeaveChat(extra_action) {
|
|
var chatIDField = document.getElementById('myElementId');
|
|
if (document.getElementById('chat_id'))
|
|
{
|
|
var chat_id=document.getElementById('chat_id').value;
|
|
var chat_creator=document.getElementById('chat_creator').value;
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&action=agent_leave_chat&chat_id="+chat_id+"&user="+user+"&pass="+pass;
|
|
// chat_alert_box(chat_query);
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
//if (chat_creator==user) {EndChat();}
|
|
if (extra_action=="close_window") {window.close();}
|
|
}
|
|
}
|
|
delete xmlhttp;
|
|
}
|
|
}
|
|
}
|
|
|
|
function EndChat(hangup_override) { // hangup_override comes from parent Iframe when you click the CALL HANGUP button. Added 2015-04-14 - not used yet.
|
|
var chat_id=document.getElementById('chat_id').value;
|
|
var chat_creator=document.getElementById('chat_creator').value;
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
var server_ip=document.getElementById('server_ip').value;
|
|
var lead_id=document.getElementById('lead_id').value; // used to determine if chat involved a customer. If so, don't allow START CHAT option until chat is fully terminated.
|
|
|
|
|
|
if (!chat_creator || !user || !chat_id) {
|
|
return false;
|
|
} else if (user!=chat_creator && chat_creator!='XFER') {
|
|
chat_alert_box("<?php echo _QXZ("Only the chat creator can end the chat"); ?>");
|
|
return false;
|
|
}
|
|
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&action=end_chat&chat_id="+chat_id+"&chat_creator="+chat_creator+"&user="+user+"&pass="+pass+"&lead_id="+lead_id+"&server_ip="+server_ip;
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
var finished_chat = xmlhttp.responseText;
|
|
finished_chat_text=finished_chat.split("|");
|
|
if (!hangup_override) {chat_alert_box(finished_chat_text[0]);} // Don't bother to alert if chat ends as the result of the agent clicking HANGUP CUSTOMER from the parent window
|
|
if (finished_chat_text[0].match(/Chat ended/))
|
|
{
|
|
document.getElementById('chat_creator_console').innerHTML=finished_chat_text[1];
|
|
document.getElementById('chat_group_id').value='';
|
|
// IF AGENT NEVER INVITED SOMEONE, THERE'S NO LEAD ATTACHED AND IT'S SAFE FOR THEM TO JUST GO BACK TO BEING PAUSED WITHOUT HAVING TO DO ANYTHING ELSE.
|
|
// HOWEVER, SINCE WE DEACTIVATED THE PAUSE BUTTON FROM THE StartChat() FUNCTION WE NEED TO REACTIVATE IT IN PAUSED MODE.
|
|
if (finished_chat_text[2]=="TOGGLE_DIAL_CONTROL")
|
|
{
|
|
if (dial_method=="INBOUND_MAN")
|
|
{
|
|
window.parent.document.getElementById("DiaLControl").innerHTML = DiaLControl_inbound_manual_HTML;
|
|
}
|
|
else
|
|
{
|
|
window.parent.document.getElementById("DiaLControl").innerHTML = DiaLControl_auto_HTML;
|
|
}
|
|
}
|
|
}
|
|
UpdateChatWindow();
|
|
}
|
|
}
|
|
delete xmlhttp;
|
|
}
|
|
}
|
|
|
|
function StartRefresh() {
|
|
if (!window.parent.document)
|
|
{
|
|
alert("This page cannot run outside of the Vicidial agent interface");
|
|
}
|
|
else
|
|
{
|
|
rInt=window.setInterval(function() {RefreshLiveChatWindow()}, <?php echo $customer_chat_refresh_milliseconds; ?>);
|
|
}
|
|
}
|
|
|
|
function ShowHideMembers(menuName, chat_id) {
|
|
submenu=document.getElementById(menuName);
|
|
if (submenu.getAttribute("rel")=="closed") {
|
|
submenu.style.display="block";
|
|
submenu.setAttribute("rel", "open");
|
|
} else {
|
|
submenu.style.display="none";
|
|
submenu.setAttribute("rel", "closed");
|
|
}
|
|
}
|
|
|
|
function ToggleSpan(span_name) {
|
|
var span_vis = document.getElementById(span_name).style;
|
|
if (span_vis.display=='none') { span_vis.display = 'block'; } else { span_vis.display = 'none'; }
|
|
}
|
|
|
|
function LoadXferOptions() {
|
|
var chat_group_id=document.getElementById('chat_group_id').value;
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
|
|
// Clear select menus
|
|
var GroupOptions = document.getElementById("ChatXferGroups");
|
|
while (GroupOptions.length > 1) {
|
|
GroupOptions.remove(GroupOptions.length-1);
|
|
}
|
|
var AgentOptions = document.getElementById("ChatXferAgents");
|
|
while (AgentOptions.length > 1) {
|
|
AgentOptions.remove(AgentOptions.length-1);
|
|
}
|
|
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&action=load_xfer_options&user="+user+"&pass="+pass+"&lead_id="+lead_id+"&server_ip="+server_ip+"&chat_group_id="+chat_group_id;
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
var xfer_options = xmlhttp.responseText;
|
|
if (xfer_options!="")
|
|
{
|
|
var xfer_options_array=xfer_options.split("\n");
|
|
var groups_array=xfer_options_array[0].split("|");
|
|
var group_names_array=xfer_options_array[1].split("|");
|
|
var agents_array=xfer_options_array[2].split("|");
|
|
var agent_names_array=xfer_options_array[3].split("|");
|
|
/*
|
|
var opt = document.createElement('option');
|
|
opt.value = "";
|
|
opt.innerHTML = "<?php echo _QXZ("-- Select a group to transfer to --"); ?>";
|
|
GroupOptions.appendChild(opt);
|
|
|
|
var opt = document.createElement('option');
|
|
opt.value = "";
|
|
opt.innerHTML = "<?php echo _QXZ("-- Select an agent to transfer to --"); ?>";
|
|
AgentOptions.appendChild(opt);
|
|
*/
|
|
for (var i = 0; i<groups_array.length; i++)
|
|
{
|
|
var opt = document.createElement('option');
|
|
opt.value = groups_array[i];
|
|
opt.innerHTML = group_names_array[i];
|
|
GroupOptions.appendChild(opt);
|
|
}
|
|
|
|
for (var i = 0; i<agents_array.length; i++)
|
|
{
|
|
var opt = document.createElement('option');
|
|
opt.value = agents_array[i];
|
|
opt.innerHTML = agent_names_array[i];
|
|
AgentOptions.appendChild(opt);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function SendChatXferSpan(selGroup, selAgent) {
|
|
var chat_id=document.getElementById('chat_id').value;
|
|
var chat_member_name=encodeURIComponent(document.getElementById('chat_member_name').value.trim());
|
|
var user=document.getElementById('user').value;
|
|
var pass=document.getElementById('pass').value;
|
|
var server_ip=document.getElementById('server_ip').value;
|
|
|
|
if ((selGroup==0 && selAgent==0) || (selGroup>0 && selAgent>0))
|
|
{
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
if (selGroup>0)
|
|
{
|
|
var chat_xfer_value=document.getElementById("ChatXferGroups").options[selGroup].value;
|
|
var chat_xfer_type="group";
|
|
}
|
|
else
|
|
{
|
|
var chat_xfer_value=document.getElementById("ChatXferAgents").options[selAgent].value;
|
|
var chat_xfer_type="agent";
|
|
}
|
|
}
|
|
|
|
var xmlhttp=false;
|
|
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
|
{
|
|
xmlhttp = new XMLHttpRequest();
|
|
}
|
|
if (xmlhttp)
|
|
{
|
|
chat_query = "&action=xfer_chat&chat_member_name="+chat_member_name+"&user="+user+"&pass="+pass+"&lead_id="+lead_id+"&chat_id="+chat_id+"&server_ip="+server_ip+"&chat_xfer_value="+chat_xfer_value+"&chat_xfer_type="+chat_xfer_type;
|
|
xmlhttp.open('POST', 'chat_db_query.php');
|
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
|
xmlhttp.send(chat_query);
|
|
xmlhttp.onreadystatechange = function()
|
|
{
|
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
|
{
|
|
var xfer_result_data = xmlhttp.responseText;
|
|
var xfer_result=xfer_result_data.split("|");
|
|
if (xfer_result[0]==0)
|
|
{
|
|
alert("<?php echo _QXZ("TRANSFER FAILED"); ?>");
|
|
}
|
|
else if (xfer_result[0]>1)
|
|
{
|
|
alert("<?php echo _QXZ("System error - multiple chats found"); ?>");
|
|
}
|
|
else
|
|
{
|
|
document.getElementById('chat_creator_console').innerHTML=''; // DO NOT MAKE ANY BUTTONS AVAILABLE AT THIS POINT FOR ENDING OR STARTING A CHAT!
|
|
document.getElementById('ChatConsoleSpan').style.display='none';
|
|
document.getElementById('XferConsoleSpan').style.display='none';
|
|
document.getElementById('chat_group_id').value='';
|
|
document.getElementById('chat_creator').value='XFER';
|
|
// IF AGENT NEVER INVITED SOMEONE, THERE'S NO LEAD ATTACHED AND IT'S SAFE FOR THEM TO JUST GO BACK TO BEING PAUSED WITHOUT HAVING TO DO ANYTHING ELSE.
|
|
// HOWEVER, SINCE WE DEACTIVATED THE PAUSE BUTTON FROM THE StartChat() FUNCTION WE NEED TO REACTIVATE IT IN PAUSED MODE.
|
|
if (xfer_result[2]=="TOGGLE_DIAL_CONTROL")
|
|
{
|
|
if (dial_method=="INBOUND_MAN")
|
|
{
|
|
window.parent.document.getElementById("DiaLControl").innerHTML = DiaLControl_inbound_manual_HTML;
|
|
}
|
|
else
|
|
{
|
|
window.parent.document.getElementById("DiaLControl").innerHTML = DiaLControl_auto_HTML;
|
|
}
|
|
}
|
|
UpdateChatWindow();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
window.onbeforeunload = LeaveChat;
|
|
</script>
|
|
</head>
|
|
|
|
<?php
|
|
if (!$user) {
|
|
echo "<body>"._QXZ("No user ID - no chat access. Sorry")."</body>";
|
|
exit;
|
|
}
|
|
|
|
$user_stmt="SELECT if(user_nickname!='' and user_nickname is not null, user_nickname, full_name) from vicidial_users where user='$user' limit 1;";
|
|
$user_rslt=mysql_to_mysqli($user_stmt, $link);
|
|
$inchat_html=""; $nochat_html="";
|
|
$autojoin_js_fx="StartRefresh();";
|
|
|
|
if (mysqli_num_rows($user_rslt)==0) {
|
|
if($outside_user_name && $chat_id) {
|
|
$inchat_html.="<input type='hidden' name='chat_member_name' id='chat_member_name' value='$outside_user_name'>";
|
|
$autojoin_js_fx.="JoinChat('$chat_id');";
|
|
} else {
|
|
$chat_stmt="SELECT chat_member_name from vicidial_chat_log where poster='$user' order by message_time desc limit 1;";
|
|
$chat_rslt=mysql_to_mysqli($chat_stmt, $link);
|
|
if (mysqli_num_rows($chat_rslt)==0) {
|
|
$nochat_html.="Please enter your name below before joining a chat:<BR>";
|
|
$nochat_html.="<input type='text' name='chat_member_name' id='chat_member_name' value='$full_name'>";
|
|
} else {
|
|
$chat_row=mysqli_fetch_row($chat_rslt);
|
|
$outside_user_name=$chat_row[0];
|
|
$inchat_html.="<input type='hidden' name='chat_member_name' id='chat_member_name' value='$outside_user_name'>";
|
|
$autojoin_js_fx.="JoinChat('$chat_id');";
|
|
}
|
|
}
|
|
} else {
|
|
$user_row=mysqli_fetch_row($user_rslt);
|
|
$inchat_html.="<input type='hidden' name='chat_member_name' id='chat_member_name' value='$user_row[0]'>";
|
|
$autojoin_js_fx.="JoinChat('$chat_id');";
|
|
}
|
|
|
|
if($child_window) {
|
|
$inchat_html.="<BR><BR><input type='button' class='red_btn' name='close_window_btn' id='close_window_btn' value=\""._QXZ("CLOSE WINDOW")."\" onClick='LeaveChat(\"close_window\")'>";
|
|
}
|
|
?>
|
|
<body onLoad="<?php echo $autojoin_js_fx; ?>" onUnload="javascript:clearInterval(rInt); LeaveChat();">
|
|
<?php
|
|
echo "<!-- ";
|
|
if ($DB)
|
|
{
|
|
echo "$user_stmt\n";
|
|
echo "$chat_stmt\n";
|
|
echo "$stmt\n";
|
|
}
|
|
echo "vdc_chat_display.php?user=$user&pass=$pass&lead_id=$lead_id&email=$email&chat_id=$chat_id -->\n";
|
|
?>
|
|
<form name='chat_form' action='<?php echo $PHP_SELF; ?>'>
|
|
<table width='100%' border='0'>
|
|
<tr>
|
|
<td class='chat_window' height='300' width='*'>
|
|
<span id='ChatDisplay' name='ChatDisplay' style="display:block;height:300px;overflow-y:auto;overflow-x:none;z-index:0;">
|
|
</span>
|
|
<!-- <span style="display:block;top:280px;right:25px;z-index:1"><img border="0" src="images/VICIchat_powered_logo.gif" width="123" height="30"></span> //-->
|
|
</td>
|
|
<td width='200' valign='top'>
|
|
<span id='ActiveChats' name='ActiveChats' style="overflow-y:auto; overflow-x:none;">
|
|
</span>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align='center'>
|
|
<?php
|
|
echo ($customer_chat_refresh_seconds!=1 ? "<center><font class='chat_timestamp bold' color='red'>** "._QXZ("Messages are on a")." ".$customer_chat_refresh_seconds."-"._QXZ("second delay")." **</font></center>" : "");
|
|
?>
|
|
<span id="ChatConsoleSpan" name="ChatConsoleSpan" style="display: block;">
|
|
<table width='400' align='center' border='0' cellpadding='0' cellspacing='0'>
|
|
<tr>
|
|
<td colspan='3' align='center'>
|
|
<textarea border='1' name='chat_message' id='chat_message' class='chat_window' cols='100' rows='4' onkeypress="if (event.keyCode==13 && !event.shiftKey) {SendMessage(this.form.chat_id.value, this.form.user.value, this.form.chat_message.value); return false;}"></textarea>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align='left' class='chat_message' valign='top'><input class='blue_btn' type='button' style="width:100px" value="<?php echo _QXZ("SEND MESSAGE"); ?>" onClick="SendMessage(this.form.chat_id.value, this.form.user.value, this.form.chat_message.value)"><BR><BR><input type='checkbox' id='MuteCustomerChatAlert' name='MuteCustomerChatAlert'><?php echo _QXZ("Mute alert sound"); ?>
|
|
</td>
|
|
<td align='right' class='chat_message' valign='top'><input class='blue_btn' type='button' style="width:100px" value="<?php echo _QXZ("CLEAR"); ?>" onClick="document.getElementById('chat_message').value=''"><BR><BR>
|
|
<?php
|
|
if ($user_level) {
|
|
echo "<input type='checkbox' name='private_message' id='private_message' value='1'>"._QXZ("Privacy ON");
|
|
}
|
|
?>
|
|
</td>
|
|
<td align='right' class='chat_message' valign='top'><input class='red_btn' type='button' style="width:100px" value="<?php echo _QXZ("TRANSFER"); ?>" onClick="ToggleSpan('ChatConsoleSpan'); ToggleSpan('XferConsoleSpan'); LoadXferOptions();"><BR><BR>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan='2' align='center'>
|
|
<?php
|
|
echo "$nochat_html$inchat_html";
|
|
?>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</span>
|
|
<span id="XferConsoleSpan" name="XferConsoleSpan" style="display: none;">
|
|
<table width='450' align='center' border='0' cellpadding='3' cellspacing='0'>
|
|
<tr>
|
|
<td align='right' width='100' class='chat_message'><?php echo _QXZ("Chat group"); ?>:</td>
|
|
<td align='left' width='240'>
|
|
<select name='ChatXferGroups' id='ChatXferGroups' onChange="document.getElementById('ChatXferAgents').selectedIndex='0'" class='chat_window' style="width:240px">
|
|
<option value=''><?php echo _QXZ("-- Select a group to transfer to --"); ?></option>
|
|
</select>
|
|
</td>
|
|
<td align='center' valign='middle' rowspan='2' width='*'><input class='blue_btn' type='button' style="width:100px" value="<?php echo _QXZ("TRANSFER CHAT"); ?>" onClick="SendChatXferSpan(document.getElementById('ChatXferGroups').selectedIndex, document.getElementById('ChatXferAgents').selectedIndex)"></td>
|
|
</tr>
|
|
<tr>
|
|
<td align='right' class='chat_message'><?php echo _QXZ("Agents"); ?>:</td>
|
|
<td align='left'>
|
|
<select name='ChatXferAgents' id='ChatXferAgents' onChange="document.getElementById('ChatXferGroups').selectedIndex='0'" class='chat_window' style="width:240px">
|
|
<option value=''><?php echo _QXZ("-- Select an agent to transfer to --"); ?></option>
|
|
</select>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align='center' colspan='3'><BR><input class='red_btn' type='button' style="width:100px" value="<?php echo _QXZ("CANCEL"); ?>" onClick="ToggleSpan('ChatConsoleSpan'); ToggleSpan('XferConsoleSpan');"></td>
|
|
</tr>
|
|
</table>
|
|
</span>
|
|
</td>
|
|
<td valign='middle' align='center' width='200' rowspan='2'>
|
|
<?php
|
|
|
|
if ($full_name) {
|
|
echo "<span id='chat_creator_console' name='chat_creator_console'>";
|
|
if (!$chat_id) {
|
|
echo "<BR/><BR/><input class='green_btn' type='button' style=\"width:150px\" value=\""._QXZ("START CHAT")."\" onClick=\"StartChat()\">";
|
|
|
|
echo "<BR/><BR/><select name='startchat_group_id' id='startchat_group_id' class='chat_window' onChange=\"document.getElementById('chat_group_id').value=this.value\">\n";
|
|
echo "<option value='' selected>--"._QXZ("SELECT A CHAT GROUP")."--</option>\n";
|
|
# CREATE LIST OF GroUP IDS to select
|
|
if (count($chat_group_ids)>0) {
|
|
$chat_group_idsSQL = implode("','", $chat_group_ids);
|
|
$chat_group_idsSQL = preg_replace("/\\\\|;/","",$chat_group_idsSQL);
|
|
$group_stmt="SELECT group_id, group_name from vicidial_inbound_groups where group_handling='CHAT' and group_id in ('$chat_group_idsSQL') order by group_name asc;";
|
|
$group_rslt=mysql_to_mysqli($group_stmt, $link);
|
|
while ($group_row=mysqli_fetch_row($group_rslt)) {
|
|
echo "<option value='".$group_row[0]."'>".$group_row[1]."</option>\n";
|
|
}
|
|
} else {
|
|
$vla_stmt="SELECT closer_campaigns from vicidial_live_agents where user='$user';";
|
|
$vla_rslt=mysql_to_mysqli($vla_stmt, $link);
|
|
if (mysqli_num_rows($vla_rslt)>0) {
|
|
$vla_row=mysqli_fetch_row($vla_rslt);
|
|
$closer_campaigns=trim($vla_row[0]);
|
|
echo "!$closer_campaigns!";
|
|
$closer_campaigns=preg_replace('/\s/', '\',\'', $closer_campaigns);
|
|
echo "*$closer_campaigns*";
|
|
$closer_campaigns_SQL="'".$closer_campaigns."'";
|
|
|
|
$group_stmt="SELECT group_id, group_name from vicidial_inbound_groups where group_handling='CHAT' and group_id in ($closer_campaigns_SQL) order by group_name asc;";
|
|
$group_rslt=mysql_to_mysqli($group_stmt, $link);
|
|
while ($group_row=mysqli_fetch_row($group_rslt)) {
|
|
echo "<option value='".$group_row[0]."'>".$group_row[1]."</option>\n";
|
|
}
|
|
}
|
|
}
|
|
echo "</select>\n";
|
|
}
|
|
if (isset($chat_creator) && $chat_creator==$user) {
|
|
if (!$email_invite_lead_id) { # Flag from sending an invite - this page reloads as a result and this below INVITE button must be prevented from being loaded
|
|
echo "<BR/><BR/><input class='blue_btn' type='button' style=\"width:150px\" value=\""._QXZ("INVITE")."\" onClick=\"javascript:document.getElementById('email_window').style.display='block'\">";
|
|
}
|
|
echo "<BR/><BR/><input class='red_btn' type='button' style=\"width:150px\" value=\""._QXZ("END CHAT")."\" onClick=\"EndChat()\">";
|
|
}
|
|
echo "</span>";
|
|
}
|
|
|
|
?>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align='center' height='50'>
|
|
<span id="email_window" style="display: none">
|
|
<table width='90%'>
|
|
<tr>
|
|
<td align='left' class='chat_message'><?php echo _QXZ("Enter email address of guest"); ?>: <input type='text' name='email_invite' id='email_invite' onkeypress="if (event.keyCode==13 && !event.shiftKey) {SendInvite(); return false;}"></td>
|
|
<td align='left'><input class='green_btn' type='button' style="width:150px" value="<?php echo _QXZ("SEND"); ?>" onClick="SendInvite()"></td>
|
|
<td align='center'><input class='red_btn' type='button' style="width:150px" value="<?php echo _QXZ("HIDE"); ?>" onClick="javascript:document.getElementById('email_window').style.display='none'"></td>
|
|
</tr>
|
|
</table>
|
|
</span>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<input type='hidden' id='user' name='user' value='<?php echo $user; ?>'>
|
|
<input type='hidden' id='chat_id' name='chat_id' value='<?php echo $chat_id; ?>'>
|
|
<input type='hidden' id='chat_group_id' name='chat_group_id' value='<?php echo $chat_group_id; ?>'>
|
|
<input type='hidden' id='chat_creator' name='chat_creator' value='<?php echo (isset($chat_creator) ? $chat_creator : ""); ?>'>
|
|
<input type='hidden' id='live_message_count_field' name='live_message_count_field' value='0'>
|
|
<input type='hidden' id='pass' name='pass' value='<?php echo $pass; ?>'>
|
|
<input type='hidden' id='lead_id' name='lead_id' value='<?php echo $lead_id; ?>'>
|
|
<input type='hidden' id='server_ip' name='server_ip' value='<?php echo $server_ip; ?>'>
|
|
<audio id='CustomerChatAudioAlertFile'><source src="sounds/chat_alert.mp3" type="audio/mpeg"></audio>
|
|
</form>
|
|
</body>
|
|
</html>
|