369 lines
15 KiB
PHP
369 lines
15 KiB
PHP
|
|
<?php
|
|||
|
|
require_once($_SERVER['DOCUMENT_ROOT']."/config.php");
|
|||
|
|
function clearInputElement($el2) // очистка входящего элимента
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
$el = $el2;
|
|||
|
|
|
|||
|
|
$el = strip_tags($el); // от тегов
|
|||
|
|
|
|||
|
|
$el = htmlspecialchars($el); // от кавычек и прочего
|
|||
|
|
|
|||
|
|
$el = str_replace("\n", "<br>", $el);
|
|||
|
|
|
|||
|
|
$el = str_replace("\r", "", $el);
|
|||
|
|
|
|||
|
|
$el = mysql_real_escape_string($el); // от MySQL-инъекций
|
|||
|
|
|
|||
|
|
$el = trim($el); // от лишних пробелов
|
|||
|
|
|
|||
|
|
$el = stripslashes($el); // от слэшей
|
|||
|
|
|
|||
|
|
return $el;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
header('Content-Type: application/json');
|
|||
|
|
|
|||
|
|
ini_set('display_errors', 1);
|
|||
|
|
error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE);
|
|||
|
|
|
|||
|
|
$pdo = new MysqlPdo(hst, ndb, user, pass);
|
|||
|
|
$sql = "SET NAMES 'utf8'";
|
|||
|
|
$pdo->query($sql);
|
|||
|
|
|
|||
|
|
$content = file_get_contents('php://input');
|
|||
|
|
|
|||
|
|
|
|||
|
|
if($_SESSION['id'] == 19895){
|
|||
|
|
|
|||
|
|
$content = '{"event_type":"call","data":{"id_call":"7944155","user_id":"51874","widget_id":"79918","date_create":"2025-07-09 13:30:00","date_update":"2025-07-09 13:30:00","callback_phone":"79082166604","operator_phone":"79654730400","department":null,"site":"marinagardensochi.ru","user_tariff":"pro1","tariffed_minutes":1,"duration":38,"record_url":"https:\/\/storage-gw-ru-02.voximplant.com\/voximplant-records\/2025\/07\/09\/ZmVhMWJhODM0Yjc1ODU2Yjc0OGQ4MGE3YjBjZTg0YWEvaHR0cDovL3d3dy1ydS0yOS0yOC52b3hpbXBsYW50LmNvbTo4MDgwL3JlY29yZHMvMjAyNS8wNy8wOS9DQUU3NUY4QTgyQkU1MTAwLjE3NTIwNTcwMTcuMzA5MDY1OS5tcDM-.mp3?record_id=4678339395","callback_answer":"yes","visit_uuid":"7bbd273c-9fa1-4034-a4f7-2b5a22a62171","visit_id":"d956c1e4-ef27-3823-accc-9045263c8495","visit_ip":"195.239.161.77","visit_source":"referal","delayed_time":null,"delayed_type":null,"status":"complete","call_time":"2025-07-09 13:30:00","visit_data":{"visit_id":"d956c1e4-ef27-3823-accc-9045263c8495","date_visit":"2025-07-09 13:29:31","referer_url":"https:\/\/my.creatium.io\/","page_url":"https:\/\/marinagardensochi.ru\/","call_url":"https:\/\/marinagardensochi.ru\/","visit_ip":"195.239.161.77","visit_ua":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/138.0.0.0 Safari\/537.36","ya_cid":"1730989460591357496","ya_counter":"96046821","visit_source":"referal","utm_source":"","utm_medium":"","utm_campaign":"","utm_term":"","utm_content":""},"visit_profile":[]},"token":"61d64a35558b92a5dc79dc4f5d6bbc5f"}';
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
$data = json_decode($content, true);
|
|||
|
|
|
|||
|
|
//var_dump($data);
|
|||
|
|
|
|||
|
|
if(!isset($data['token']) || empty($data['token'])) die();
|
|||
|
|
|
|||
|
|
$sql_user = "SELECT api_key, users.id FROM user_api_keys LEFT JOIN users ON users.id = user_api_keys.user_id WHERE api_key = '{$data['token']}'";
|
|||
|
|
|
|||
|
|
$q_user = $pdo->query($sql_user, true);
|
|||
|
|
|
|||
|
|
$r_user = $pdo->fetch_assoc($q_user);
|
|||
|
|
|
|||
|
|
if(!$r_user || empty($r_user['id'])) {
|
|||
|
|
die();
|
|||
|
|
} else if ((int)$r_user['id'] > 0){
|
|||
|
|
$user_id = (int)$r_user['id'];
|
|||
|
|
$user = new User();
|
|||
|
|
$user->get($user_id);
|
|||
|
|
if($data['event_type'] == 'call' && isset($data['data']) && !empty($data['data'])){
|
|||
|
|
$message = $data['data'];
|
|||
|
|
} else {
|
|||
|
|
die();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
$domain = $message['site'];
|
|||
|
|
$nameSourse = $message['visit_source'];
|
|||
|
|
|
|||
|
|
$WebHookIn = new WebHookIn();
|
|||
|
|
|
|||
|
|
$funnel_id = 0;
|
|||
|
|
$user_id = 0;
|
|||
|
|
$funnel_id_req = 0;
|
|||
|
|
$activities_id = 0;
|
|||
|
|
$source_id = 0;
|
|||
|
|
$users = array();
|
|||
|
|
$client_id = 0;
|
|||
|
|
$email = '';
|
|||
|
|
$partner = 0;
|
|||
|
|
$user_id_req = 0;
|
|||
|
|
$agency_id = 0;
|
|||
|
|
$who_work = 0;
|
|||
|
|
|
|||
|
|
if($user->agencyId == 19895){
|
|||
|
|
$user_id = 19895;
|
|||
|
|
$agency_id = 19895;
|
|||
|
|
$funnel_id_req = 1513;
|
|||
|
|
$user_id_req = 19895;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($user->agencyId == 5238) {
|
|||
|
|
$user_id = 5238;
|
|||
|
|
$agency_id = 5238;
|
|||
|
|
$funnel_id = 0;
|
|||
|
|
$funnel_id_req = 0;
|
|||
|
|
$user_id_req = 5238;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
$users = $WebHookIn->getAllUserAgency($user->agencyId);
|
|||
|
|
$mango = new MangoApiClass(0, 0);
|
|||
|
|
|
|||
|
|
|
|||
|
|
$phone_user = $message['operator_phone'];
|
|||
|
|
$phone_user = $mango->ver_phone($phone_user);
|
|||
|
|
//Поиск сотрудника ответственного
|
|||
|
|
$sql_who_work = "SELECT * FROM users WHERE phone = '{$phone_user}'";
|
|||
|
|
$q_who_work = $pdo->query($sql_who_work);
|
|||
|
|
if($pdo->num_rows($q_who_work) > 0){
|
|||
|
|
$r_who_work = $pdo->fetch_assoc($q_who_work);
|
|||
|
|
$who_work = (int)$r_who_work['id'];
|
|||
|
|
if($message['status'] == 'failed') {//Ищем ропа
|
|||
|
|
if($r_who_work['id_manager'] > 0 && $r_who_work['manager'] != 1){
|
|||
|
|
$who_work = (int)$r_who_work['id_manager'];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*if($_SESSION['id'] == 19895){
|
|||
|
|
echo $sql_who_work."\n";
|
|||
|
|
echo $who_work."\n";
|
|||
|
|
die();
|
|||
|
|
}*/
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
$fio_client = "Имя не указано";
|
|||
|
|
$opis = 'Источник: '.$nameSourse;
|
|||
|
|
|
|||
|
|
if(isset($message['visit_profile']) && !empty($message['visit_profile'])){
|
|||
|
|
if(!empty($message['visit_profile']['name'])) $fio_client = trim($message['visit_profile']['name']);
|
|||
|
|
if(!empty($message['visit_profile']['email'])) $email = trim($message['visit_profile']['email']);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$phone = $message['callback_phone'];
|
|||
|
|
$phone = $mango->ver_phone($phone);
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
if($agency_id == 19895){
|
|||
|
|
$opis = '';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(!isset($phone)) die();
|
|||
|
|
|
|||
|
|
|
|||
|
|
if($source_id == 0){
|
|||
|
|
//Поиск источника по домену
|
|||
|
|
$sql_d = "SELECT *, (SELECT group_id FROM advertising_sources WHERE id = advertising_sources_domain.adv_id) AS group_id FROM `advertising_sources_domain` WHERE domain = '{$domain}' AND `type` = 4";
|
|||
|
|
|
|||
|
|
$q_d = $pdo->query($sql_d, true);
|
|||
|
|
$r_d = $pdo->fetch_assoc($q_d);
|
|||
|
|
if($r_d){
|
|||
|
|
$source_id = (int)$r_d['adv_id'];
|
|||
|
|
$group_id = (int)$r_d['group_id'];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($source_id == 0){
|
|||
|
|
//Поиск источника
|
|||
|
|
$sql_source = "SELECT id FROM `advertising_sources` WHERE source
|
|||
|
|
= '".$nameSourse."' AND (user_id in (".implode(',', $users).") or manager_id in (".implode(',', $users)."))";
|
|||
|
|
$q_source = $pdo->query($sql_source);
|
|||
|
|
$r_source = $pdo->fetch_assoc($q_source);
|
|||
|
|
if($r_source['id'] > 0){
|
|||
|
|
$source_id = $r_source['id'];
|
|||
|
|
//echo $source_id."\n";
|
|||
|
|
} else {
|
|||
|
|
$sql_up = "INSERT INTO `advertising_sources` SET source='".$nameSourse."', user_id={$user_id}, manager_id={$user->agencyId}";
|
|||
|
|
$pdo->query($sql_up);
|
|||
|
|
$source_id = $pdo->insert_id();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// echo $source_id."\n";
|
|||
|
|
//die();
|
|||
|
|
|
|||
|
|
//Поиск тега
|
|||
|
|
if($agency_id == 19895){
|
|||
|
|
if($source_id > 0){
|
|||
|
|
$sql_aa = "SELECT * FROM advertising_sources_activities WHERE source_id = {$source_id}";
|
|||
|
|
|
|||
|
|
$q_aa = $pdo->query($sql_aa, true);
|
|||
|
|
while($r_aa = $pdo->fetch_assoc($q_aa)) {
|
|||
|
|
$activities_ids[] = (int)$r_aa['activities_id'];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// var_dump($activities_ids);
|
|||
|
|
} else {
|
|||
|
|
$sql_activites = "SELECT id FROM `activities` WHERE name = '".$nameSourse."' AND (user_id in (".implode(',', $users).") or manager_id in (".implode(',', $users)."))";
|
|||
|
|
|
|||
|
|
$q_aclivites = $pdo->query($sql_activites);
|
|||
|
|
$r_activites = $pdo->fetch_assoc($q_aclivites);
|
|||
|
|
if($r_activites['id'] > 0){
|
|||
|
|
$activities_id = $r_activites['id'];
|
|||
|
|
//echo $activities_id."\n";
|
|||
|
|
} else {
|
|||
|
|
$sql_up = "INSERT INTO `activities` SET name='".$nameSourse."', user_id={$user_id}, manager_id={$user->agencyId}";
|
|||
|
|
$pdo->query($sql_up);
|
|||
|
|
$activities_id = $pdo->insert_id();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$hot = 0;
|
|||
|
|
if($agency_id == 19895 && $group_id == 290){
|
|||
|
|
$hot = 1;
|
|||
|
|
}
|
|||
|
|
$confirm = 1;
|
|||
|
|
//$who_work = $user_id;
|
|||
|
|
if($agency_id == 19895){
|
|||
|
|
if($who_work == 0){
|
|||
|
|
//Поиск ответственного по источнику
|
|||
|
|
$sql_w = "SELECT * FROM advertising_sources_who_work WHERE adv_id = {$source_id}";
|
|||
|
|
|
|||
|
|
$q_w = $pdo->query($sql_w);
|
|||
|
|
if($pdo->num_rows($q_w) > 0){
|
|||
|
|
$r_w = $pdo->fetch_assoc($q_w);
|
|||
|
|
$user_id = $who_work = (int)$r_w['who_work'];
|
|||
|
|
} /*else {
|
|||
|
|
$confirm = 0;
|
|||
|
|
$who_work = 0;
|
|||
|
|
}*/
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($who_work == 0) $who_work = $user_id;
|
|||
|
|
else if($who_work > 0) $user_id = $who_work;
|
|||
|
|
|
|||
|
|
$sql = "SELECT `id`, `stage`, `deleted`, `fio` FROM `clients` WHERE cancel=0 AND (phone = '$phone' OR id in (SELECT client_id FROM clients_phone2 WHERE phone = '$phone')) and (who_work in (".implode(',', $users).") or id_agent in (".implode(',', $users)."))";
|
|||
|
|
|
|||
|
|
$client = $pdo->fetch_assoc($pdo->query($sql));
|
|||
|
|
if(!empty($client) && $client){
|
|||
|
|
$client_id = $client['id'];
|
|||
|
|
$fio_client = $client['fio'];
|
|||
|
|
} else {
|
|||
|
|
|
|||
|
|
$sql = "INSERT INTO clients SET phone='{$phone}', hot={$hot}, email='{$email}', fio='{$fio_client}', opis='{$opis}', id_agent={$user_id}, who_work={$who_work}, date_add=NOW(), confirm={$confirm}, funnel_id={$funnel_id}, stage=1, source= '{$source_id}', integration=12";
|
|||
|
|
//echo $sql;
|
|||
|
|
$pdo->query($sql);
|
|||
|
|
$client_id = $pdo->insert_id();
|
|||
|
|
|
|||
|
|
if($funnel_id > 0){
|
|||
|
|
$Clients = new Clients;
|
|||
|
|
$Clients->get_class_etap($client_id, $funnel_id);
|
|||
|
|
}
|
|||
|
|
if($activities_id){
|
|||
|
|
$sql_a = "INSERT INTO `clients_activities` (`activity_id`, `client_id`) VALUES ({$activities_id}, {$client_id})";
|
|||
|
|
$pdo->query($sql_a);
|
|||
|
|
} else if($activities_ids && !empty($activities_ids)){
|
|||
|
|
foreach($activities_ids as $activities_id){
|
|||
|
|
$sql_a = "INSERT INTO `clients_activities` (`activity_id`, `client_id`) VALUES ({$activities_id}, {$client_id})";
|
|||
|
|
$pdo->query($sql_a);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
if($client_id > 0){
|
|||
|
|
$Requisitions = new Requisitions($pdo, true);
|
|||
|
|
$web_hook_in = new WebHookIn($pdo);
|
|||
|
|
$reqid=(int)$web_hook_in->check_is_req($who_work, $source_id, $client_id);
|
|||
|
|
if($reqid > 0 && $agency_id == 19895) {
|
|||
|
|
$comment = "Обращался повторно<br>";
|
|||
|
|
if(!empty($activities_ids)){
|
|||
|
|
$sql_activites = "SELECT * FROM activities WHERE id in (".implode(',', $activities_ids).")";
|
|||
|
|
$q_aclivites = $pdo->query($sql_activites);
|
|||
|
|
$comment .= "Теги: ";
|
|||
|
|
while($r_activites = $pdo->fetch_assoc($q_aclivites)){
|
|||
|
|
$comment .= $r_activites['name']." ";
|
|||
|
|
}
|
|||
|
|
$sql_ev = "INSERT INTO user_client_events (req_id, `type`, comment, user_id, from_id, create_date, calendar_view)
|
|||
|
|
VALUES ($reqid, 'comment', '{$comment}', {$user_id}, {$user_id}, NOW(), 1)";
|
|||
|
|
$pdo->query($sql_ev);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
die();
|
|||
|
|
}
|
|||
|
|
$name_req = 'Подбор объекта для '.$fio_client;
|
|||
|
|
if($agency_id == 19895){
|
|||
|
|
$name_req = $fio_client;
|
|||
|
|
}
|
|||
|
|
//Поиск воронки по источнику
|
|||
|
|
if($source_id > 0){
|
|||
|
|
$sql_req_funnel="SELECT * FROM advertising_sources_funnel WHERE source_id = {$source_id}";
|
|||
|
|
$q_req_funnel = $pdo->query($sql_req_funnel, true);
|
|||
|
|
$r_req_funnel = $pdo->fetch_assoc($q_req_funnel);
|
|||
|
|
if($r_req_funnel && $r_req_funnel['funnel_id_req'] > 0){
|
|||
|
|
$funnel_id_req = (int)$r_req_funnel['funnel_id_req'];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$sql = "INSERT INTO requisitions SET client_id={$client_id}, hot={$hot}, name='{$name_req}', description='{$opis}', user_id={$user_id}, integration=12, who_work={$who_work}, type_id=1, confirm={$confirm}, funnel_id={$funnel_id_req}, stage=1, source= '{$source_id}'";
|
|||
|
|
|
|||
|
|
|
|||
|
|
$pdo->query($sql);
|
|||
|
|
$req_id = $pdo->insert_id();
|
|||
|
|
if($funnel_id_req > 0){
|
|||
|
|
|
|||
|
|
$Requisitions->get_class_etap($req_id, $funnel_id_req);
|
|||
|
|
}
|
|||
|
|
if($activities_ids && !empty($activities_ids)){
|
|||
|
|
foreach($activities_ids as $activities_id){
|
|||
|
|
$sql_a = "INSERT INTO `requisitions_activities` (`activity_id`, `req_id`) VALUES ({$activities_id}, {$req_id})";
|
|||
|
|
$pdo->query($sql_a);
|
|||
|
|
}
|
|||
|
|
} else
|
|||
|
|
if($activities_id){
|
|||
|
|
$sql_a = "INSERT INTO `requisitions_activities` (`activity_id`, `req_id`) VALUES ({$activities_id}, {$req_id})";
|
|||
|
|
$pdo->query($sql_a);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($who_work > 0){
|
|||
|
|
|
|||
|
|
if($agency_id != 19895 && $agency_id != 5238){
|
|||
|
|
$comment = "Источник с leadback ".$nameSourse;
|
|||
|
|
|
|||
|
|
$sql_add = "INSERT INTO `events_clients` (`user_id`, `req_id`, `from_id`, `event`, `dop_text`, `read`) ".
|
|||
|
|
"VALUES ({$who_work}, {$req_id}, {$who_work}, 'add', '{$comment}', 2)";
|
|||
|
|
$pdo->query($sql_add);
|
|||
|
|
|
|||
|
|
/*$sql_in_ev = "INSERT INTO user_client_events (user_id, req_id, create_date, schedule_date, `type`, comment, calendar_view, from_id) ".
|
|||
|
|
"VALUES ($user_id_req, $req_id, '".date('Y-m-d H:i:s')."', '".date('Y-m-d H:i:s', strtotime('+15 minutes'))."', 'call', '{$comment}', 0, {$user_id_req})";
|
|||
|
|
$pdo->query($sql_in_ev);*/
|
|||
|
|
} else {
|
|||
|
|
$telega = new Telegram();
|
|||
|
|
$chat_id = $Requisitions->get_caht_id($who_work);
|
|||
|
|
if($chat_id > 0){
|
|||
|
|
$text = "На основе Входящего звонка ".date('d.m.Y H:i', strtotime($message['call_time']));
|
|||
|
|
$text .= "\nсоздана заявка ID ".$req_id;
|
|||
|
|
$text .= "\nпо клиенту: ".$fio_client. " (ID ".$client_id. ")";
|
|||
|
|
try {
|
|||
|
|
$telega->send($text, $chat_id);
|
|||
|
|
} catch(Exception $e){
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
file_put_contents(__DIR__.'/log_test_leadback.php.txt', date('d.m.Y H:i:s').' '.$chat_id. ' ' .$text. "\n", FILE_APPEND);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($agency_id == 19895 && $req_id > 0){
|
|||
|
|
$arr_data = array();
|
|||
|
|
if(isset($nameSourse) && !empty($nameSourse)){
|
|||
|
|
$arr_data[] = "({$req_id}, 321, 1, '\"{$nameSourse}\"')";
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
if(!empty($arr_data)){
|
|||
|
|
$sql_data = "INSERT INTO requisition_data (`req_id`, `field_id`, `type`, `value`) VALUES ".implode(',' , $arr_data);
|
|||
|
|
//echo $sql_data;
|
|||
|
|
$pdo->query($sql_data);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$rqClass = new Requisitions(null, true);
|
|||
|
|
$rqClass->set_agencyId($agency_id);
|
|||
|
|
$rqClass->set_userId($user_id);
|
|||
|
|
$rqClass->autoUnitReq(1, $req_id);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|