Вебхуки (Webhooks)

Вебхуки позволяют обрабатывать заявки на отдельном хостинге. Например, можно на PHP написать интеграцию с CRM системой, которой у нас нет.

Создание вебхука

  1. В личном кабинете выберите раздел «Интеграции и уведомления» и нажмите на «Подключить новую интеграцию».

  2. В списке доступных сервисов выберите Webhook и введите следующие данные.

  • Название для интеграции (Имя) - его вы придумываете сами;
  • Url - адрес куда будут отправлены запросы
  • Тип запроса - выберите тип запроса который вам нужен (POST, GET)
  • Тип отправляемых данных (Content-Type) - доступна только для POST запроса, возможные значения x-www-form-urlencoded и raw
  • Заголовки - можете написать HTTP заголовки которые вам нужны. Есть возможность написать несколько заголовков, для этого необходимо добавить новые поля ввода с помощью кнопки "Добавить поле".
Заметка

Каждое поле должно содержать только один заголовок

image of Header field

  1. Дальше с помощью Конструктора тела запроса вы можете создать структуру тела вашего запроса

image of Header field

В левой колонке необходимо ввести ключ, которому будет соответствовать значение поля из правой колонки (данные из формы/заявки)

image of Header field

Также можно создавать вложенные данные (массивы). Для этого нужно нажать стрелку указывающую вправо

image of Header field

В данном примере получилась следующая структура:

{
"name": [
{
"email":"Email"
}
],
"phone": "Телефон"
}
  1. Сохраняем интеграцию

Пример на PHP

Пример кода на PHP для приема и обработки данных с вебхука

<?php
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
return;
}
try {
if (empty($_POST['email'])) {
throw new Exception('Не указан получатель');
}
if( empty($_POST['message'])) {
throw new Exception('Нет тела письма');
}
if(empty($_POST['subject'])){
throw new Exception('Нет темы письма');
}
$to_email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html;'. "\r\n";
$headers .= 'From: example@company.com';
if (mail($to_email, $subject, $message, $headers)) {
echo "Письмо отправлено";
} else {
throw new Exception('Ошибка при отправке письма');
}
} catch (Exception $exception) {
echo $exception->getMessage();
}