# Configuración de Twilio para Envío de SMS

## ✅ Configuración con archivo .env (Recomendado)

Las credenciales de Twilio ahora se configuran usando el archivo `.env` para mayor seguridad.

## Requisitos Previos

1. Cuenta de Twilio activa (https://www.twilio.com/)
2. Número de teléfono verificado en Twilio
3. Account SID y Auth Token de Twilio

## Pasos de Instalación

### 1. Instalar dependencias de Composer

**En el servidor:**
```bash
cd /var/www/html/gpsphonnex
composer require twilio/sdk
```

**En local (para testing):**
```bash
cd gpsphonnex
composer require twilio/sdk
```

### 2. Configurar archivo .env

#### En el Servidor:

```bash
cd /var/www/html/gpsphonnex/src/api
cp .env.example .env
nano .env
```

Agrega estas líneas al archivo `.env`:

```env
# Twilio SMS Configuration
TWILIO_ACCOUNT_SID=AC9040cc4fa266be51b967bea7a77d2ba4
TWILIO_AUTH_TOKEN=0423825b4ccd00aa39cf1ea5fa932d55
TWILIO_PHONE_NUMBER=+12678332232
```

#### En Local (para testing):

Crea el archivo `gpsphonnex/src/api/.env` con el mismo contenido:

```env
# Base de Datos (ajusta según tu configuración local)
DB_HOST=localhost
DB_USER=root
DB_PASS=
DB_NAME=gps

# Twilio SMS Configuration
TWILIO_ACCOUNT_SID=AC9040cc4fa266be51b967bea7a77d2ba4
TWILIO_AUTH_TOKEN=0423825b4ccd00aa39cf1ea5fa932d55
TWILIO_PHONE_NUMBER=+12678332232
```

### 3. Configurar Permisos (Solo en servidor)

```bash
chmod 600 /var/www/html/gpsphonnex/src/api/.env
chown www-data:www-data /var/www/html/gpsphonnex/src/api/.env
```

### 4. Actualizar la Base de Datos

Ejecuta este SQL:

```sql
USE gps;
ALTER TABLE sms_mensajes 
ADD COLUMN IF NOT EXISTS twilio_sid VARCHAR(100) NULL AFTER error_mensaje,
ADD KEY IF NOT EXISTS idx_twilio_sid (twilio_sid);
```

### 5. Reiniciar Apache (Solo en servidor)

```bash
systemctl restart apache2
```

## 🧪 Testing desde Local

**SÍ, puedes testear desde local sin problemas.** Solo necesitas:

1. ✅ Tener las credenciales de Twilio en tu `.env` local
2. ✅ Tener instalado `composer` y ejecutar `composer install`
3. ✅ Tener instalado el SDK de Twilio: `composer require twilio/sdk`
4. ✅ Tener un servidor web local (XAMPP, WAMP, Laragon, etc.)
5. ✅ Configurar tu base de datos local en el `.env`

### Pasos para testing local:

1. **Instalar dependencias:**
   ```bash
   cd gpsphonnex
   composer install
   composer require twilio/sdk
   ```

2. **Crear archivo .env local:**
   ```bash
   # En Windows PowerShell
   Copy-Item gpsphonnex\src\api\.env.example gpsphonnex\src\api\.env
   ```

3. **Editar .env con tus credenciales:**
   - Abre `gpsphonnex/src/api/.env`
   - Agrega las credenciales de Twilio

4. **Iniciar servidor local:**
   - Si usas XAMPP/WAMP: Inicia Apache y MySQL
   - Si usas PHP built-in: `php -S localhost:8000 -t gpsphonnex/src`

5. **Acceder a la aplicación:**
   - Abre `http://localhost:8000/administrador/envio-sms/envio-sms.php`
   - O la URL que uses normalmente

## Formato de Números de Teléfono

Los números deben estar en formato **E.164**:
- ✅ Correcto: `+1234567890`, `+51987654321`
- ❌ Incorrecto: `1234567890`, `(123) 456-7890`, `123-456-7890`

## Modo Trial vs Producción

### Modo Trial (Gratis)
- Solo puedes enviar SMS a números verificados en tu cuenta
- Límite de mensajes por día
- Ideal para pruebas

### Modo Producción
- Puedes enviar SMS a cualquier número
- Requiere actualizar tu cuenta y agregar método de pago
- Costos según el país destino

## Verificación

Para verificar que todo funciona:

1. Asegúrate de tener un número verificado en Twilio (modo trial)
2. Envía un SMS de prueba desde la aplicación
3. Revisa los logs en la consola de Twilio: https://console.twilio.com/us1/monitor/logs/sms

## Solución de Problemas

### Error: "Twilio credentials not configured"
- Verifica que el archivo `.env` existe en `src/api/.env`
- Verifica que las variables `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN` y `TWILIO_PHONE_NUMBER` están definidas
- Verifica que no hay espacios alrededor del `=` en el `.env`

### Error: "Invalid phone number format"
- Asegúrate de usar formato E.164: `+[código país][número]`
- Ejemplo para Perú: `+51987654321`
- Ejemplo para USA: `+1234567890`

### Error: "The number +XXXXXXXXXX is unverified"
- En modo trial, solo puedes enviar a números verificados
- Ve a Twilio Console → Phone Numbers → Verified Caller IDs
- Agrega el número que quieres usar como destinatario

### Error: "Unable to create record"
- Verifica que tu cuenta de Twilio tiene crédito suficiente
- Verifica que el número de teléfono de Twilio está activo
- Revisa los logs en la consola de Twilio

### Error en Local: "Class 'Twilio\Rest\Client' not found"
- Ejecuta: `composer require twilio/sdk`
- Verifica que `vendor/autoload.php` existe
- Verifica que el autoloader se carga correctamente

## Seguridad

⚠️ **IMPORTANTE:**
- El archivo `.env` contiene información sensible
- **NUNCA** subas el archivo `.env` al repositorio Git
- Asegúrate de que `.env` está en `.gitignore`
- En el servidor, usa permisos restrictivos: `chmod 600 .env`
