Joywork/cron/mts_call.php
2026-05-22 21:21:54 +03:00

397 lines
17 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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);
}
}