Skip to content

Instantly share code, notes, and snippets.

@Padilo300
Last active October 19, 2020 10:14
Show Gist options
  • Save Padilo300/2cd701af150af46669fa47c4078b3cb7 to your computer and use it in GitHub Desktop.
Save Padilo300/2cd701af150af46669fa47c4078b3cb7 to your computer and use it in GitHub Desktop.
Bitirx интеграция + UTM
<?php
define('B24_WEBHOOK','https://crm.b/rest/1/7v3c3wrjmtu2obfu/');
function save_utm(){
if( isset( $_GET['utm_source'] ) ) {
setcookie('utm_source',$_GET['utm_source'], time()+ (90*86400));
if($_GET['utm_source'] === 'googleads'){
setcookie('referer','8', time()+ (90*86400));
}elseif ($_GET['utm_source'] === 'facebook'){
setcookie('referer','4', time()+ (90*86400));
}
}else{
if (stripos($_SERVER['HTTP_REFERER'],'google') ){
setcookie('referer','11', time()+ (90*86400));
}else if(!array_key_exists('utm_source',$_COOKIE)){
setcookie('referer','WEB', time()+ (90*86400));
}
}
if( isset( $_GET['utm_medium'] ) ) {
setcookie('utm_medium',$_GET['utm_medium'], time()+ (90*86400));
}
if( isset( $_GET['utm_campaign'] ) ) {
setcookie('utm_campaign',$_GET['utm_campaign'], time()+ (90*86400));
}
if( isset( $_GET['utm_content'] ) ) {
setcookie('utm_content',$_GET['utm_content'], time()+ (90*86400));
}
if( isset( $_GET['utm_term'] ) ) {
setcookie('utm_term',$_GET['utm_term'], time()+ (90*86400));
}
}
save_utm();
function toTelegram($messaggio = 'Аргумент не переданн', $chatID = 544625714){
$token = '860948571:AAGHoIqIHlHt8UVpa87UZJPnAlBC6JGAoc4';
$url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chatID;
$url = $url . "&text=" . urlencode($messaggio);
$ch = curl_init();
$optArray = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($ch, $optArray);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
toTelegram("b-technology.pro \n ". json_encode($_POST));
function BX($method, $var){
$queryUrl = B24_WEBHOOK.$method.'.json';
$queryData = http_build_query($var);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $queryUrl,
CURLOPT_POSTFIELDS => $queryData,
));
return json_decode(curl_exec($curl), true);
}
function connect_b24(){
$BX_name = 'full_name' ; // ключи в POST
$BX_phone = 'phone' ; // ключи в POST
$BX_email = 'email' ; // ключи в POST
$BX_massege = 'massage' ; // ключи в POST
$BX_link = 'b-technology.pro';
$posted_data = $_POST;
$EMAIL_by_find_contact = FALSE ;
$PHONE_by_find_contact = FALSE ;
if(array_key_exists($BX_phone,$posted_data) &&!empty($posted_data[$BX_phone])){
$PHONE_by_find_contact = [ // готовим все возможные варианты номеров телефонов
$posted_data[$BX_phone],
'+' .$posted_data[$BX_phone],
'+3' .$posted_data[$BX_phone],
'+38' .$posted_data[$BX_phone],
'+380' .$posted_data[$BX_phone],
'+7' .$posted_data[$BX_phone],
];
}
if(array_key_exists($BX_email,$posted_data) && !empty($posted_data[$BX_email])){
$EMAIL_by_find_contact = $posted_data[$BX_email];
}
$contactDataPhone = [
'type' => 'PHONE',
'values' => $PHONE_by_find_contact,
'entity_type' => 'CONTACT',
];
$contactDataEmail = [
'type' => 'EMAIL',
'values' => $EMAIL_by_find_contact,
'entity_type' => 'CONTACT',
];
$contactId = null;
$duplicateByPhone = BX('crm.duplicate.findbycomm',$contactDataPhone); // поиск дубликата по номеру телефона
$duplicateByEmail = BX('crm.duplicate.findbycomm',$contactDataEmail); // поиск дубликата по email
if(array_key_exists('CONTACT',$duplicateByPhone['result']) && $duplicateByPhone['result']['CONTACT'][0] > 0){
$contactId = $duplicateByPhone['result']['CONTACT'][0]; // фиксируем id найденного контакта
}else if (array_key_exists('CONTACT',$duplicateByEmail['result']) && $duplicateByEmail['result']['CONTACT'][0] > 0){
$contactId = $duplicateByEmail['result']['CONTACT'][0]; // фиксируем id найденного контакта
}else{
// Контакт не был найден, потому создадим его
$contactData = [
'fields' => [
"NAME" => $posted_data[$BX_name],
"OPENED" => "Y",
"ASSIGNED_BY_ID"=> 1,
"TYPE_ID" => "CLIENT",
"SOURCE_ID" => $_COOKIE['referer'],
"PHONE" => $posted_data[$BX_phone] == null?:[['VALUE'=>$posted_data[$BX_phone],'VALUE_TYPE'=>"WORK"]],
'EMAIL' => $posted_data[$BX_email]== null?:[['VALUE'=>$posted_data[$BX_email],'VALUE_TYPE'=>"WORK"]],
],
'params' => [ "REGISTER_SONET_EVENT" => "Y" ]
];
$contactId = BX('crm.contact.add',$contactData)['result'];
}
$data = [
'fields'=>[
'TITLE' => "Лид с сайта $BX_link",
'NAME' => $posted_data[$BX_name] ,
'PHONE' => $posted_data[$BX_phone] == null?:[['VALUE'=>$posted_data[$BX_phone],'VALUE_TYPE'=>"WORK"]],
'EMAIL' => $posted_data[$BX_email] == null?:[['VALUE'=>$posted_data[$BX_email],'VALUE_TYPE'=>"WORK"]],
'COMMENTS' => $posted_data[$BX_massege] ,
'CONTACT_ID' => $contactId,
'UTM_CAMPAIGN' => $_COOKIE['utm_campaign'] ,
'UTM_CONTENT' => $_COOKIE['utm_content'] ,
'UTM_MEDIUM' => $_COOKIE['utm_medium'] ,
'UTM_SOURCE' => $_COOKIE['utm_source'] ,
'UTM_TERM' => $_COOKIE['utm_term'] ,
'SOURCE_ID' => $_COOKIE['referer'] ,
'params' => ['REGISTER_SONET_EVENT'=>'Y'],
]
];
toTelegram("b-technology.pro \n " .json_encode($data));
BX('crm.lead.add', $data);
}
connect_b24();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment