public function handle_webhook( WP_REST_Request $request ) { // 1) Validação do token (já existente) $received_token = $request->get_header('verification-token'); if ( empty( $received_token ) || $received_token !== '6J9dgUbNRbiNt7W8x5qdsg' ) { return new WP_REST_Response( [ 'error' => 'Invalid verification token' ], 401 ); } // 2) Decodifica o JSON $body_raw = $request->get_body(); $body = json_decode( $body_raw, true ); // 3) Verifica o evento if ( empty( $body['event'] ) || $body['event'] !== 'recording.completed' ) { return rest_ensure_response( [ 'status' => 'ignored – not recording.completed' ] ); } // 4) Extrai os arquivos $files = $body['payload']['object']['recording_files'] ?? []; $urls = []; foreach ( $files as $file ) { if ( ! empty( $file['download_url'] ) ) { $urls[] = $file['download_url']; } } // 5) Log para confirmar que capturou as URLs if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { error_log( "[zoom-sync] URLs extraídas: " . print_r( $urls, true ) ); } // 6) Retorna as URLs no response para você testar return rest_ensure_response( [ 'status' => 'urls_extracted', 'download_urls' => $urls, ] ); } 1 - Uncaught Error: Class "Zoom_Sync_Basic" not found in /home/wwwesmtc/public_html/wp-content/plugins/zoom-sync/zoom-sync.php:18 Stack trace: #0 /home/wwwesmtc/public_html/wp-includes/class-wp-hook.php(324): {closure}('') #1 /home/wwwesmtc/public_html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #2 /home/wwwesmtc/public_html/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #3 /home/wwwesmtc/public_html/wp-settings.php(578): do_action('plugins_loaded') #4 /home/wwwesmtc/public_html/wp-config.php(82): require_once('/home/wwwesmtc/...') #5 /home/wwwesmtc/public_html/wp-load.php(50): require_once('/home/wwwesmtc/...') #6 /home/wwwesmtc/public_html/wp-blog-header.php(13): require_once('/home/wwwesmtc/...') #7 /home/wwwesmtc/public_html/index.php(17): require('/home/wwwesmtc/...') #8 {main} thrown - /home/wwwesmtc/public_html/wp-content/plugins/zoom-sync/zoom-sync.php - 18