Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 28 additions & 5 deletions app/Http/Controllers/RealtimeController.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use App\Services\ApiKeyService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;

class RealtimeController extends Controller
Expand All @@ -30,13 +31,35 @@ public function generateEphemeralKey(Request $request)
], 422);
}

// Return the actual API key for now
// OpenAI Realtime API uses the API key directly in WebSocket connection
// Generate ephemeral key from OpenAI Realtime API
$response = Http::withHeaders([
'Authorization' => 'Bearer ' . $apiKey,
'Content-Type' => 'application/json',
])->post('https://api.openai.com/v1/realtime/sessions', [
'model' => 'gpt-4o-realtime-preview-2024-12-17',
'voice' => $request->input('voice', 'alloy'),
]);

if (!$response->successful()) {
Log::error('OpenAI API error: ' . $response->body());
throw new \Exception('Failed to generate ephemeral key from OpenAI: ' . $response->status());
}

$data = $response->json();

// Validate response structure
if (!isset($data['client_secret']['value']) || !isset($data['client_secret']['expires_at'])) {
Log::error('Invalid response structure from OpenAI API', ['response' => $data]);
throw new \Exception('Invalid response structure from OpenAI API');
}

// Return ephemeral key data
return response()->json([
'status' => 'success',
'ephemeralKey' => $apiKey, // Use actual API key
'expiresAt' => now()->addMinutes(60)->toIso8601String(),
'model' => 'gpt-4o-realtime-preview-2024-12-17',
'ephemeralKey' => $data['client_secret']['value'],
'expiresAt' => $data['client_secret']['expires_at'],
'sessionId' => $data['id'] ?? null,
'model' => $data['model'] ?? 'gpt-4o-realtime-preview-2024-12-17',
]);

} catch (\Exception $e) {
Expand Down