Pequeño servicio Flask que conecta llamadas de voz de Twilio Voice con flujos conversacionales creados en VoiceFlow. Permite construir IVRs inteligentes, asistentes de soporte y experiencias de autoservicio en español con reconocimiento de voz y DTMF.
- Maneja llamadas entrantes y enruta la conversación a VoiceFlow (
state/interact). - Soporta entrada mixta (DTMF + speech) y voces en español (
voice=Mia). - Gestiona cola de mensajes para texto, audio, call forwarding y fin de llamada.
- Mantiene estado entre turnos utilizando
user_id= número telefónico. - Preparado para desplegarse en plataformas serverless (heroku, fly.io, render, etc.).
app.py # Flask + Twilio webhook
utils/voiceflow_helpers.py
requirements.txt
Cree un archivo .env (ver .env.example sugerido):
| Variable | Descripción |
|---|---|
VF_PROJECT_VERSION_ID |
ID del proyecto/versión en VoiceFlow. |
VF_API_KEY |
API key generada en VoiceFlow (runtime). |
TWILIO_AUTH_TOKEN |
(Opcional) para validación de firmas. |
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
flask --app app run --host 0.0.0.0 --port 5000- Cree un número de teléfono en Twilio.
- Configure el Webhook de voz en la URL pública del endpoint
/. - (Opcional) Configure el webhook de estado de llamada hacia
/call-status.
- Twilio envía el POST a
/durante la llamada. - El servicio consulta VoiceFlow y transforma la respuesta en TwiML (
VoiceResponse). - Se reproduce audio, se obtienen opciones y se esperan nuevas entradas.
- El webhook
/call-statusregistra duración y resultado en la base que defina.
- Validación de firmas Twilio (
X-Twilio-Signature). - Almacenamiento persistente de transcripciones.
- Deploy automático con Dockerfile ligero.
Proyecto bajo licencia MIT.