@fakin_kiska
Telegram Bots

Как получать данные с вебхук ивента в правильном порядке?

Суть такая - при запуске пайплайна в gitlab тот в вебхуке выдает подробные данные, проблема в том, что все этапы выдаются рандомно, а мне нужно сохранять их в правильном порядке и через телеграм бота получать сообщения об их статусе

Каким образом можно настроить правильное получение этапов?

Мой код:

if ($json = file_get_contents('php://input')) {
    $print_json = print_r($json, true);
    $arr = explode(',', $print_json);

for ($i = 30; $i <= 500; $i++) { // $i это номер строки в массиве json'a
    if (substr($arr[$i], 1, 5) == 'stage') { // Если в строке попался stage

        $stage = substr(substr($arr[$i], 9), 0, -1);
        $job_name = substr(substr($arr[$i + 1], 8), 0, -1);
        $status = substr(substr($arr[$i + 2], 10), 0, -1);
        $finished_at = substr(substr($arr[$i + 5], 15), 0, -1);
        $duration = substr(substr($arr[$i + 6], 11), 0, -1);

        $first_stage = substr(substr($arr[9], 11), 0, -1); // Самый первый этап
        $post = [
            'chat_id' => 915597301,
            'text' => $first_stage,
        ];
        sendRequest('sendMessage', $post);
        $count = 1;

        for ($x = 10; $x <= 30; $x++) { // Промежуточные этапы
            $intermediate_stages = substr($arr[$x], 0);
            if (substr($arr[$x], -1) == ']') {
                break;
            }
            $post = [
                'chat_id' => 915597301,
                'text' => substr(substr($arr[$x], 1), 0, -1),
            ];
            sendRequest('sendMessage', $post);
            $count += 1;
        }

        if ($count > 2) { // Последний этап
            $last_stage = substr(substr($arr[$x], 1), 0, -2);
            $post = [
                'chat_id' => 915597301,
                'text' => $last_stage,
            ];
            sendRequest('sendMessage', $post);
        }

        if ($status == 'created' || $status == 'running') {
            $post = [
                'chat_id' => 915597301,
                'text' => ' <b>Webhook caught pipeline event!</b>',
                'parse_mode' => 'html'
            ];
            sendRequest('sendMessage', $post);
        } elseif ($status == 'success') {
            $post = [
                'chat_id' => 915597301,
                'text' => ' <b>Webhook caught pipeline event!</b>',
                'parse_mode' => 'html'
            ];
            sendRequest('sendMessage', $post);
            }
        }
    }
}


Этапы в том порядке, который мне нужен:

61a571124fd38015650727.png

То, что выводится мне:

61a5711d507a4446820553.png
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы