Документация для разработчиков
Темная тема

Использование сквозной аналитики при создании сделки и контакта

Пример использования сквозной аналитики при создании сделки и контакта. Предварительно создайте php-страницу с веб-формой обратной связи (Ф.И.О, телефон). На странице разместите код примера.

Что происходит во время выполнения кода?

1. Подключается стандартный js-код из сквозной аналитики Битрикс24.
2. После заполнения формы помимо полей формы в скрытом поле передаётся код для сквозной аналитики b24Tracker.guest.getTrace().
3. Далее создаётся сделка и связанный контакт.
4. И затем регистрируется "след" аналитики для этих объектов, передачей их типов и идентификаторов вида:
/rest/crm.tracking.trace.add?ENTITIES[0][TYPE]=CONTACT&ENTITIES[0][ID]=3215&ENTITIES[1][TYPE]=LEAD&ENTITIES[1][ID]=1&TRACE=….

Скрипт сквозной аналитики устанавливается на вашем сайте перед закрывающим тегом </body> на всех страницах сайта включая страницу с формой.

Внимание! Для использования примера настройте работу класса CRest и подключите файл crest.php в файлах, где используется данный класс. Подробнее.

<!DOCTYPE html>
<html lang="ru">
<head>
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" crossorigin="anonymous">
</head>
<body class="container">
<h1>Feedback</h1>
<?
include("crest.php");
$message = '';
if(!empty($_POST['SAVE']))
{
	$fields = [
		'NAME' => $_POST['NAME'],
		'LAST_NAME' => $_POST['LAST_NAME'],
		'PHONE' => [ [ 'value'=>$_POST['PHONE'] ] ],
	];

	$resultContact = CRest::call(
		'crm.contact.add',
		[
			'fields' => $fields
		]
	);
	if (!empty($resultContact['result']))
	{

		$arDealFields = [
			'TITLE' => 'Feedback page: '.$_POST['NAME'].' '.$_POST['LAST_NAME'],
			'CONTACT_ID' => $resultContact['result']
		];

		$resultDeal = CRest::call(
			'crm.deal.add',
			[
				'fields' => $arDealFields
			]
		);

		if (!empty($resultDeal['result']))
		{
			if(!empty($_POST['TRACE']))
			{

				$resultTrace = CRest::call(
					'crm.tracking.trace.add',
					[
						'ENTITIES' => [
							[
								'TYPE' => 'CONTACT',//COMPANY, CONTACT, DEAL, LEAD, QUOTE
								'ID' => $resultContact['result']
							],
							[
								'TYPE' => 'DEAL',//COMPANY, CONTACT, DEAL, LEAD, QUOTE
								'ID' => $resultDeal['result']
							]
						],
						'TRACE' =>	$_POST['TRACE']
					]
				);

			}

			$message = 'Feedback saved';
		}
		elseif (!empty($resultDeal['error_description']))
		{
			$message =	'Feedback has not been saved: '.$resultDeal['error_description'];
		}
		else
		{
			$message = 'Feedback has not been saved';
		}
	}
	elseif (!empty($resultContact['error_description']))
	{
		$message =	'Feedback has not been saved: '. $resultContact['error_description'];
	}
	else
	{
		$message = 'Feedback has not been saved';
	}
}
?>
<div class="col-12">
	<p><?=$message?></p>
</div>
<form method="post" action="">
	<input type="hidden" id="FORM_TRACE" name="TRACE">
	<div class="row">
		<div class="col-4 mt-3">
			<label>Name*</label>
		</div>
		<div class="col-6 mt-3">
			<input type="text" name="NAME" required>
		</div>
	</div>
	<div class="row">
		<div class="col-4 mt-3">
			<label>Last name*</label>
		</div>
		<div class="col-6 mt-3">
			<input type="text" name="LAST_NAME" required>
		</div>
	</div>
	<div class="row">
		<div class="col-4 mt-3">
			<label>Phone*</label>
		</div>
		<div class="col-6 mt-3">
			<input type="text" name="PHONE" required>
		</div>
	</div>
	<div class="row">
		<div class="col-sm-10">
			<input type="submit" name="SAVE" class="btn btn-primary" value="Send">
		</div>
	</div>
</form>
<script>
	window.onload = function(e){
		var traceDom = document.getElementById('FORM_TRACE');
		if(traceDom)
		{
			var trace = b24Tracker.guest.getTrace();
			traceDom.value = trace;
		}
	}
</script>
</body>
</html>

Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024