308 lines
15 KiB
PHP
308 lines
15 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
|||
|
|
|
|||
|
|
ini_set('error_reporting', E_ALL);
|
|||
|
|
ini_set('display_errors', 1);
|
|||
|
|
ini_set('display_startup_errors', 1);
|
|||
|
|
header('Content-Type: application/json');
|
|||
|
|
//Функция для записи звонков в базу
|
|||
|
|
function read_phone($tele2, $p, $agency_id, $type, $main_user_id, $dataApi){
|
|||
|
|
//echo $agency_id.' -- '. $only_widget."<br>";
|
|||
|
|
//поиск пользователя
|
|||
|
|
//echo $p->user_find_number."++<br>";
|
|||
|
|
$user_id = $tele2 -> find_user($p->user_find_number);
|
|||
|
|
|
|||
|
|
//echo $user_id.'<br>';
|
|||
|
|
$new_client = false;
|
|||
|
|
if($user_id == 0) $user_id = $main_user_id;
|
|||
|
|
//echo $user_id.'<br>';
|
|||
|
|
if($user_id != 0){
|
|||
|
|
//Поиск клиента
|
|||
|
|
$client_id = $tele2 -> find_client($p->client_find_number);
|
|||
|
|
|
|||
|
|
$source = $tele2->findSource($tele2->ver_phone($p->source_find));
|
|||
|
|
if($client_id == 0){
|
|||
|
|
$new_client = true;
|
|||
|
|
|
|||
|
|
$sql_cl_mango = "INSERT INTO `clients` (fio, phone, opis, id_agent, date_add, who_work, confirm, stage) " .
|
|||
|
|
" VALUES ('Клиент tele2', '".$tele2->ver_phone($p->client_find_number)."', '".$p->comment."', {$user_id}, '".date('Y-m-d H:i:s', $p->date)."', {$user_id}, '1', '1')";
|
|||
|
|
|
|||
|
|
//echo $sql_cl_mango."\n";
|
|||
|
|
if($agency_id == 21939 || $agency_id == 19793){
|
|||
|
|
if($type == 'abonentTele2NoAnswer' || $type == 'abonentTele2Answer'){
|
|||
|
|
mysql_query($sql_cl_mango);
|
|||
|
|
$client_id = mysql_insert_id();
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
mysql_query($sql_cl_mango);
|
|||
|
|
$client_id = mysql_insert_id();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($client_id != 0){
|
|||
|
|
|
|||
|
|
if($type == 'abonentTele2Answer'){
|
|||
|
|
$cl_stage = $tele2 -> get_client_stage();
|
|||
|
|
//Перевод клиента в стадию "Новый", если он был закрыт
|
|||
|
|
if($cl_stage == 8 || $cl_stage == 10){
|
|||
|
|
$up_client = "UPDATE `clients` SET `stage`='1', `who_work`='{$user_id}', `deleted` = 0 WHERE `id`={$client_id}";
|
|||
|
|
mysql_query($up_client);
|
|||
|
|
$dop_text = "c «Закрыт» на «Новый» (По входящему звонку tele2)";
|
|||
|
|
$in_ev = "INSERT INTO `events_clients` (`user_id`, `client_id`, `event`, `dop_text`, `read`) VALUES ('{$user_id}', '{$client_id}', 'stageedit', '{$dop_text}', 1)";
|
|||
|
|
mysql_query($in_ev);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$record = '';
|
|||
|
|
$isRecord = false;
|
|||
|
|
|
|||
|
|
$sql_m = "SELECT id FROM user_client_events WHERE client_id = {$client_id} AND create_date = '".date('Y-m-d H:i:s', $p->date)."'".
|
|||
|
|
" AND `type` = 'call' AND tele2 = 1 AND tracking = 0";
|
|||
|
|
|
|||
|
|
|
|||
|
|
$q_m = mysql_query($sql_m);
|
|||
|
|
|
|||
|
|
if(mysql_num_rows($q_m) == 0){
|
|||
|
|
|
|||
|
|
$record=$tele2->recordSaveTele2($p,$agency_id);
|
|||
|
|
if(!empty($record)){
|
|||
|
|
$isRecord = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//Поиск чей клиент
|
|||
|
|
$sql_who = "SELECT who_work FROM clients WHERE id = {$client_id}";
|
|||
|
|
$q_who = mysql_query($sql_who);
|
|||
|
|
$r_who = mysql_fetch_assoc($q_who);
|
|||
|
|
$who_work = $user_id;
|
|||
|
|
if($r_who['who_work'] != 0){
|
|||
|
|
$who_work = $r_who['who_work'];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* if($type == 'abonentTele2Answer'){
|
|||
|
|
if(!$new_client && $who_work != $user_id){
|
|||
|
|
$tg_notif = "INSERT INTO telephony_notifications (user_id, who_work, from_mes, to_mes, client_id, type_phone) ".
|
|||
|
|
"VALUES ({$user_id},{$who_work},0,1,{$client_id}, 1),".
|
|||
|
|
"({$who_work},{$user_id},1,0,{$client_id}, 1)";
|
|||
|
|
mysql_query($tg_notif);
|
|||
|
|
}
|
|||
|
|
}*/
|
|||
|
|
|
|||
|
|
//Поиск отслеживаемого звонка
|
|||
|
|
$sql_t = "SELECT * FROM user_client_events WHERE client_id = {$client_id} AND user_id={$who_work} AND `type` = 'call' AND tracking = 1 AND calendar_view = 0";
|
|||
|
|
$q_t = mysql_query($sql_t);
|
|||
|
|
if(mysql_num_rows($q_t) > 0){
|
|||
|
|
$r_t = mysql_fetch_assoc($q_t);
|
|||
|
|
mysql_query("UPDATE user_client_events SET calendar_view = 1, record='".$record."' WHERE id = ".$r_t['id']);
|
|||
|
|
if($type == 'tele2AbonentNoAnswer'){
|
|||
|
|
$sql_in_ev = "INSERT INTO user_client_events (user_id, client_id, create_date, schedule_date_to, schedule_date, `type`, comment, calendar_view, from_id, tele2) ".
|
|||
|
|
"VALUES (".$r_t['user_id'].", {$client_id}, '".date('Y-m-d H:i:s', $p->date)."', '".date('Y-m-d H:i:s')."', '".date('Y-m-d H:i:s', time()+3600)."', 'call', '".$r_t['comment'].' '.$p->comment_in."', 0, ".$r_t['from_id'].", 1)";
|
|||
|
|
mysql_query($sql_in_ev);
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
$sql_in_ev = "INSERT INTO user_client_events (user_id, client_id, create_date, schedule_date, `type`, comment, calendar_view, from_id, tele2, record) ".
|
|||
|
|
"VALUES ({$who_work}, {$client_id}, '".date('Y-m-d H:i:s', $p->date)."', '".date('Y-m-d H:i:s', $p->date)."', 'call', '".$p->comment_in."', 1, {$user_id}, 1, '".$record."')";
|
|||
|
|
//echo $sql_in_ev.'</br>';
|
|||
|
|
mysql_query($sql_in_ev);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//Поиск заявки по клиенту
|
|||
|
|
if($dataApi['is_req'] > 0){
|
|||
|
|
if(!$isRecord){
|
|||
|
|
|
|||
|
|
$record = $tele2->recordSaveTele2($p,$agency_id);
|
|||
|
|
$isRecord = true;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$req_s = "SELECT id, user_id, who_work FROM requisitions WHERE client_id=$client_id and who_work={$user_id} and cancel=0 and deleted=0";
|
|||
|
|
|
|||
|
|
$req_q = mysql_query($req_s);
|
|||
|
|
$req_rows = mysql_num_rows($req_q);
|
|||
|
|
$req_comm = str_replace(["Клиент","записан"], ["Заявка","записана"], $p->comment);
|
|||
|
|
if($req_rows > 0){
|
|||
|
|
|
|||
|
|
$req = mysql_fetch_assoc($req_q);
|
|||
|
|
$sql_m = "SELECT id FROM user_client_events WHERE req_id = $req[id] AND create_date = '".date('Y-m-d H:i:s', $p->date)."'".
|
|||
|
|
" AND user_id={$user_id} AND `type` = 'call' AND tele2 = 1 AND tracking = 0";
|
|||
|
|
$q_m = mysql_query($sql_m);
|
|||
|
|
if(mysql_num_rows($q_m) == 0){
|
|||
|
|
$sql_in_ev = "INSERT INTO user_client_events (user_id, req_id, create_date, schedule_date, `type`, comment, calendar_view, from_id, tele2, record) ".
|
|||
|
|
"VALUES ($req[who_work], $req[id], '".date('Y-m-d H:i:s', $p->date)."', '".date('Y-m-d H:i:s', $p->date)."', 'call', '".$p->comment_in."', 1, {$user_id}, 1, '".$record."')";
|
|||
|
|
mysql_query($sql_in_ev);
|
|||
|
|
}
|
|||
|
|
} else {
|
|||
|
|
$nameReq = 'Заявка Теле2';
|
|||
|
|
$sql_cl = "SELECT fio FROM clients WHERE id={$client_id}";
|
|||
|
|
$q_cl = mysql_query($sql_cl);
|
|||
|
|
$r_cl = mysql_fetch_assoc($q_cl);
|
|||
|
|
if(isset($r_cl['fio'])){
|
|||
|
|
$nameReq = "Подбор объекта для ".$r_cl['fio'];
|
|||
|
|
}
|
|||
|
|
$sql_req = "INSERT INTO `requisitions` SET name='{$nameReq}', user_id={$user_id}, integration=1, client_id={$client_id}, stage=1, type_id=1, who_work={$user_id}, description='{$req_comm}'";
|
|||
|
|
if($agency_id == 19793){
|
|||
|
|
if($type == 'abonentTele2NoAnswer' || $type == 'abonentTele2Answer'){
|
|||
|
|
mysql_query($sql_req);
|
|||
|
|
$req_id = mysql_insert_id();
|
|||
|
|
$sql_in_ev = "INSERT INTO user_client_events (user_id, req_id, create_date, schedule_date, `type`, comment, calendar_view, from_id, tele2, record) ".
|
|||
|
|
"VALUES ($user_id, $req_id, '".date('Y-m-d H:i:s', $p->date)."', '".date('Y-m-d H:i:s', $p->date)."', 'call', '".$p->comment_in."', 1, {$user_id}, 1, '".$record."')";
|
|||
|
|
mysql_query($sql_in_ev);
|
|||
|
|
}
|
|||
|
|
} else
|
|||
|
|
if($agency_id != 13285 && $agency_id != 22045 && $agency_id != 22282 && $agency_id != 21939){
|
|||
|
|
mysql_query($sql_req);
|
|||
|
|
$req_id = mysql_insert_id();
|
|||
|
|
$sql_in_ev = "INSERT INTO user_client_events (user_id, req_id, create_date, schedule_date, `type`, comment, calendar_view, from_id, tele2, record) ".
|
|||
|
|
"VALUES ($user_id, $req_id, '".date('Y-m-d H:i:s', $p->date)."', '".date('Y-m-d H:i:s', $p->date)."', 'call', '".$p->comment_in."', 1, {$user_id}, 1, '".$record."')";
|
|||
|
|
mysql_query($sql_in_ev);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
$sql_tel = "SELECT * FROM agency_tele2";
|
|||
|
|
//echo $sql_tel;
|
|||
|
|
|
|||
|
|
$q_tel = mysql_query($sql_tel);
|
|||
|
|
|
|||
|
|
while($r_tel = mysql_fetch_assoc($q_tel)){
|
|||
|
|
$company_id = $r_tel['company_id'];
|
|||
|
|
$region_id = $r_tel['region_id'];
|
|||
|
|
$lost_date= $r_tel['lost_date'];
|
|||
|
|
$agency_id =$r_tel['agency_id'];
|
|||
|
|
$main_user_id = $r_tel['main_user'];
|
|||
|
|
$lost_update = $r_tel['lost_update'];
|
|||
|
|
$gmt = (int)$r_tel['gmt'];
|
|||
|
|
$access_token = $r_tel['access_token'];
|
|||
|
|
$refresh_token = $r_tel['refresh_token'];
|
|||
|
|
//$refresh_token = 'eyJhbGciOiJIUzUxMiJ9.eyJVc2VyRGV0YWlsc0ltcGwiOnsiY29tcGFueUlkIjo0MzEyLCJ1c2VySWQiOjExNTk4LCJsb2dpbiI6Ijc5MDEwODcwMzAwIn0sImV4cCI6MTY2MjM4MjM3NSwic3ViIjoiUkVGUkVTSF9PUEVOQVBJX1RPS0VOIn0.iL7FvfjDIKtHVewQdCVL2pCipG-Uv1qlm9ESa-fuVQ43FJfsfqKjyIYLiqWU9dHUbDSVfx7sQQaOiS_t81vpGQ';
|
|||
|
|
//echo $refresh_token."\n";
|
|||
|
|
$phones_type=array();
|
|||
|
|
$tele2 = new Tele2ApiClass($company_id, $region_id, $refresh_token, $access_token);
|
|||
|
|
// echo urldecode('https://ats2.tele2.ru/crm/openapi/call-records/info');
|
|||
|
|
|
|||
|
|
if($tele2->validate_agency($agency_id) && $tele2->getToken($agency_id)){
|
|||
|
|
$usersTele2 = array();
|
|||
|
|
$usersCall = json_decode($tele2->getUsers());
|
|||
|
|
// var_dump($usersCall);
|
|||
|
|
|
|||
|
|
foreach($usersCall as $user){
|
|||
|
|
$tele2->saveUser($user, $agency_id);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$tele2->setUsers($agency_id);
|
|||
|
|
|
|||
|
|
//История вызовов
|
|||
|
|
//('Ymd',(strtotime($last_date) - 4*60*60)).'T'.date('His', (strtotime($last_date) - 4*60*60)).'Z';
|
|||
|
|
// $start_date = strtotime($lost_date) - 60*60;
|
|||
|
|
//$end_date = time();
|
|||
|
|
$start_date = date('Y-m-d', (strtotime($lost_date) - 4*60*60)).'T'. date('H:i:s', (strtotime($lost_date) - 4*60*60)).'+03:00';
|
|||
|
|
// echo $start_date;
|
|||
|
|
//$start_date = date('Y-m-d H:i:s', (strtotime('2020-10-10 10:40:00') - 2*60*60));
|
|||
|
|
$end_date= date('Y-m-d').'T'.date('H:i:s').'+03:00';
|
|||
|
|
|
|||
|
|
$calls = $tele2->callHistory(rawurlencode($start_date), rawurlencode($end_date));
|
|||
|
|
|
|||
|
|
foreach($calls as $call){
|
|||
|
|
//var_dump($call);
|
|||
|
|
$call->date = strtotime($call->date) + $gmt*60*60;
|
|||
|
|
$call_id = $tele2->stat($call, $agency_id);
|
|||
|
|
//echo $call_id."\n";
|
|||
|
|
$user_find_number = 0;
|
|||
|
|
if(!isset($call->calleeNumber)){
|
|||
|
|
$call->calleeNumber = $call->destinationNumber;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$type = $tele2->get_phone_type($call);
|
|||
|
|
switch ($type){
|
|||
|
|
case 'tele2AbonentAnswer': {
|
|||
|
|
$call->comment = 'Клиент записан по исходящему звонку в tele2';
|
|||
|
|
$call->comment_in = 'Исходящий звонок в Теле2';
|
|||
|
|
$call->user_find_number = $call->callerNumber;
|
|||
|
|
$user_find_number = $call->callerNumber;
|
|||
|
|
$call->source_find = $call->callerNumber;
|
|||
|
|
$call->client_find_number = $call->calleeNumber;
|
|||
|
|
$call->comment_in .= ' '.'(Сотрудник '.$call->callerName.')';
|
|||
|
|
|
|||
|
|
$phones_type['tele2AbonentAnswer'][] = $call;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 'abonentTele2Answer': {
|
|||
|
|
|
|||
|
|
$call->comment = 'Клиент записан по входящему звонку в tele2';
|
|||
|
|
$call->comment_in = 'Входящий звонок в Теле2';
|
|||
|
|
$call->user_find_number = $call->calleeNumber;
|
|||
|
|
$user_find_number = $call->calleeNumber;
|
|||
|
|
$call->source_find = $call->calleeNumber;
|
|||
|
|
$call->client_find_number = $call->callerNumber;
|
|||
|
|
$call->comment_in .= ' '.'(Сотрудник '.(isset($call->calleeName) ? $call->calleeName : '').')';
|
|||
|
|
|
|||
|
|
$phones_type['abonentTele2Answer'][] = $call;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 'tele2AbonentNoAnswer': {
|
|||
|
|
$call->comment = 'Клиент записан по исходящему звонку в tele2';
|
|||
|
|
$call->comment_in = 'Исходящий звонок в Теле2.<br>Абонент не ответил';
|
|||
|
|
$call->user_find_number = $call->callerNumber;
|
|||
|
|
$user_find_number = $call->callerNumber;
|
|||
|
|
$call->source_find = $call->callerNumber;
|
|||
|
|
$call->client_find_number = $call->calleeNumber;
|
|||
|
|
$call->comment_in .= ' '.'(Сотрудник '.$call->callerName.')';
|
|||
|
|
|
|||
|
|
$phones_type['tele2AbonentNoAnswer'][] = $call;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 'abonentTele2NoAnswer':{
|
|||
|
|
$call->comment = 'Клиент записан по входящему звонку в tele2';
|
|||
|
|
$call->comment_in = 'Пропущеный входящий звонок в Теле2';
|
|||
|
|
$call->user_find_number = $call->calleeNumber;
|
|||
|
|
$user_find_number = $call->calleeNumber;
|
|||
|
|
$call->source_find = $call->calleeNumber;
|
|||
|
|
$call->client_find_number = $call->callerNumber;
|
|||
|
|
$call->comment_in .= ' '.'(Сотрудник '.(isset($call->calleeName) ? $call->calleeName : '').')';
|
|||
|
|
|
|||
|
|
$phones_type['abonentTele2NoAnswer'][] = $call;
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
$tele2->save_user_call($call_id, $user_find_number, $main_user_id);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(isset($phones_type['tele2AbonentAnswer'])){
|
|||
|
|
foreach ($phones_type['tele2AbonentAnswer'] as $p) {
|
|||
|
|
read_phone($tele2, $p, $agency_id, 'tele2AbonentAnswer', $main_user_id, $r_tel);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(isset($phones_type['abonentTele2Answer'])){
|
|||
|
|
foreach ($phones_type['abonentTele2Answer'] as $p) {
|
|||
|
|
read_phone($tele2, $p, $agency_id, 'abonentTele2Answer', $main_user_id, $r_tel);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(isset($phones_type['tele2AbonentNoAnswer'])){
|
|||
|
|
foreach ($phones_type['tele2AbonentNoAnswer'] as $p) {
|
|||
|
|
read_phone($tele2, $p, $agency_id, 'tele2AbonentNoAnswer', $main_user_id, $r_tel);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if(isset($phones_type['abonentTele2NoAnswer'])){
|
|||
|
|
foreach ($phones_type['abonentTele2NoAnswer'] as $p) {
|
|||
|
|
read_phone($tele2, $p, $agency_id, 'abonentTele2NoAnswer', $main_user_id, $r_tel);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sql_up_tel = "UPDATE agency_tele2 SET lost_date = '".date('Y-m-d H:i:s')."' WHERE id = ".$r_tel['id'];
|
|||
|
|
// echo $sql_up_tel;
|
|||
|
|
mysql_query($sql_up_tel);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|