При отправке через обычный исходящий вебхук, хандлером, бывает возникает ошибка и уведомление не отправляется. Чаще всего происходит это из-за ограничения в кол-ве символов. С помощью PHP кода ниже мы решаем проблему с ограничением, перемещая все сообщение в data.
$webhookUrl = 'https://band.ru/hooks/**';
// Формируем сообщение
$message = " \n"
. "\n"
. "{=Variable:Variable2}";
// Подготовка данных
$data = [
'text' => $message
];
// Настройки HTTP-запроса
$options = [
'http' => [
'header' => "Content-type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($data),
'ignore_errors' => true // Игнорировать ошибки HTTP
],
];
try {
$context = stream_context_create($options);
$result = file_get_contents($webhookUrl, false, $context);
// Проверка HTTP-ответа
if ($result === false) {
throw new Exception("Ошибка при отправке запроса");
}
// Проверка кода ответа (например, 200 OK)
if (isset($http_response_header)) {
preg_match('/HTTP\/\d\.\d\s(\d{3})/', $http_response_header[0], $matches);
$httpCode = $matches[1] ?? 0;
if ($httpCode != 200) {
throw new Exception("Вебхук вернул ошибку: HTTP {$httpCode}");
}
}
return true; // Успешное выполнение активности
} catch (Exception $e) {
// Логирование ошибки (если нужно)
$GLOBALS['APPLICATION']->ThrowException($e->getMessage());
return false; // Ошибка выполнения активности
}
webhookUrl — сюда мы помещаем адрес нашего вебхука
message — сюда мы кладем наше сообщение целиком
data — оборачиваем тест и отправляем уведомление