Уведомление в Band с помощью PHP кода (активити)

При отправке через обычный исходящий вебхук, хандлером, бывает возникает ошибка и уведомление не отправляется. Чаще всего происходит это из-за ограничения в кол-ве символов. С помощью 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 — оборачиваем тест и отправляем уведомление