Пустое действие на ответ message_new от API ВК

Пишу бота для ВКонтакте. Бот на основании входящих данных из POST-запроса создаёт объект события и его использует. Я бы хотел чтобы при событии message_event (т.е. при нажатии на кнопку клавиатуры) бот отвечал на событие для того чтобы индикатор загрузки с кнопки пропал.

Пример клавиатуры Индикатор загрузки

Индикатор по идее должен пропадать при вызове метода messages.sendMessageEventAnswer, в соответствии с порядком действий. Этот метод должен принимать один из объектов show_snackbar, open_link, open_app. Но я не хочу ничего из этого, я хочу чтобы индикатор просто пропал. Как мне это сделать?

switch ($type) {
    case "message_new":
        return new TextMessageEvent(
            $object["message"]["id"],
            $user_model,
            $chat_of_msg,
            $object["message"]["text"],
            []
        );
    
    case "message_event":
        $payload = $object["payload"];
        
        // Ответ на событие должен быть здесь
        
        return new CallbackEvent(
            $object["event_id"],
            $user_model,
            $chat_of_msg,
            CallbackType::from($payload["type"]),
            $payload["data"]
        );
    
    default:
        return new UnknownEvent($user_model, $chat_of_msg);
}

Ответы (1 шт):

Автор решения: Вадим Королёв

Достаточно отправить пустую строку в поле event_data.

switch ($type) {
        case "message_new":
            return new TextMessageEvent(
                $object["message"]["id"],
                $user_model,
                $chat_of_msg,
                $object["message"]["text"],
                []
            );
        
        case "message_event":
            $payload = $object["payload"];
            
            $this->execApiMethod('messages.sendMessageEventAnswer', [
                'event_id' => $object['event_id'],
                'user_id' => $object['user_id'],
                'peer_id' => $object['peer_id'],
                'event_data' => ''
            ]);
            
            return new CallbackEvent(
                $object["event_id"],
                $user_model,
                $chat_of_msg,
                CallbackType::from($payload["type"]),
                $payload["data"]
            );
        
        default:
            return new UnknownEvent($user_model, $chat_of_msg);
    }

execApiMethod выглядит вот так:

// Выполняет метод API
public function execApiMethod(string $method, array $fields) : array {
    $fields["v"] = $this->api_version;
    $fields["access_token"] = $_ENV["vkcom_apikey"];
    $post_fields = http_build_query($fields);
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.vk.com/method/".$method);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    
    return json_decode($output, true);
}
→ Ссылка