# Codex — Configurar `ALEXA_SKILL_ID` en Apache (sin reiniciar)

## Objetivo

Configurar en Apache/XAMPP la variable de entorno:

```text
ALEXA_SKILL_ID=amzn1.ask.skill.005dec3e-f214-4e7e-90ba-2d5643adac25
```

para que el backend de:

```text
C:\xampp\htdocs\radio-babasonica-alexa\
```

pueda leerla mediante PHP:

```php
getenv('ALEXA_SKILL_ID')
```

Endpoint del proyecto:

```text
https://aproposito.ddns.net/radio-babasonica-alexa/public/
```

---

# Restricciones obligatorias

Esta tarea debe ser extremadamente conservadora.

NO reiniciar Apache.

NO detener Apache.

NO iniciar Apache.

NO modificar:

```text
C:\xampp\htdocs\radio-babasonica-alexa\
C:\xampp\htdocs\signallive\
MediaMTX
mediamtx.yml
FFmpeg
WordPress
app C#
/live/
ProxyPass existentes
certificados SSL
claves privadas
firewall
DNS
```

NO crear reglas nuevas de proxy.

NO modificar el endpoint Alexa.

NO modificar la URL de `radiobbs`.

NO cambiar el `DocumentRoot`.

NO alterar módulos de Apache.

NO cambiar configuración PHP.

---

# Paso 1 — Inspeccionar configuración Apache activa

Revisar:

```text
C:\xampp\apache\conf\httpd.conf
C:\xampp\apache\conf\extra\httpd-ssl.conf
C:\xampp\apache\conf\extra\httpd-vhosts.conf
```

Determinar cuál `<VirtualHost>` HTTPS activo corresponde a:

```text
ServerName aproposito.ddns.net
```

y sirve actualmente:

```text
https://aproposito.ddns.net/
```

Confirmar que se trata del VirtualHost del puerto HTTPS/443.

NO modificar nada todavía.

Registrar:

```text
Archivo:
Línea aproximada:
VirtualHost:
ServerName:
DocumentRoot:
```

---

# Paso 2 — Verificar que `mod_env` esté disponible

Comprobar si Apache tiene disponible el módulo que soporta `SetEnv`.

Ejecutar:

```cmd
C:\xampp\apache\bin\httpd.exe -M
```

Buscar:

```text
env_module
```

Resultado esperado:

```text
env_module (shared)
```

Si `env_module` NO está disponible:

```text
DETENER LA TAREA
```

No habilitar módulos automáticamente.

Documentar el bloqueo.

---

# Paso 3 — Verificar que la variable no exista ya

Buscar en la configuración Apache:

```text
ALEXA_SKILL_ID
```

Usar, por ejemplo:

```cmd
findstr /S /N /I "ALEXA_SKILL_ID" C:\xampp\apache\conf\*.conf C:\xampp\apache\conf\extra\*.conf
```

Si ya existe:

- comprobar el valor;
- no duplicar `SetEnv`;
- si el valor ya coincide exactamente con el Skill ID indicado, no modificar nada;
- si existe con un valor distinto, documentarlo antes de cambiarlo.

---

# Paso 4 — Crear backup del único archivo que vaya a modificarse

Antes de editar el archivo correcto, crear una copia con timestamp.

Ejemplo conceptual:

```text
httpd-ssl.conf.bak-20260821-190000
```

Guardar el backup en la misma carpeta del archivo original.

NO crear backups de archivos que no se modifiquen.

---

# Paso 5 — Agregar `SetEnv` únicamente al VirtualHost HTTPS correcto

Dentro del `<VirtualHost>` que contiene:

```apache
ServerName aproposito.ddns.net
```

agregar:

```apache
SetEnv ALEXA_SKILL_ID "amzn1.ask.skill.005dec3e-f214-4e7e-90ba-2d5643adac25"
```

Preferencia de ubicación:

inmediatamente después de:

```apache
ServerName aproposito.ddns.net
```

Ejemplo:

```apache
<VirtualHost *:443>
    ServerName aproposito.ddns.net
    SetEnv ALEXA_SKILL_ID "amzn1.ask.skill.005dec3e-f214-4e7e-90ba-2d5643adac25"

    ...
</VirtualHost>
```

