false, 'error' => 'No SMS provider configured' ]; } // Validate provider configuration before sending $validation = $provider->validate_configuration(); if (!$validation['success']) { error_log('TWP SMS Error: Provider validation failed - ' . $validation['error']); return $validation; } // Send SMS $result = $provider->send_sms($to_number, $message, $from_number); // Log the result if ($result['success']) { error_log(sprintf( 'TWP SMS: Message sent via %s to %s', $provider->get_provider_name(), $to_number )); } else { error_log(sprintf( 'TWP SMS Error: Failed to send via %s to %s - %s', $provider->get_provider_name(), $to_number, $result['error'] ?? 'Unknown error' )); } return $result; } /** * Get list of available SMS providers * * @return array Array of provider IDs and names */ public static function get_available_providers() { return [ 'twilio' => 'Twilio', 'aws_sns' => 'Amazon SNS' ]; } /** * Validate current provider configuration * * @return array Response array with 'success' and 'message' or 'error' */ public static function validate_current_provider() { $provider = self::get_provider(); if (!$provider) { return [ 'success' => false, 'error' => 'No SMS provider configured' ]; } return $provider->validate_configuration(); } /** * Get current provider name * * @return string Provider name */ public static function get_current_provider_name() { $provider = self::get_provider(); if (!$provider) { return 'None'; } return $provider->get_provider_name(); } /** * Test SMS send * * @param string $to_number Test recipient number * @return array Response array */ public static function send_test_sms($to_number) { $message = sprintf( 'This is a test message from Twilio WordPress Plugin using %s provider at %s', self::get_current_provider_name(), current_time('Y-m-d H:i:s') ); return self::send_sms($to_number, $message); } }