siip-whatsapp-notifications.../src/Facade/TwilioNotifierFacade.php
DANYDHSV b0b56a59ce feat: Dashboard administrativo, integración con API UCRM y optimización de Stripe
- Implementación de Dashboard profesional en public.php con CRUD de instaladores.
- Sincronización con la API de UCRM para selección y validación automática de administradores.
- Soporte para creación selectiva de clientes en Stripe (Etiqueta "CREAR CLIENTE STRIPE" vs "CREAR CLABE STRIPE").
- Mejora en la lógica de notificaciones de tareas (nuevo prefijo [CLIENTE-SIN-WHATSAPP]).
- Refactorización integral de fachadas y saneamiento de código muerto.
- Sistema de Modo Oscuro persistente con UI refinada.
2025-12-27 23:15:32 -06:00

65 lines
1.9 KiB
PHP
Executable File

<?php
declare(strict_types=1);
namespace SmsNotifier\Facade;
use SmsNotifier\Data\NotificationData;
use SmsNotifier\Data\PluginData;
use SmsNotifier\Factory\MessageTextFactory;
use SmsNotifier\Service\Logger;
use SmsNotifier\Service\OptionsManager;
use SmsNotifier\Service\SmsNumberProvider;
use Twilio\Rest\Client;
class TwilioNotifierFacade extends AbstractMessageNotifierFacade
{
private $twilioClient;
private $pluginData;
public function __construct(
Logger $logger,
MessageTextFactory $messageTextFactory,
SmsNumberProvider $smsNumberProvider,
OptionsManager $optionsManager
) {
parent::__construct($logger, $messageTextFactory, $smsNumberProvider);
$this->pluginData = $optionsManager->load();
}
public function getTwilioClient(): Client
{
if (!$this->twilioClient) {
$this->twilioClient = new Client(
$this->pluginData->twilioAccountSid ?? '',
$this->pluginData->twilioAuthToken ?? ''
);
}
return $this->twilioClient;
}
protected function sendWhatsApp(NotificationData $notificationData, string $clientSmsNumber): void
{
$this->logger->info("TwilioNotifierFacade: Enviando WhatsApp a $clientSmsNumber (Mock)");
}
protected function sendMessage(
NotificationData $notificationData,
string $clientSmsNumber,
string $messageBody
): void {
try {
$message = $this->getTwilioClient()->messages->create(
$clientSmsNumber,
[
'from' => $this->pluginData->twilioSmsNumber ?? '',
'body' => $messageBody,
]
);
$this->logger->info(sprintf('Twilio status: %s, ID: %s', $message->status, $message->sid));
} catch (\Exception $e) {
$this->logger->error("Error en Twilio: " . $e->getMessage());
}
}
}