Joywork/cron/mts_call.php

397 lines
17 KiB
PHP
Raw Permalink Normal View History

2026-05-22 20:21:54 +02:00
<?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);
//Функция для записи звонков в базу
function read_phone($mts, $p, $agency_id, $type, $main_user_id, $dataApi){
//echo $agency_id.' -- '. $only_widget."<br>";
//поиск пользователя
//echo $p->user_find_number."++<br>";
$user_id = $mts -> find_user($p->user_find_number);
$source = 0;
$new_client = false;
$funnel_id = 0;
if($user_id == 0) $user_id = $main_user_id;
//echo $user_id.'<br>';
if ($agency_id == 17664){
$funnel_id = 1180;
}
if($user_id != 0){
//Поиск клиента
$client_id = $mts -> find_client($p->client_find_number);
$source = $mts->findSource($mts->ver_phone($p->source_find));
if($client_id == 0 && $dataApi['only_widget'] == 0){
$new_client = true;
$sql_cl_mango = "INSERT INTO `clients` (fio, phone, opis, id_agent, date_add, who_work, source, confirm, stage, funnel_id) " .
" VALUES ('Клиент mts', '".$mts->ver_phone($p->client_find_number)."', '".$p->comment."', {$user_id}, '".date('Y-m-d H:i:s', $p->callTime)."', {$user_id}, {$source}, '1', '1', {$funnel_id})";
if($agency_id == 12061){
if($type == 'abonentMtsAnswer' || $type =='abonentMtsNoAnswer'){
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 == 'abonentMtsAnswer'){
$cl_stage = $mts -> 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 &laquo;Закрыт&raquo; на &laquo;Новый&raquo; (По входящему звонку mts)";
$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;
$record=$mts->recordSaveMTS($p,$agency_id);
if(!empty($record) && $record != '[]'){
$isRecord = true;
}
$sql_m = "SELECT id FROM user_client_events WHERE client_id = {$client_id} AND create_date = '".date('Y-m-d H:i:s', $p->callTime)."'".
" AND `type` = 'call' AND mts = 1 AND tracking = 0";
$q_m = mysql_query($sql_m);
if(mysql_num_rows($q_m) == 0){
//Поиск чей клиент
$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 == 'abonentMtsAnswer'){
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 == 'mtsAbonentNoAnswer'){
$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, mts) ".
"VALUES (".$r_t['user_id'].", {$client_id}, '".date('Y-m-d H:i:s', $p->callTime)."', '".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, mts, record) ".
"VALUES ({$who_work}, {$client_id}, '".date('Y-m-d H:i:s', $p->callTime)."', '".date('Y-m-d H:i:s', $p->callTime)."', 'call', '".$p->comment_in."', 1, {$user_id}, 1, '".$record."')";
//echo $sql_in_ev.'</br>';
mysql_query($sql_in_ev);
}
} else if($isRecord) {
$r_m = mysql_fetch_assoc($q_m);
if(empty($r_m['record']) || $r_m['record'] == '[]'){
$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'];
}
mysql_query("UPDATE user_client_events SET calendar_view = 1, record='".$record."', comment='{$p->comment_in}', user_id={$who_work}, from_id={$user_id} WHERE id = ".$r_m['id']);
}
}
//Поиск заявки по клиенту
if($dataApi['is_req'] > 0){
if(!$isRecord){
$record = $mts->recordSaveMTS($p,$agency_id);
$isRecord = true;
}
if($agency_id == 12061){
$funnel_id = 573;
} else if ($agency_id == 17664){
$funnel_id = 1180;
}
$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->callTime)."'".
" AND user_id={$user_id} AND `type` = 'call' AND mts = 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, mts, record) ".
"VALUES ($req[who_work], $req[id], '".date('Y-m-d H:i:s', $p->callTime)."', '".date('Y-m-d H:i:s', $p->callTime)."', 'call', '".$p->comment_in."', 1, {$user_id}, 1, '".$record."')";
mysql_query($sql_in_ev);
}
} else {
$nameReq = 'Заявка МТС';
$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, source={$source}, who_work={$user_id}, description='{$req_comm}'";
if($funnel_id > 0) {
$sql_req .= ", funnel_id={$funnel_id}";
$reqClass = new Requisitions();
}
if($agency_id == 12061){
if($type == 'abonentMtsAnswer' || $type =='abonentMtsNoAnswer'){
mysql_query($sql_req);
$req_id = mysql_insert_id();
if($req_id > 0 && $funnel_id > 0){
$reqClass->get_class_etap($req_id, $funnel_id);
}
}
if(isset($req_id) && $req_id > 0){
$sql_in_ev = "INSERT INTO user_client_events (user_id, req_id, create_date, schedule_date, `type`, comment, calendar_view, from_id, mts, record) ".
"VALUES ($user_id, $req_id, '".date('Y-m-d H:i:s', $p->callTime)."', '".date('Y-m-d H:i:s', $p->callTime)."', 'call', '".$p->comment_in."', 1, {$user_id}, 1, '".$record."')";
mysql_query($sql_in_ev);
}
} else{
mysql_query($sql_req);
$req_id = mysql_insert_id();
if($req_id > 0 && $funnel_id > 0){
$reqClass->get_class_etap($req_id, $funnel_id);
}
if(isset($req_id) && $req_id > 0){
$sql_in_ev = "INSERT INTO user_client_events (user_id, req_id, create_date, schedule_date, `type`, comment, calendar_view, from_id, mts, record) ".
"VALUES ($user_id, $req_id, '".date('Y-m-d H:i:s', $p->callTime)."', '".date('Y-m-d H:i:s', $p->callTime)."', 'call', '".$p->comment_in."', 1, {$user_id}, 1, '".$record."')";
mysql_query($sql_in_ev);
}
}
}
}
}
}
}
header('Content-Type: application/json');
$sql_tel = "SELECT * FROM agency_mango WHERE `type` = 'mts'";
//echo $sql_tel;
$q_tel = mysql_query($sql_tel);
while($r_tel = mysql_fetch_assoc($q_tel)){
$api_key = $r_tel['api_key'];
$last_date = $r_tel['last_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'];
$phones_type=array();
$mts = new MtsApiClass($api_key);
$calls_list = array();
if($mts->validate_agency($agency_id)){
$usersMts = array();
$usersCall=json_decode($mts->getUsers());
if (!empty($usersCall)) {
if (is_object($usersCall)) {
$usersCall = (array)$usersCall;
}
foreach($usersCall as $userM){
//Проверка подписки
$mts->chechSubscription($userM);
if((time() - $lost_update) >= 86400){
$mts->saveUser($userM, $agency_id);
}
}
}
if((time() - $lost_update) >= 86400){
$sql_up_tel = "UPDATE agency_mango SET lost_update = '".time()."' WHERE id = ".$r_tel['id'];
mysql_query($sql_up_tel);
}
$mts->setUsers($agency_id);
//История вызовов
$start_date = (strtotime($last_date) - 2*60*60)*1000;
$end_date = time()*1000;
//echo $start_date."\n";
//echo $end_date."\n";
$arrGroup = array();
$page = 0;
$pages = 1;
$calls = $mts->callHistory($start_date, $end_date, $page);
if(isset($calls->totalElements) && $calls->totalElements > 0){
//echo $calls->totalElements."\n";
$calls_list[0] = $calls;
if($calls->totalElements > 100){
$pages = $calls->totalPages;
// echo "страниц ".$pages."\n";
}
if($pages > 1){
for($i = 1; $i<=($pages-1); $i++){
$page = $i;
$calls_list[$i] = $mts->callHistory($start_date, $end_date, $page);
}
}
//var_dump($calls_list);
$ii = 0;
foreach($calls_list as $key => $calls){
foreach($calls->content as $call){
$call->callTime = ceil($call->callTime/1000);
// echo date('d.m.Y H:i:s', $call->callTime)."\n";
//if(!in_array($call->callGroupId, $arrGroup) || $call->status == 'PLACED'){
$arrGroup[] = $call->callGroupId;
$call_id = $mts->stat($call, $agency_id, $r_tel['only_widget']);
$user_find_number = 0;
$type = $mts->get_phone_type($call);
switch ($type){
case 'mtsAbonentAnswer': {
$call->comment = 'Клиент записан по исходящему звонку в mts';
$call->comment_in = 'Исходящий звонок в МТС';
$call->user_find_number = $call->callingNumber;
$user_find_number = $call->callingNumber;
$call->source_find = $call->callingNumber;
$call->client_find_number = $call->calledNumber;
$call->comment_in .= ' '.'(Сотрудник '.$call->abonentName.')';
$phones_type['mtsAbonentAnswer'][] = $call;
break;
}
case 'abonentMtsAnswer': {
$call->comment = 'Клиент записан по входящему звонку в mts';
$call->comment_in = 'Входящий звонок в МТС';
$call->user_find_number = $call->calledNumber;
$user_find_number = $call->calledNumber;
$call->source_find = $call->calledNumber;
$call->client_find_number = $call->callingNumber;
$call->comment_in .= ' '.'(Сотрудник '.$call->abonentName.')';
$phones_type['abonentMtsAnswer'][] = $call;
break;
}
case 'mtsAbonentNoAnswer': {
$call->comment = 'Клиент записан по исходящему звонку в mts';
$call->comment_in = 'Исходящий звонок в МТС.<br>Абонент не ответил';
$call->user_find_number = $call->callingNumber;
$user_find_number = $call->callingNumber;
$call->source_find = $call->callingNumber;
$call->client_find_number = $call->calledNumber;
$call->comment_in .= ' '.'(Сотрудник '.$call->abonentName.')';
$phones_type['mtsAbonentNoAnswer'][] = $call;
break;
}
case 'abonentMtsNoAnswer':{
$call->comment = 'Клиент записан по входящему звонку в mts';
$call->comment_in = 'Пропущеный входящий звонок в МТС';
$call->user_find_number = $call->calledNumber;
$user_find_number = $call->calledNumber;
$call->source_find = $call->calledNumber;
$call->client_find_number = $call->callingNumber;
$call->comment_in .= ' '.'(Сотрудник '.$call->abonentName.')';
$phones_type['abonentMtsNoAnswer'][] = $call;
break;
}
}
$mts->save_user_call($call_id, $user_find_number, $main_user_id);
//}
//$ii++;
}
//echo "ii".$ii."\n";
}
}
if(isset($phones_type['mtsAbonentAnswer'])){
foreach ($phones_type['mtsAbonentAnswer'] as $p) {
read_phone($mts, $p, $agency_id, 'mtsAbonentAnswer', $main_user_id, $r_tel);
}
}
if(isset($phones_type['abonentMtsAnswer'])){
foreach ($phones_type['abonentMtsAnswer'] as $p) {
read_phone($mts, $p, $agency_id, 'abonentMtsAnswer', $main_user_id, $r_tel);
}
}
if(isset($phones_type['mtsAbonentNoAnswer'])){
foreach ($phones_type['mtsAbonentNoAnswer'] as $p) {
read_phone($mts, $p, $agency_id, 'mtsAbonentNoAnswer', $main_user_id, $r_tel);
}
}
if(isset($phones_type['abonentMtsNoAnswer'])){
foreach ($phones_type['abonentMtsNoAnswer'] as $p) {
read_phone($mts, $p, $agency_id, 'abonentMtsNoAnswer', $main_user_id, $r_tel);
}
}
$sql_up_tel = "UPDATE agency_mango SET last_date = '".date('Y-m-d H:i:s')."' WHERE id = ".$r_tel['id'];
mysql_query($sql_up_tel);
}
}