723 lines
24 KiB
PHP
723 lines
24 KiB
PHP
<?php
|
||
|
||
ini_set('error_reporting', E_ALL);
|
||
ini_set('display_errors', 1);
|
||
ini_set('display_startup_errors', 1);
|
||
|
||
class BeelineApiClass extends MangoApiClass {
|
||
private $api_key;
|
||
private $base_url = "https://cloudpbx.beeline.ru/apis/portal/";
|
||
|
||
private $metod;
|
||
private $post='';
|
||
private $client_id;
|
||
private $header;
|
||
private $users = array();
|
||
private $phone_type;
|
||
private $phone_types = [0 => 'beelineAbonentNoAnswer',
|
||
1 => 'beelineAbonentAnswer',
|
||
2 => 'abonentBeelineAnswer',
|
||
3 => 'abonentBeelineNoAnswer'];
|
||
private $client_stage = 0;
|
||
public $subscription_url;
|
||
private $dbpg = null;
|
||
|
||
public function __construct($api_key){
|
||
$this->api_key = $api_key;
|
||
$this->header = ['Content-type:application/json',
|
||
'X-MPBX-API-AUTH-TOKEN:'.$api_key];
|
||
$this->dbpg = new MysqlPdo(hstpg, ndbpg, userpg, passpg, false, '5432', true);
|
||
}
|
||
|
||
public function set_users($users){
|
||
$this->users = $users;
|
||
}
|
||
public function checkSubscription($id)
|
||
{
|
||
$sql = "SELECT * FROM call_subscription WHERE batc_id = $id";
|
||
$subscription = mysql_fetch_assoc(mysql_query($sql));
|
||
if(!$subscription){
|
||
$result = $this->setSubscription();
|
||
if(isset($result['subscriptionId'])) {
|
||
$sql = "INSERT INTO `call_subscription`(`batc_id`, `api_key`, `subscriptionId`, `expires`) VALUES ($id,'".$this->api_key."','".$result['subscriptionId']."',".$result['expires'].")";
|
||
mysql_query($sql);
|
||
}
|
||
} else {
|
||
$result = $this->doSubscription($subscription);
|
||
if(isset($result['subscriptionId'])){
|
||
if($result['expires'] > 172800){
|
||
$sql = "UPDATE `call_subscription` SET `expires`=".$result['expires']." WHERE id=".$subscription['id'];
|
||
mysql_query($sql);
|
||
} else {
|
||
$result = $this->setSubscription();
|
||
if(!empty($result['subscriptionId'])) {
|
||
$sql = "UPDATE `call_subscription` SET `expires`=" . $result['expires'] . ", `subscriptionId`='" . $result['subscriptionId'] . "' WHERE id=" . $subscription['id'];
|
||
mysql_query($sql);
|
||
$this->deleteSubscription($subscription);
|
||
}
|
||
|
||
}
|
||
} else {
|
||
$result = $this->setSubscription();
|
||
if(!empty($result['subscriptionId'])) {
|
||
$sql = "UPDATE `call_subscription` SET `expires`=" . $result['expires'] . ", `subscriptionId`='" . $result['subscriptionId'] . "' WHERE id=" . $subscription['id'];
|
||
mysql_query($sql);
|
||
$this->deleteSubscription($subscription);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
public function renewSubscription($subscriptionId){
|
||
$sql = "SELECT * FROM call_subscription WHERE subscriptionId = '$subscriptionId'";
|
||
$subscription = mysql_fetch_assoc(mysql_query($sql));
|
||
if($subscription){
|
||
$this->api_key = $subscription['api_key'];
|
||
$result = $this->setSubscription();
|
||
if(!empty($result['subscriptionId'])) {
|
||
$sql = "UPDATE `call_subscription` SET `expires`=" . $result['expires'] . ", `subscriptionId`='" . $result['subscriptionId'] . "' WHERE id=" . $subscription['id'];
|
||
mysql_query($sql);
|
||
}
|
||
|
||
}
|
||
}
|
||
private function doSubscription($subscription){
|
||
$subscriptionId = $subscription['subscriptionId'];
|
||
$this->metod = "subscription?subscriptionId=$subscriptionId";
|
||
return json_decode($this->sendCurl(),true);
|
||
}
|
||
|
||
private function deleteSubscription($subscription){
|
||
$subscriptionId = $subscription['subscriptionId'];
|
||
$this->metod = "subscription?subscriptionId= $subscriptionId";
|
||
return json_decode($this->sendCurl(false, ["type"=>"DELETE", "body"=>""]),true);
|
||
}
|
||
|
||
private function setSubscription(){
|
||
$this->metod = 'subscription';
|
||
$body = [
|
||
"expires" => 2592000,
|
||
"subscriptionType" => "BASIC_CALL",
|
||
"url" => $this->subscription_url,
|
||
];
|
||
|
||
return json_decode($this->sendCurl(false,['type'=>"PUT","body"=>json_encode($body)]), true);
|
||
|
||
|
||
}
|
||
private function sendCurl($post = false, $custom = false){
|
||
$response = 0;
|
||
$url = $this->base_url . $this->metod;
|
||
// echo $url.'<br>';
|
||
$ch = curl_init($url);
|
||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||
//if($header){
|
||
|
||
curl_setopt($ch, CURLOPT_HEADER,0);
|
||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
||
if($post){
|
||
$this->header = ['X-MPBX-API-AUTH-TOKEN:'.$this->api_key];
|
||
curl_setopt($ch, CURLOPT_POST, 1);
|
||
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->post);
|
||
}
|
||
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->header);
|
||
if($custom){
|
||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $custom['type']);
|
||
curl_setopt($ch, CURLOPT_POSTFIELDS,$custom['body']);
|
||
}
|
||
|
||
$response = curl_exec($ch);
|
||
// var_dump($response);
|
||
|
||
if($errno = curl_errno($ch)) {
|
||
$error_message = curl_strerror($errno);
|
||
echo "cURL error ({$errno}):\n {$error_message}";
|
||
}
|
||
curl_close($ch);
|
||
|
||
return $response;
|
||
}
|
||
|
||
public function callTransfer($user_id,$call_id,$phone)
|
||
{
|
||
$this->metod = "abonents/$user_id/callTransfer";
|
||
$this->post = "callId=$call_id&phoneNumber=$phone";
|
||
|
||
$res = $this->sendCurl(true);
|
||
//$result['ps'] = "abonents/$user_id/callTransfer callId=$call_id&phoneNumber=$phone";
|
||
return $res;
|
||
}
|
||
|
||
public function callTransferConsult($user_id,$call_id,$phone)
|
||
{
|
||
$this->metod = "abonents/$user_id/callTransferConsult";
|
||
$this->post = "callId=$call_id&callIdConsult=$phone";
|
||
$this->sendCurl(true);
|
||
}
|
||
|
||
public function callrelease($user_id,$call_id,$phone)
|
||
{
|
||
$this->metod = "abonents/$user_id/callTransferConsult";
|
||
$this->post = "callId=$call_id&callIdConsult=$phone";
|
||
$this->sendCurl(true);
|
||
}
|
||
|
||
public function getRoute(){
|
||
$this->metod = "icr/route";
|
||
$res = $this->sendCurl();
|
||
return $res;
|
||
}
|
||
|
||
public function put_route($phone, $extension){
|
||
$phone = str_replace('+7', '', $phone);
|
||
$this->metod = 'icr/route';
|
||
$body = [array(
|
||
"inboundNumber" => $phone,
|
||
"extension" => $extension,
|
||
)
|
||
];
|
||
|
||
return json_decode($this->sendCurl(false,['type'=>"PUT","body"=>json_encode($body)]), true);
|
||
}
|
||
|
||
public function checkRoute($call, $agency_id){
|
||
$department = isset($call->department) ? $call->department : '';
|
||
if(strpos(mb_strtolower($department), 'sip') !== false){
|
||
$phone = $call->phone;
|
||
$extension = $call->abonent->extension;
|
||
if(!empty($phone) && !empty($extension)){
|
||
$sql = "SELECT * FROM rule_route WHERE phone = '{$phone}' AND extension = '{$extension}' AND agency_id = {$agency_id}";
|
||
$q = $this->dbpg->query($sql);
|
||
|
||
if($this->dbpg->num_rows($q) == 0){
|
||
|
||
$result = $this->put_route($phone, $extension);
|
||
|
||
if($result[0]['status'] == 'SUCCESS'){
|
||
$sql_in = "INSERT INTO rule_route (phone, extension, agency_id) VALUES ('{$phone}', '{$extension}', {$agency_id})";
|
||
$this->dbpg->query($sql_in);
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
public function getUsers(){
|
||
$this->metod = 'abonents';
|
||
$res = $this->sendCurl(false);
|
||
return $res;
|
||
}
|
||
|
||
public function stat_records($start_datetime, $lastId = false){
|
||
$this->metod = 'records?dateFrom='.$start_datetime;//.'&dateTo='.$end_date;//api/ver1.0/client/'.$this->client_id.'/call_history/?start_datetime='.$start_datetime.'&order=asc&end_datetime='.$end_datetime.'&per_page=100000&page=1';
|
||
if($lastId > 0){
|
||
$this->metod = 'records?id='.$lastId;
|
||
}
|
||
// echo $this->metod."\n";
|
||
$res = $this->sendCurl(false);
|
||
return $res;
|
||
}
|
||
|
||
public function calls($start_datetime){
|
||
$this->metod = 'statistics?dateFrom='.$start_datetime.'&page=0&pageSize=100';
|
||
$res = $this->sendCurl(false);
|
||
return $res;
|
||
}
|
||
|
||
public function get_record($record_uuid){
|
||
$this->metod = 'v2/records/'.$record_uuid.'/download';
|
||
$res = $this->sendCurl(false);
|
||
return $res;
|
||
}
|
||
|
||
private function type_phone($call){
|
||
//call);
|
||
//var_dump($call);
|
||
$result = '';
|
||
$find_user = '';
|
||
//$result = $call->result;
|
||
//if(isset($call->abonent->))
|
||
$find_user = $call->abonent->userId;
|
||
$part_user = explode('@', $call->abonent->userId);
|
||
if(isset($part_user[0])){
|
||
$find_user = $part_user[0];
|
||
}
|
||
|
||
if(isset($call->status) && $call->status == 'MISSED'){
|
||
if($call->direction == 'INBOUND'){
|
||
$type = 3;
|
||
} else {
|
||
$type = 0;
|
||
}
|
||
|
||
} else {
|
||
if($call->direction == 'INBOUND'){
|
||
|
||
$type = 2;
|
||
|
||
} else {
|
||
$type = 1;
|
||
|
||
}
|
||
}
|
||
|
||
|
||
$this->phone_type = $this->phone_types[$type];
|
||
// echo $find_user.'*****<br>';
|
||
return $find_user;
|
||
}
|
||
|
||
public function get_phone_type($phone){
|
||
$find_user = $this->type_phone($phone);
|
||
return json_encode(array('type'=>$this->phone_type, 'find_user'=>$find_user));
|
||
}
|
||
|
||
//Установка стадии клиента
|
||
private function set_client_stage($stage){
|
||
$this -> client_stage = $stage;
|
||
}
|
||
|
||
public function find_user($phone, $agency_id=0){
|
||
// echo $phone."\n";
|
||
$user_id = 0;
|
||
$part_user = explode('@', $phone);
|
||
if(isset($part_user[0])){
|
||
$phone = $part_user[0];
|
||
}
|
||
$phone = $this->ver_phone($phone);
|
||
|
||
$sql_user = "SELECT id FROM users WHERE phone = '".$phone."' and blocked=0";
|
||
|
||
// echo $sql_user."\n";
|
||
|
||
$q_user = mysql_query($sql_user);
|
||
if(mysql_num_rows($q_user) > 0){
|
||
$r_user = mysql_fetch_assoc($q_user);
|
||
$user_id = $r_user['id'];
|
||
}
|
||
|
||
return $user_id;
|
||
}
|
||
|
||
public function find_client($phone, $no = false){
|
||
$this -> set_client_stage(0);
|
||
$client_id = 0;
|
||
$phone_client = $this -> ver_phone($phone);
|
||
|
||
$sql_cl = "SELECT `id`, `stage` FROM `clients` WHERE (phone = '$phone_client' OR id in (SELECT client_id FROM clients_phone2 WHERE phone = '$phone_client')) and (who_work in (".implode(',', $this->users).") or id_agent in (".implode(',', $this->users)."))";
|
||
if($no){
|
||
$sql_cl = "SELECT `id`, `stage` FROM `clients` WHERE (phone = '$phone_client' OR id in (SELECT client_id FROM clients_phone2 WHERE phone = '$phone_client'))";
|
||
|
||
}
|
||
//echo $sql_cl.'****************';
|
||
$q_cl = mysql_query($sql_cl);
|
||
if(mysql_num_rows($q_cl) > 0){
|
||
$r_cl = mysql_fetch_assoc($q_cl);
|
||
$client_id = $r_cl['id'];
|
||
$this -> set_client_stage($r_cl['stage']);
|
||
}
|
||
return $client_id;
|
||
}
|
||
|
||
|
||
|
||
public function recordSave($p){
|
||
if (!is_dir($_SERVER['DOCUMENT_ROOT'] . "/server/beeline")) {
|
||
mkdir($_SERVER['DOCUMENT_ROOT'] . "/server/beeline", 0777);
|
||
}
|
||
$records = array();
|
||
|
||
$records[] = $p->externalId;
|
||
$file = trim($this->get_record($p->id));
|
||
$name = $p->externalId.'.mp3';
|
||
if(!file_exists($_SERVER['DOCUMENT_ROOT'].'/server/beeline/'.$name)){
|
||
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/server/beeline/'.$name, $file);
|
||
}
|
||
//var_dump($file);*/
|
||
|
||
return json_encode($records);
|
||
}
|
||
|
||
public function find_user_comment($call, $type){
|
||
|
||
$number = $call->abonent->userId;
|
||
|
||
$mes = '';
|
||
$sql = "SELECT fio FROM mango_call_users WHERE number_sip = '".$number."'";
|
||
//echo $sql;
|
||
$q = mysql_query($sql);
|
||
if(mysql_num_rows($q) > 0){
|
||
$r = mysql_fetch_assoc($q);
|
||
$mes = '(Сотрудник '.$r['fio'].')';
|
||
}
|
||
|
||
return $mes;
|
||
}
|
||
|
||
public function stat($call, $agency_id){
|
||
$id = 0;
|
||
$idpg = 0;
|
||
$from_extension = '';
|
||
$to_extension = '';
|
||
|
||
if($call->direction == 'INBOUND'){
|
||
$to_number = $call->abonent->userId;
|
||
$from_number = $call->phone;
|
||
$to_extension = $call->abonent->extension;
|
||
if(empty($to_extension)){
|
||
$to_extension = $call->abonent->userId;
|
||
}
|
||
$entry_id = $call->abonent->userId;
|
||
} else {
|
||
$to_number = $call->phone;
|
||
$from_number = $call->abonent->userId;
|
||
$from_extension = $call->abonent->extension;
|
||
if(empty($from_extension)){
|
||
$from_extension = $call->abonent->userId;
|
||
}
|
||
$entry_id = $call->phone;
|
||
}
|
||
|
||
$call_id = false;
|
||
$operator_call_id = 0;
|
||
|
||
if(isset($call->callId)){
|
||
$operator_call_id = (int)str_replace(['callhalf-',':'],'',$call->callId);
|
||
}
|
||
|
||
|
||
|
||
if(!isset($call->id)){
|
||
$call->id = $call->startDate+$call->duration;
|
||
}
|
||
//echo $to_number.'<br>';
|
||
$sql = "SELECT id FROM mango_calls WHERE uuid = '".$call->id."'";
|
||
$q = mysql_query($sql);
|
||
$qpg = $this->dbpg->query($sql);
|
||
$date = floor($call->date/1000);
|
||
/* if(mysql_num_rows($q) == 0){
|
||
|
||
if(isset($call->externalId)){
|
||
$record = $this->recordSave($call);
|
||
} else {
|
||
$record = json_encode([]);
|
||
}
|
||
|
||
|
||
$answerResult = 'answered';
|
||
$answer = $date;
|
||
if(isset($call->status) && $call->status == 'MISSED'){
|
||
$answerResult = 'not answered';
|
||
$answer = 0;
|
||
}
|
||
$start = $date;
|
||
$finish = floor(($call->date + $call->duration)/1000);
|
||
// проверка записанных звонков с виджета
|
||
$update = false;
|
||
if($call->direction == 'INBOUND'){
|
||
//$uuid = $entry_id .".".($call->startDate);
|
||
$_sql = "SELECT id FROM mango_calls WHERE operator_id = 2 and `operator_call_id`=$operator_call_id";
|
||
if(!empty($from_number)){
|
||
$_sql .= "and from_number = '$from_number'";
|
||
}
|
||
$_c = mysql_fetch_assoc(mysql_query($sql));
|
||
if(isset($_c['id'])){
|
||
$update = true;
|
||
}
|
||
}
|
||
|
||
if($update){
|
||
$in = "UPDATE `mango_calls` SET
|
||
`records`='" . $record . "',
|
||
`start`= $start,
|
||
`finish`=$finish,
|
||
`to_extension`='" . $to_extension . "',
|
||
`operator_id`=2,
|
||
`operator_call_id`=$operator_call_id,
|
||
`uuid`='" . $call->id . "' WHERE id =".$_c['id'];
|
||
$id = (int)$_c['id'];
|
||
}
|
||
else {
|
||
|
||
$in = "INSERT INTO `mango_calls` SET
|
||
`records`='" . $record . "',
|
||
`start`= $start,
|
||
`finish`=$finish,
|
||
`answer`=$answer,
|
||
`from_extension`='" . $from_extension . "',
|
||
`from_number`= '" . $from_number . "',
|
||
`to_extension`='" . $to_extension . "',
|
||
`to_number`='" . $to_number . "',
|
||
`disconnect_reason`='" . $answerResult . "',
|
||
`entry_id`='" . $entry_id . "',
|
||
`line_number`='beeline',
|
||
`location`='',
|
||
`uuid`='" . $call->id . "',
|
||
`agency_id`=$agency_id,
|
||
`operator_id`=2,
|
||
`operator_call_id`=$operator_call_id,
|
||
`vpbx_id`='" . $call->abonent->userId ."'
|
||
";
|
||
}
|
||
|
||
mysql_query($in);
|
||
if(!$update){
|
||
$id = mysql_insert_id();
|
||
}
|
||
} else {
|
||
$r = mysql_fetch_assoc($q);
|
||
$id = (int)$r['id'];
|
||
}
|
||
*/
|
||
|
||
if($this->dbpg->num_rows($qpg) == 0){
|
||
|
||
if(isset($call->externalId)){
|
||
$record = $this->recordSave($call);
|
||
} else {
|
||
$record = json_encode([]);
|
||
}
|
||
|
||
|
||
$answerResult = 'answered';
|
||
$answer = $date;
|
||
if(isset($call->status) && $call->status == 'MISSED'){
|
||
$answerResult = 'not answered';
|
||
$answer = 0;
|
||
}
|
||
$start = $date;
|
||
$finish = floor(($call->date + $call->duration)/1000);
|
||
// проверка записанных звонков с виджета
|
||
$update = false;
|
||
if($call->direction == 'INBOUND'){
|
||
//$uuid = $entry_id .".".($call->startDate);
|
||
$_sql = "SELECT id FROM mango_calls WHERE operator_id = 2 and operator_call_id='{$operator_call_id}'";
|
||
if(!empty($from_number)){
|
||
$_sql .= "and from_number = '$from_number'";
|
||
}
|
||
$_c = $this->dbpg->fetch_assoc($this->dbpg->query($sql));
|
||
if(isset($_c['id'])){
|
||
$update = true;
|
||
}
|
||
}
|
||
|
||
if($update){
|
||
$in = "UPDATE mango_calls SET
|
||
records='" . $record . "',
|
||
start= $start,
|
||
finish=$finish,
|
||
to_extension='" . $to_extension . "',
|
||
from_extension='".$from_extension."',
|
||
operator_id=2,
|
||
operator_call_id='{$operator_call_id}',
|
||
uuid='" . $call->id . "' WHERE id =".$_c['id'];
|
||
$id = (int)$_c['id'];
|
||
}
|
||
else {
|
||
|
||
$in = "INSERT INTO mango_calls (records,
|
||
start,
|
||
finish,
|
||
answer,
|
||
from_extension,
|
||
from_number,
|
||
to_extension,
|
||
to_number,
|
||
disconnect_reason,
|
||
entry_id,
|
||
line_number,
|
||
location,
|
||
uuid,
|
||
agency_id,
|
||
operator_id,
|
||
operator_call_id,
|
||
vpbx_id
|
||
)
|
||
VALUES (
|
||
'" . $record . "',
|
||
$start,
|
||
$finish,
|
||
$answer,
|
||
'" . $from_extension . "',
|
||
'" . $from_number . "',
|
||
'" . $to_extension . "',
|
||
'" . $to_number . "',
|
||
'" . $answerResult . "',
|
||
'" . $entry_id . "',
|
||
'beeline',
|
||
'',
|
||
'" . $call->id . "',
|
||
$agency_id,
|
||
2,
|
||
'{$operator_call_id}',
|
||
'" . $call->abonent->userId ."'
|
||
)";
|
||
|
||
}
|
||
//file_put_contents($_SERVER['DOCUMENT_ROOT']."/webhooks/log_call_sql.txt", $in."\n", FILE_APPEND);
|
||
$this->dbpg->query($in);
|
||
if(!$update){
|
||
$idpg = $this->dbpg->insert_id();
|
||
}
|
||
} else {
|
||
$r = $this->dbpg->fetch_assoc($qpg);
|
||
$idpg = (int)$r['id'];
|
||
}
|
||
$result['id'] = $id;
|
||
$result['idpg'] = $idpg;
|
||
$result['call_id'] = $call->id;
|
||
return $result;
|
||
}
|
||
|
||
public function saveUser($user, $agency_id){
|
||
$phone = '';
|
||
|
||
if(isset($user->email) && !empty($user->email)){
|
||
$user_id = $user->userId;
|
||
|
||
$part_user = explode('@', $user_id);
|
||
if(isset($part_user[0])){
|
||
$user_id = $part_user[0];
|
||
}
|
||
|
||
$sql = "SELECT id, number_phone FROM mango_call_users WHERE user_id='".$user_id."'";
|
||
$q = mysql_query($sql);
|
||
|
||
|
||
$sql_p = "SELECT phone FROM users WHERE email = '".$user->email."' AND company_id = {$agency_id}";
|
||
if($agency_id == 19895){
|
||
//echo $sql_p."\n";
|
||
}
|
||
$q_p = mysql_query($sql_p);
|
||
if(mysql_num_rows($q_p) > 0){
|
||
$r_p = mysql_fetch_assoc($q_p);
|
||
$phone = $r_p['phone'];
|
||
} else {
|
||
$part_phone = str_replace('@ip.beeline.ru', '', $user_id);
|
||
$in_vdx = "'".$user_id."', '".$part_phone."', '".$this->ver_phone($part_phone)."'";
|
||
$sql_p = "SELECT phone FROM users WHERE vpbx_id in ({$in_vdx}) AND company_id = {$agency_id}";
|
||
if($agency_id == 19895){
|
||
//echo $sql_p."\n";
|
||
}
|
||
|
||
$q_p = mysql_query($sql_p);
|
||
if(mysql_num_rows($q_p) > 0){
|
||
$r_p = mysql_fetch_assoc($q_p);
|
||
$phone = $r_p['phone'];
|
||
}
|
||
}
|
||
|
||
$user_name = '';
|
||
if(isset($user->lastName) && !empty($user->lastName)){
|
||
$user_name .= $user->lastName;
|
||
}
|
||
|
||
if(isset($user->firstName) && !empty($user->firstName)){
|
||
if($user_name != ''){
|
||
$user_name .= ' ';
|
||
}
|
||
$user_name .= $user->firstName;
|
||
}
|
||
|
||
$department = '';
|
||
|
||
if(isset($user->department)){
|
||
$department = $user->department;
|
||
}
|
||
//Записываем
|
||
if(mysql_num_rows($q) == 0){
|
||
/*f($phone == ''){
|
||
$phone = mysql_fetch_assoc($q)['number_phone'];
|
||
}*/
|
||
$in = "INSERT INTO `mango_call_users` SET
|
||
user_id = '".$user_id."',
|
||
fio = '".$user_name."',
|
||
number_phone = '".$phone."',
|
||
number_sip = '".$user_id."',
|
||
department = '".trim($department)."',
|
||
extension = '".(isset($user->extension) ? $user->extension : '')."',
|
||
agency_id = $agency_id
|
||
";
|
||
// echo $in."\n";
|
||
mysql_query($in);
|
||
} else {
|
||
$up = "UPDATE `mango_call_users` SET
|
||
fio = '".$user_name."',
|
||
number_phone = '".$phone."',
|
||
number_sip = '".$user_id."',
|
||
department = '".trim($department)."',
|
||
extension = '".(isset($user->extension) ? $user->extension : '')."',
|
||
agency_id = $agency_id
|
||
WHERE user_id = '".$user_id."'";
|
||
// echo $up."\n";
|
||
mysql_query($up);
|
||
}
|
||
}
|
||
|
||
return $phone;
|
||
}
|
||
|
||
public function findSource($phone){
|
||
$source = 0;
|
||
$sql = "SELECT * FROM advertising_phone WHERE phone = '".$phone."'";
|
||
$q = mysql_query($sql);
|
||
if(mysql_num_rows($q) > 0){
|
||
$r = mysql_fetch_assoc($q);
|
||
$sql_v = "SELECT id FROM advertising_sources WHERE id = ".$r['adv_id']." AND user_id in (".implode(', ',$this->users).")";
|
||
$q_v = mysql_query($sql_v);
|
||
|
||
if(mysql_num_rows($q_v) > 0){
|
||
$r_v = mysql_fetch_assoc($q_v);
|
||
$source = $r_v['id'];
|
||
}
|
||
}
|
||
|
||
return $source;
|
||
}
|
||
|
||
public function save_user_call($id_call, $user_find, $main_user, $agency_id=0){
|
||
$user_id = 0;
|
||
|
||
if($id_call > 0){
|
||
$user_id = (int)$this->find_user($user_find);
|
||
if($user_id == 0){
|
||
$user_id = (int)$main_user;
|
||
}
|
||
}
|
||
|
||
if($user_id > 0){
|
||
$sql = "SELECT id FROM user_call WHERE call_id = {$id_call}";
|
||
$q = mysql_query($sql);
|
||
if(mysql_num_rows($q) == 0){
|
||
$sql_in = "INSERT INTO user_call SET call_id = {$id_call}, user_id = {$user_id}";
|
||
mysql_query($sql_in);
|
||
}
|
||
}
|
||
}
|
||
|
||
public function save_user_call_pg($id_call, $user_find, $main_user, $agency_id=0){
|
||
$user_id = 0;
|
||
|
||
if($id_call > 0){
|
||
$user_id = (int)$this->find_user($user_find);
|
||
if($user_id == 0){
|
||
$user_id = (int)$main_user;
|
||
}
|
||
}
|
||
|
||
if($user_id > 0){
|
||
$sql = "SELECT id FROM user_call WHERE call_id = {$id_call}";
|
||
$q = $this->dbpg->query($sql);
|
||
if($this->dbpg->num_rows($q) == 0){
|
||
$sql_in = "INSERT INTO user_call (call_id, user_id) VALUES ($id_call, $user_id)";
|
||
if($agency_id == 11916){
|
||
//file_put_contents($_SERVER['DOCUMENT_ROOT']."/webhooks/log_call_sql.txt", $sql_in."\n", FILE_APPEND);
|
||
}
|
||
$this->dbpg->query($sql_in);
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|