Документация для этой статьи:
Сервисы для тестирования:
Подготовка
- Зайти в ЛК рекламного кабинета VK
- В левом меню выбрать пункт "настройки"
- Скопировать client_id
- Нажать на доп. получение данных api
- Авторизоваться
- Скопировать client_secret (ОТОБРАЖАЕТСЯ ТОЛЬКО 10 МИНУТ)
- Сохраняем полученные данные в документ
Получение токена доступа через POSTMAN
- Открываем POSTMAN
- Выбираем метод POST
- Адрес для запроса https://ads.vk.com/api/v3/subscription.json
- Авторизация - тип: Bearer Token, Токен - полученный в пункте №2
- Вкладка HEADERS, добавляем ключ Content-Type, значение application/json
- Вкладка Body, ставим галочку на "raw", выбираем метод JSON, вставляем скрипт формата:
{
"resource": "LEAD",
"callback_url": "https://адрес обработчика"
}
9. После выполнения этого запроса будет оформлена подписка на форму и обработчику будут передаваться данные по заполненным формам (Обратите внимание, что от отправки данных до получения на обработчик может пройти до 15 минут)
Передача данных в Битрикс24
Пример скрипта
<?php
if (!isset($_REQUEST)) {
return;
}
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
echo "Нет таких тут!";
}
else{
// Возвращаем "ok" серверу
echo('ok');
// Получение данных из POST-запроса
$jsondata = file_get_contents('php://input');
// Динамические данные
$url='https://myb24.bitrix24.ru/rest/1/*******'; //Тут вебхук с правами CRM
$sourceId= 'web'; //Тут ID источника
$title = 'Новый лид от VK';
// Убираем сломанную строку
$cleanedJson = preg_replace('/,\s*"created_at":\s*"[^"]+"\s*/', '', $jsondata);
// Преобразование JSON в ассоциативный массив
$data = json_decode($cleanedJson);
// Записываем переменные
$name = $data->data->contact_info->first_name;
$phone = $data->data->contact_info->phone;
$email = $data->data->contact_info->email;
// Записываем ответы для комментария
$comm = '';
$questionNumber = 1;
foreach ($data->data->answers as $answer) {
$comm .= 'Вопрос ' . $questionNumber . ': ' . $answer->answer_text . '<br>';
$questionNumber++;
}
// Убираем последний перенос строки в комментарии
$comm = rtrim($comm, '<br>');
// Формируем данные для REST
$queryUrl = $url . 'crm.lead.add';
$leadData = array(
'fields' => array(
'TITLE' => $title,
'NAME' => $name,
'PHONE' => array(array('VALUE' => $phone, 'VALUE_TYPE' => 'WORK')),
'EMAIL' => array(array('VALUE' => $email, 'VALUE_TYPE' => 'WORK')),
"COMMENTS" => $comm,
"STATUS_ID" => "NEW",
"OPENED" => "Y",
"SOURCE_ID" => $sourceId,
"ASSIGNED_BY_ID" => 1,
// Добавьте другие необходимые поля для лида
)
);
// Преобразование данных в формат JSON
$jsonData = json_encode($leadData);
// Отправляем REST
$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 => $jsonData,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Content-Length: ' . strlen($jsonData)
)
));
$result = curl_exec($curl);
curl_close($curl);
// логгируем результат
if ($result === false) {
file_put_contents('errors.txt',PHP_EOL . date("Y-m-d H:i:s") . PHP_EOL . 'Ошибка при выполнении запроса curl: ' . curl_error($curl), FILE_APPEND);
} else {
file_put_contents('logs.txt',PHP_EOL . date("Y-m-d H:i:s") . PHP_EOL . 'Ответ от сервера Bitrix24: ' . $result, FILE_APPEND);
}
}
Готово.
Разработка Белокуров Александр