find_user($p['user_find_number']); if($user_id == 0) $user_id = $main_user_id; $funnel_id = 0; if($user_id == 6630){ $funnel_id = 59; } else if($agency_id == 10387){ $funnel_id = 484; } else if($agency_id == 12028){ $funnel_id = 996; } else if ($agency_id == 21213){ $funnel_id = 1793; } else if ($agency_id == 20624){ $funnel_id = 1832; } else if ($agency_id == 12461){ $funnel_id = 1854; } // echo $user_id."\n"; //echo $p['user_find_number'].' - '.$p['client_find_number'].' - '.date('d.m.Y', $p['start'])."\n"; $who_work_i = $user_id; $confirm = 1; if($agency_id == 12461){ $who_work_i = 0; $confirm = 0; } if( strpos($p['client_find_number'], 'sip:') === false && $user_id != 0 && $mango->ver_phone($p['user_find_number']) != '+79917792953' && $mango->ver_phone($p['user_find_number']) != 'fmc:89917792953'){ //Поиск клиента $client_id = $mango -> find_client($p['client_find_number']); $source = $mango->findSource($mango->ver_phone($p['user_find_number'])); if($agency_id == 21790){ $source = $mango->findSource(isset($p['entry_id']) ? $p['entry_id'] : ''); } //echo $source."\n"; if($client_id == 0 && strlen($mango -> ver_phone($p['client_find_number'])) == 12){ $sql_cl_mango = "INSERT INTO `clients` (fio, phone, opis, id_agent, date_add, who_work, confirm, stage, funnel_id, source) " . " VALUES ('Клиент mango', '".$mango -> ver_phone($p['client_find_number'])."', '".$p['comment']."', {$user_id}, '".date('Y-m-d H:i:s', $p['start'])."', {$who_work_i}, '{$confirm}', '1', {$funnel_id}, '{$source}')"; if($agency_id == 4){ $sql_cl_mango = "INSERT INTO `clients` (fio, phone, opis, id_agent, date_add, who_work, confirm, stage, work_type,role, source) " . " VALUES ('Клиент mango', '".$mango -> ver_phone($p['client_find_number'])."', '".$p['comment']."', {$user_id}, '".date('Y-m-d H:i:s', $p['start'])."', {$who_work_i}, '{$confirm}', '1','["Новостройки"]', '["Покупатель"]', '{$source}')"; } mysql_query($sql_cl_mango); $client_id = mysql_insert_id(); if($funnel_id> 0 && $client_id > 0){ $client = new Clients; $client->get_class_etap($client_id, $funnel_id); } } if($client_id != 0){ if($type == 'abonentMangoAnswer'){ $cl_stage = $mango -> 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 «Закрыт» на «Новый» (По входящему звонку Mango)"; $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); } } /* $sql_m = "SELECT id FROM user_client_events WHERE user_id = {$user_id} AND client_id = {$client_id} AND create_date = '".date('Y-m-d H:i:s', $p['start'])."'". " AND `type` = 'call' AND mango = 1"; if($agency_id == 4){*/ $sql_m = "SELECT id FROM user_client_events WHERE client_id = {$client_id} AND create_date = '".date('Y-m-d H:i:s', $p['start'])."'". " AND `type` = 'call' AND mango = 1"; // echo $sql_m."\n"; // } $record = ''; $isRecord = false; $q_m = mysql_query($sql_m); //if(mysql_num_rows($q_m) == 0){ $arr_rec = explode(",", str_replace(["[","]"], "", $p['records'])); $record = ''; if(!empty($arr_rec)){ $isRecord = true; foreach($arr_rec as $rec){ $data_rec = array( "recording_id" => $rec, "action" => "download" ); $mango->params = $data_rec; $mango->recordingSave(); } $record = json_encode($arr_rec); } if(mysql_num_rows($q_m) > 0 && !empty($record)){ $r_m = mysql_fetch_assoc($q_m); mysql_query("UPDATE user_client_events SET record='{$record}' WHERE id = {$r_m['id']}"); $req_s = "SELECT id, user_id, who_work FROM requisitions WHERE client_id=$client_id and cancel=0 and deleted=0"; // echo $req_s."\n"; $req_q = mysql_query($req_s); $req_rows = mysql_num_rows($req_q); $req_comm = str_replace(["Клиент","записан"], ["Заявка","записана"], $p['comment']); if($req_rows > 0){ // if($req_rows > 1){ while($req = mysql_fetch_assoc($req_q)){ $sql_m1 = "SELECT id FROM user_client_events WHERE req_id = $req[id] AND create_date = '".date('Y-m-d H:i:s', $p['start'])."'". " AND user_id={$req['who_work']} AND `type` = 'call' AND mango = 1 AND tracking = 0"; // echo $sql_m1."\n"; $q_m1 = mysql_query($sql_m1); if(mysql_num_rows($q_m) > 0){ { if(!empty($record)){ $r_m1 = mysql_fetch_assoc($q_m1); mysql_query("UPDATE user_client_events SET record='{$record}' WHERE id = {$r_m1['id']}"); } } } //} } } } else { //Поиск чей клиент $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']; } $sql_in_ev = "INSERT INTO user_client_events (user_id, client_id, create_date, schedule_date, `type`, comment, calendar_view, from_id, mango, record) ". "VALUES ({$who_work}, {$client_id}, '".date('Y-m-d H:i:s', $p['start'])."', '".date('Y-m-d H:i:s', $p['start'])."', 'call', '".$p['comment_in']."', 1, {$user_id}, 1, '".$record."')"; // echo $sql_in_ev; mysql_query($sql_in_ev); if($agency_id == 8826 && !$isRecord) usleep(500000); } //Поиск заявки по клиенту //var_dump($dataApi['is_req'] > 0); if($dataApi['is_req'] > 0){ if(!$isRecord){ if(!empty(trim($p['records'], '\n'))){ $arr_rec = explode(",", str_replace(["[","]"], "", $p['records'])); $record = ''; if(!empty($arr_rec)){ $isRecord = true; foreach($arr_rec as $rec){ $data_rec = array( "recording_id" => $rec, "action" => "download" ); $mango->params = $data_rec; $mango->recordingSave(); } $record = json_encode($arr_rec); } } } $req_s = "SELECT id, user_id, who_work FROM requisitions WHERE client_id=$client_id and cancel=0 and deleted=0"; if($agency_id == 22666){ //Поиск любой заявки по клиенту с телефонии $req_s = "SELECT id, user_id, who_work, created_at, deleted FROM requisitions WHERE client_id=$client_id and cancel=0 and integration in (1,2) order by id desc limit 1"; } $req_q = mysql_query($req_s); $req_rows = mysql_num_rows($req_q); $req_comm = str_replace(["Клиент","записан"], ["Заявка","записана"], $p['comment']); //echo $req_rows."\n"; if($req_rows > 0){ if($req_rows > 1){ while($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['start'])."'". " AND user_id={$req['who_work']} AND `type` = 'call' AND mango = 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, mango, record) ". "VALUES ($req[who_work], $req[id], '".date('Y-m-d H:i:s', $p['start'])."', '".date('Y-m-d H:i:s', $p['start'])."', 'call', '".$p['comment_in']."', 1, {$user_id}, 1, '".$record."')"; mysql_query($sql_in_ev); } else { if(!empty($record)){ $r_m = mysql_fetch_assoc($q_m); mysql_query("UPDATE user_client_events SET record='{$record}' WHERE id = {$r_m['id']}"); } } } } else { $req = mysql_fetch_assoc($req_q); if($agency_id == 22666){ if($req['deleted'] > 0 && !isset($_SESSION['id'])){ $up_client = "UPDATE `requisitions` SET `stage`='1', `deleted` = 0, confirm=1, `who_work`='{$user_id}' WHERE `id`=$req[id]"; mysql_query($up_client); $dop_text = "Переведена в активные по звонку ".date('Y-m-d H:i:s', $p['start']); $in_ev = "INSERT INTO `events_clients` (`user_id`, `req_id`, `event`, `dop_text`, `read`) VALUES ('{$user_id}', '$req[id]', 'update', '{$dop_text}', 1)"; mysql_query($in_ev); } } $sql_m = "SELECT id FROM user_client_events WHERE req_id = $req[id] AND create_date = '".date('Y-m-d H:i:s', $p['start'])."'". " AND user_id={$req['who_work']} AND `type` = 'call' AND mango = 1 AND tracking = 0"; if($agency_id == 22666){ $sql_m = "SELECT id FROM user_client_events WHERE req_id = $req[id] AND create_date = '".date('Y-m-d H:i:s', $p['start'])."'". " AND `type` = 'call' AND mango = 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, mango, record) ". "VALUES ($req[who_work], $req[id], '".date('Y-m-d H:i:s', $p['start'])."', '".date('Y-m-d H:i:s', $p['start'])."', 'call', '".$p['comment_in']."', 1, {$user_id}, 1, '".$record."')"; mysql_query($sql_in_ev); } else if(!empty($record)){ $r_m = mysql_fetch_assoc($q_m); mysql_query("UPDATE user_client_events SET record='{$record}' WHERE id = {$r_m['id']}"); } } } else { $funnel_id = 0; $nameReq = 'Заявка Mango'; $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']; } $req_id = 0; if($agency_id == 11082){ $funnel_id = 479; } else if($agency_id == 10429){ $funnel_id = 551; } else if($agency_id == 13339){ $funnel_id = 665; } else if($agency_id == 13386){ $funnel_id = 796; } else if($agency_id == 10387){ $funnel_id = 482; } else if ($agency_id == 19570) { $funnel_id = 1484; } else if ($agency_id == 21213) { $funnel_id = 1793; } else if ($agency_id == 21790) { $funnel_id = 1980; } else if ($agency_id == 22746){ if($type == 'abonentMangoAnswer' || $type == 'abonentMangoNoAnswer'){ $funnel_id = 2155; } else { $funnel_id = 2108; } } else if ($agency_id == 22666) { $funnel_id = 2096; } $sql_req = "INSERT INTO `requisitions` SET name='{$nameReq}', integration=1, user_id={$user_id}, client_id={$client_id}, stage=1, type_id=1, who_work={$user_id}, description='{$req_comm}', source='{$source}'"; // echo $sql_req."\n"; if($funnel_id > 0) { $sql_req .= ", funnel_id={$funnel_id}"; $reqClass = new Requisitions(); } if($agency_id == 9973 || $agency_id == 7864 || $agency_id == 10982){ if($type == 'abonentMangoAnswer' || $type == 'abonentMangoNoAnswer'){ 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, mango, record) ". "VALUES ($user_id, $req_id, '".date('Y-m-d H:i:s', $p['start'])."', '".date('Y-m-d H:i:s', $p['start'])."', 'call', '".$p['comment_in']."', 1, {$user_id}, 1, '".$record."')"; mysql_query($sql_in_ev); } } else if($agency_id != 11082 && $agency_id != 12254 && $agency_id != 12343 && $agency_id != 12482 && $agency_id != 12762 && $agency_id != 8826 && $agency_id != 13394 && $agency_id != 13430 && $agency_id != 14191 && $agency_id != 14310 && $agency_id != 16553 && $agency_id != 20624 && $agency_id != 12461 && $agency_id != 20947) { 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, mango, record) ". "VALUES ($user_id, $req_id, '".date('Y-m-d H:i:s', $p['start'])."', '".date('Y-m-d H:i:s', $p['start'])."', 'call', '".$p['comment_in']."', 1, {$user_id}, 1, '".$record."')"; mysql_query($sql_in_ev); } if($req_id > 0 && $funnel_id > 0){ $reqClass->get_class_etap($req_id, $funnel_id); } } } } } } $sql_mango = "SELECT * FROM agency_mango WHERE `type` = 'mango'"; if(!empty($_SESSION['id'])){ $sql_mango = "SELECT * FROM agency_mango WHERE `type` = 'mango' and agency_id=22666"; } $q_mango = mysql_query($sql_mango); while($r_mango = mysql_fetch_assoc($q_mango)){ $api_key = $r_mango['api_key']; $api_salt = $r_mango['api_salt']; $last_date = $r_mango['last_date']; $agency_id =$r_mango['agency_id']; $main_user_id = $r_mango['main_user']; $lost_update = $r_mango['lost_update']; $mango = new MangoApiClass($api_key, $api_salt); if((time() - $lost_update) >= 86400){ $groupsMango = json_decode($mango->groups()); if (!empty($groupsMango->groups)) { $mango->saveGroups($groupsMango->groups, $agency_id); } } $users = json_decode($mango->configUsers()); $userArr = array(); //Проверка пользователей телефонии if(isset($users->users)){ foreach($users->users as $user){ $userArr[] = array(); // echo json_encode($user, JSON_UNESCAPED_UNICODE); // if((time() - $lost_update) >= 86400){ $mango->saveUser($user, $agency_id); // } $mango_user = array(); $mango_user['agency_id'] = $agency_id; if(isset($user->general->email)){ $mango_user['mango_email'] = $user->general->email; } else { $mango_user['mango_email'] = ''; } foreach($user->telephony->numbers as $number){ if($number->protocol == 'sip') $mango_user['mango_sip'] = $number->number; if($number->protocol == 'tel') $mango_user['mango_tel'] = $number->number; } if($mango_user['mango_email'] != '' || isset($mango_user['mango_tel'])){ $sql = "SELECT `id`, `agency_name`, `first_name`, `last_name`, `middle_name` FROM `users`"; //email = '{$mango_user['mango_email']}'"; $where_mango = ""; if(isset($mango_user['mango_email']) && !empty($mango_user['mango_email'])){ $where_mango .= " WHERE email = '{$mango_user['mango_email']}'"; } if(isset($mango_user['mango_tel'])){ if($where_mango == ''){ $where_mango .= " WHERE phone = '+".str_replace('+','',$mango_user['mango_tel'])."'"; } else { $where_mango .= " OR phone = '+".str_replace('+','',$mango_user['mango_tel'])."'"; } } if($where_mango != ''){ $sql .= $where_mango; $q = mysql_query($sql); if(mysql_num_rows($q) > 0){ $r = mysql_fetch_assoc($q); $mango_user['user_id'] = $r['id']; $sql_very = "SELECT id FROM mango_users WHERE user_id = ".$r['id']; $q_very = mysql_query($sql_very); if(mysql_num_rows($q_very) > 0){ $set = ''; foreach ($mango_user as $key => $val){ if($key != 'user_id'){ if($set != '') $set .= ', '; $set .= $key." = '".$val."'"; } } $sql_up = "UPDATE mango_users SET ".$set." WHERE user_id = ".$mango_user['user_id']; mysql_query($sql_up); } else { $keys = ''; $values = ''; foreach ($mango_user as $key => $val){ if($keys != '') $keys .= ', '; if($values != '') $values .= ', '; $keys .= $key; $values .= "'".$val."'"; } $sql_in = "INSERT INTO mango_users (".$keys.") VALUES (".$values.")"; //echo $sql_in; mysql_query($sql_in); } } } } } if((time() - $lost_update) >= 86400){ $sql_up_mango = "UPDATE agency_mango SET lost_update = '".time()."' WHERE id = ".$r_mango['id']; mysql_query($sql_up_mango); } $usersIds = array(); $w = new WebHookIn(); $usersIds = $w->getAllUserAgency($agency_id); //var_dump($usersIds); $mango->set_users($usersIds); /*if($_SESSION['id'] > 0){ $last_date='2026-03-27 08:00:00'; }*/ $data = array( "date_from" => (strtotime($last_date) - 60*60), "date_to" => time(), "from" => array( "extension"=>"", "number" => "" ), "to"=> array( "extension"=>"", "number"=>"" ) ); $mango->params = $data; $mango->requestPhones(); //$mango->params = $data; $phones = $mango->resultPhones(); if(empty($phones)){ sleep(10); $phones = $mango->resultPhones(); } // var_dump($phones); $arr_heder = array('records', 'start', 'finish', 'answer', 'from_extension', 'from_number', 'to_extension', 'to_number', 'disconnect_reason', 'entry_id', 'line_number', 'location'); $arr_phone = explode("\r\n", $phones); //var_dump($arr_phone); $phone_data = array(); foreach ($arr_phone as $str){ if (trim($str) === '') { continue; } //echo $str.'
'; $arr_str = explode(";", $str); $phone_temp = array(); foreach($arr_str as $key => $value){ if (isset($arr_heder[$key])) { $phone_temp[$arr_heder[$key]] = $value; } } $phone_data[] = $phone_temp; } //var_dump($phone_data); //Массив по типам звонков $phones_type = array(); foreach ($phone_data as $p){ /* if($agency_id == 8826){ }*/ //echo json_encode($p).'
'; // var_dump($p)."\n"; $type = $mango->get_phone_type($p); $calls_ids = $mango->stat($p, $agency_id); $call_id = $calls_ids['id']; $call_id_pg = $calls_ids['idpg']; $type = $mango->get_phone_type($p); $user_find_number = 0; switch ($type){ case 'mangoAbonentAnswer': { $p['comment'] = 'Клиент записан по исходящему звонку в mango'; $p['comment_in'] = 'Исходящий звонок в Mango'; $p['user_find_number'] = isset($p['from_number']) ? $p['from_number'] : ''; $user_find_number = isset($p['from_number']) ? $p['from_number'] : ''; $p['client_find_number'] = isset($p['to_number']) ? $p['to_number'] : ''; $phones_type['mangoAbonentAnswer'][] = $p; break; } case 'abonentMangoAnswer': { $p['comment'] = 'Клиент записан по входящему звонку в mango'; $p['comment_in'] = 'Входящий звонок в Mango'; $p['user_find_number'] = isset($p['to_number']) ? $p['to_number'] : ''; $user_find_number = isset($p['to_number']) ? $p['to_number'] : ''; $p['client_find_number'] = isset($p['from_number']) ? $p['from_number'] : ''; $phones_type['abonentMangoAnswer'][] = $p; break; } case 'mangoAbonentNoAnswer': { $p['comment'] = 'Клиент записан по исходящему звонку в mango'; $p['comment_in'] = 'Исходящий звонок в Mango.
Абонент не ответил'; $p['user_find_number'] = isset($p['from_number']) ? $p['from_number'] : ''; $user_find_number = isset($p['from_number']) ? $p['from_number'] : ''; $p['client_find_number'] = isset($p['to_number']) ? $p['to_number'] : ''; $phones_type['mangoAbonentNoAnswer'][] = $p; break; } case 'abonentMangoNoAnswer':{ $p['comment'] = 'Клиент записан по входящему звонку в mango'; $p['comment_in'] = 'Пропущеный входящий звонок в Mango'; $p['user_find_number'] = isset($p['to_number']) ? $p['to_number'] : ''; $user_find_number = isset($p['to_number']) ? $p['to_number'] : ''; $p['client_find_number'] = isset($p['from_number']) ? $p['from_number'] : ''; $phones_type['abonentMangoNoAnswer'][] = $p; break; } } // $mango->save_user_call($call_id, $user_find_number, $main_user_id); $mango->save_user_call_pg($call_id_pg, $user_find_number, $main_user_id); } if (!empty($phones_type['abonentMangoAnswer'])) { foreach ($phones_type['abonentMangoAnswer'] as $p) { read_phone($mango, $p, $agency_id, 'abonentMangoAnswer', $main_user_id, $r_mango); } } if (!empty($phones_type['mangoAbonentAnswer'])) { foreach ($phones_type['mangoAbonentAnswer'] as $p) { read_phone($mango, $p, $agency_id, 'mangoAbonentAnswer',$main_user_id, $r_mango); } } if (!empty($phones_type['mangoAbonentNoAnswer'])) { foreach ($phones_type['mangoAbonentNoAnswer'] as $p) { read_phone($mango, $p, $agency_id, 'mangoAbonentNoAnswer',$main_user_id, $r_mango); } } if (!empty($phones_type['abonentMangoNoAnswer'])) { foreach ($phones_type['abonentMangoNoAnswer'] as $p) { read_phone($mango, $p, $agency_id, 'abonentMangoNoAnswer',$main_user_id, $r_mango); } } } $sql_up_mango = "UPDATE agency_mango SET last_date = '".date('Y-m-d H:i:s')."' WHERE id = ".$r_mango['id']; // if($agency_id != 8826) mysql_query($sql_up_mango); }