Нужно сделать, чтобы когда я оставлял на сайте заявку, в форме которая написана руками, но подключена к СРМ, не только создавался новый контакт, но и обновлялся в случае, если с сайте уже пишет пользователь, который обращался раньше.
Теперь детально: Прям кровь из носа нужно сделать, чтобы при повторном оставлении заявки на сайте пользователем, он не создавался как новый контакт, а на него просто ставилась задача " Связаться", если он уже есть. ( Главное, чтобы не было дублей )
Вот есть код, на всякий:
<?php
$site_name = $_SERVER["HTTP_REFERER"];
//Путь сайта для создание разных меток для amoCRM
$site_path = str_replace($_SERVER['HTTP_HOST'] , '', $_SERVER['HTTP_REFERER']);
$site_path = str_replace('http://' , '', $site_path);
$site_path = str_replace('/' , '', $site_path);
//Формируем из Город по IP
$ip = $_SERVER['REMOTE_ADDR'];
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
$details1 = $details->region;
$details2 = $details->city;
$geo= ''.$details1.', '.$details2.'';
//Формируем данные для добавления их в amoCRM
$contact = array(
'name'=>$data['name'],
'tags' => 'Заявка с сайта, '. $site_path,
'responsible_user_id'=>$manager,
'text'=>12488185,
'custom_fields'=>array(
array(
'id'=>$custom_fields['EMAIL'],
'values'=>array(
array(
'value'=>$data['email'],
'enum'=>'WORK'
)
)
),
array(
'id'=>1755674,
'values'=>array(
array(
'value'=> $geo
)
)
)
)
);
//Сбор данных с полей
if(!empty($data['phone']))
$contact['custom_fields'][]=array(
'id'=>$custom_fields['PHONE'],
'values'=>array(
array(
'value'=>$data['phone'],
'enum'=>'OTHER'
)
)
);
if(!empty($data['web']))
$contact['custom_fields'][]=array(
'id'=>$custom_fields['Сайт'],
'values'=>array(
array(
'value'=>$data['web']
)
)
);
$set['request']['contacts']['add'][]=$contact;
#Формируем ссылку для запроса
$link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/contacts/set';
$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($set));
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
CheckCurlResponse($code);
/**
* Данные получаем в формате JSON, поэтому, для получения читаемых данных,
* нам придётся перевести ответ в формат, понятный PHP
*/
$Response=json_decode($out,true);
$contact_id=$Response['response']['contacts']['add'][0]['id'];
$contacts['request']['contacts']['update']=array(
array(
'id'=>$contact_id,
'last_modified' => time(),
'custom_fields'=>array(
#Проект
array(
'id'=>$custom_fields['EMAIL'],
'values'=>array(
array(
'value'=>$data['email'],
'enum'=>'WORK'
)
)
)
)
) //возможно лишняя запятая
);
#Формируем ссылку для запроса
$link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/contacts/set';
$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($contacts));
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
// Ставим задачу
$tasks['request']['tasks']['add']=array(
array(
'element_id'=>$contact_id,// ID созданной сделки ($lead_id) или контакта ($contact_id)
'element_type'=>1, // Type: 1 - контакт, 2 - сделка
'task_type'=>52426, #Встреча
// 'text'=>'Заявка с '. $site_name . ' ' . $data['massage'] . ' ' . $data['action'] ,
'text'=>'Заявка с ' . $site_name . ' ' . $data['action'] . ' ' . $data['massage'],
'responsible_user_id'=>$manager,
// пользователь Дима
'complete_till'=>time()+600,// 10 минут на выполнение
)
);
#Формируем ссылку для запроса
$link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/tasks/set';
$curl=curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
curl_setopt($curl,CURLOPT_URL,$link);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($tasks)); // Encode array in JSON format
curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
//curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
$out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
curl_close($curl);
//
// const VERSION = '0.0.1';
//
// private static $api_key = 'БЛА БЛА БЛА';
// private static $list_id = 'b36623ad35';
// private static $test_list_id = 'fdbb5d7d9f';
// private static $email;
// private static $is_test_subscribe = false;
//
//
// static function initialize($config=array())
// {
// CMS::add_component('MailChimpSync', new CMS_Mapper());
// }
//
//
// private static function get_datacenter_code()
// {
// return preg_match('{-(.*)$}', self::$api_key, $m) ? $m[1] : false;
// }
//
// private static function get_api_url($section, $method)
// {
// if ($datacenter_code = self::get_datacenter_code()) {
// $base_api_url = 'https://'.$datacenter_code.'.api.mailchimp.com/2.0/';
// return $base_api_url.$section.'/'.$method;
// }
// return false;
// }
//
//
// public static function build_mailchimp_object()
// {
// $result = new stdClass();
// $result->apikey = self::$api_key;
// $result->id = self::$is_test_subscribe ? self::$test_list_id : self::$list_id;
// $result->email = self::build_mailchimp_email_object();
//
// $result_merge_vars = new stdClass();
// $result_merge_vars->mc_language = 'ru';
//
// $result->merge_vars = $result_merge_vars;
// return $result;
// }
//
//
// public static function build_mailchimp_email_object()
// {
// $email_obj = new stdClass();
// $email_obj->email = self::$email;
// $email_obj->euid = md5(self::$email);
// $email_obj->leid = self::$list_id;
// return $email_obj;
// }
//unisender cUrl subscrible - подписка
// Ваш ключ доступа к API (из Личного Кабинета)
$api_key = "БЛА БЛА БЛА";
// Данные о новом подписчике
$user_email = $_POST['email'];
$user_name = $_POST['name'];
$user_lists = "482917";
$user_tag = "noread";
$str= $_POST['phone'];
$phone= preg_replace('/[^0-9]/', '', $str);
// Создаём POST-запрос
$POST = array (
'api_key' => $api_key,
'list_ids' => $user_lists,
'fields[email]' => $user_email,
'fields[Name]' => $user_name,
'fields[phone]' => $phone,
'tags' => $user_tag,
'double_optin' => '3',
'overwrite' => '1'
);
// Устанавливаем соединение
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_URL,
'https://us1.api.mailchimp.com/3.0/lists');
$result = curl_exec($ch);
if ($result) {
// Раскодируем ответ API-сервера
$jsonObj = json_decode($result);
if(null===$jsonObj) {
// Ошибка в полученном ответе
//echo "Invalid JSON";
}
elseif(!empty($jsonObj->error)) {
// Ошибка добавления пользователя
// echo "An error occured: " . $jsonObj->error . "(code: " . $jsonObj->code . ")";
} else {
// Новый пользователь успешно добавлен
//echo "Added. ID is " . $jsonObj->result->person_id;
}
} else {
// Ошибка соединения с API-сервером
//echo "API access error";
}
?>