timeout(10) ->post($this->endpoint, [ 'apikey' => $this->apiKey, 'number' => $to, 'message' => $message, 'sendername' => $this->senderName, ]); } catch (ConnectionException $e) { Log::warning('Semaphore SMS connection failed', ['to' => $to, 'error' => $e->getMessage()]); return SmsResult::failure('connection_failed'); } if (! $response->successful()) { Log::warning('Semaphore SMS HTTP error', [ 'to' => $to, 'status' => $response->status(), 'body' => $response->body(), ]); return SmsResult::failure('provider_error_'.$response->status()); } $payload = $response->json(); $providerId = is_array($payload) && isset($payload[0]['message_id']) ? (string) $payload[0]['message_id'] : null; return SmsResult::success($providerId); } }