No modificar ninguna otra directiva.

No reordenar configuración existente.

No tocar:

```text
ProxyPass
ProxyPassReverse
SSLCertificateFile
SSLCertificateKeyFile
DocumentRoot
Directory
RewriteRule
```

---

# Paso 6 — Validar sintaxis Apache

Después de guardar, ejecutar:

```cmd
C:\xampp\apache\bin\httpd.exe -t
```

Resultado obligatorio:

```text
Syntax OK
```

Si aparece cualquier error:

1. restaurar inmediatamente el backup;
2. ejecutar otra vez:

```cmd
C:\xampp\apache\bin\httpd.exe -t
```

3. confirmar que vuelve a:

```text
Syntax OK
```

4. documentar el fallo;
5. no hacer más modificaciones.

---

# Paso 7 — Confirmar el cambio en disco

Sin reiniciar Apache, volver a buscar:

```text
ALEXA_SKILL_ID
```

y confirmar que aparece exactamente una vez en el VirtualHost HTTPS correcto.

No se espera que el proceso Apache ya cargado vea la variable hasta después de un reinicio manual.

---

# Paso 8 — NO hacer prueba runtime todavía

Como el usuario detendrá y encenderá Apache manualmente después:

NO intentar afirmar que:

```text
getenv('ALEXA_SKILL_ID')
```

ya funciona en el proceso Apache activo.

La verificación runtime queda:

```text
PENDIENTE DE REINICIO MANUAL
```

No reiniciar Apache desde Codex.

---

# Paso 9 — Reporte obligatorio

Generar:

```text
C:\xampp\htdocs\radio-babasonica-alexa\ALEXA_SKILL_ID_APACHE_RESULTS.md
```

Contenido:

# Configuración Apache — ALEXA_SKILL_ID

## Resumen

```text
Configuración aplicada: SI / NO
Archivo modificado:
Backup creado:
env_module disponible: SI / NO
Skill ID configurado:
Apache syntax: OK / ERROR
Apache reiniciado por Codex: NO
Runtime getenv verificado: PENDIENTE DE REINICIO MANUAL
```

## VirtualHost identificado

```text
Archivo:
Puerto:
ServerName:
DocumentRoot:
```

## Cambio aplicado

Mostrar únicamente el fragmento mínimo:

```apache
ServerName aproposito.ddns.net
SetEnv ALEXA_SKILL_ID "amzn1.ask.skill.005dec3e-f214-4e7e-90ba-2d5643adac25"
```

No pegar el VirtualHost completo.

## Validación de sintaxis

Pegar la salida de:

```cmd
C:\xampp\apache\bin\httpd.exe -t
```

## Archivos modificados

Debe haber idealmente un solo archivo.

## Archivos NO modificados

Confirmar:

```text
radio-babasonica-alexa: sin cambios
SignalLive: sin cambios
MediaMTX: sin cambios
mediamtx.yml: sin cambios
ProxyPass /live/: sin cambios
SSL certificates: sin cambios
PHP config: sin cambios
```

## Próximo paso manual

Indicar solamente:

```text
El usuario debe reiniciar Apache manualmente desde XAMPP.
Después del reinicio, verificar que el backend pueda leer ALEXA_SKILL_ID.
```

---

# Criterios de aceptación

```text
[ ] VirtualHost HTTPS correcto identificado
[ ] env_module disponible
[ ] ALEXA_SKILL_ID no duplicado
[ ] backup creado antes de modificar
[ ] sólo se modificó el archivo Apache necesario
[ ] SetEnv quedó dentro del VirtualHost de aproposito.ddns.net
[ ] Skill ID exacto configurado
[ ] `httpd.exe -t` devuelve `Syntax OK`
[ ] Apache NO fue reiniciado por Codex
[ ] MediaMTX no fue tocado
[ ] SignalLive no fue tocado
[ ] /live/ no fue tocado
[ ] proyecto PHP no fue modificado
[ ] reporte generado
```

---

# Skill ID exacto

Usar exactamente:

```text
amzn1.ask.skill.005dec3e-f214-4e7e-90ba-2d5643adac25
```

No cambiar mayúsculas/minúsculas.

No agregar espacios.

No inventar otro ID.
