Cómo integrar WhatsApp con Twilio: guía paso a paso
Guía práctica para integrar WhatsApp con Twilio: sandbox de pruebas, envío y recepción de mensajes con Python, webhook con Flask y paso a producción.
Introducción
Si querés sumar mensajería de WhatsApp a tu app o a tu flujo de negocio, sin pelearte con la WhatsApp Business API, Twilio lo hace sorprendentemente simple. WhatsApp es enorme para la comunicación con clientes, sobre todo en países donde es LA app de mensajería. Integrándolo con Twilio mandás notificaciones, manejás chats de soporte o automatizás recordatorios, todo por código.
En esta guía te llevo por el proceso paso a paso. Arrancamos con el sandbox de Twilio para probar, que no tiene costo ni aprobaciones previas, y después pasamos a producción con los WhatsApp senders. Los senders son los números aprobados atados a una WhatsApp Business Account, y te dejan mandar mensajes a escala con tu marca.
Los ejemplos van en Python porque es amigable para arrancar, pero Twilio soporta un montón de lenguajes: PHP, Node.js, Java y más. Vamos a eso.
Requisitos
Antes de arrancar vas a necesitar:
- Una cuenta gratis de Twilio (registrate en twilio.com si no tenés).
- Python instalado en tu máquina (con la versión 3.6+ alcanza).
- La librería de Twilio para Python: instalala con pip install twilio.
- Un número con WhatsApp (el tuyo personal para las pruebas).
- Para producción, una cuenta de Facebook Business Manager y un número dedicado para tu WhatsApp Business Account.
- Manejo básico de variables de entorno y de correr scripts desde la terminal.
Twilio se encarga de lo pesado con su API, así que no tenés que lidiar directo con el backend de WhatsApp.
Paso 1: crear la cuenta de Twilio y sacar las credenciales
- Andá a twilio.com/try-twilio y creá una cuenta gratis. Te dan $15 de crédito de prueba para experimentar.
- Ya con sesión iniciada, andá al dashboard de la Twilio Console. Ahí están tu Account SID y tu Auth Token, que funcionan como tus API keys. Copialos a un lugar seguro.
Guardalos como variables de entorno para no exponerlos, nunca hardcodeados en los scripts. En macOS/Linux, abrí la terminal y corré:
export TWILIO_ACCOUNT_SID='your_account_sid_here' export TWILIO_AUTH_TOKEN='your_auth_token_here'En Windows, usá set en lugar de export.
Con eso tu código ya puede autenticarse contra los servidores de Twilio.
Paso 2: configurar el sandbox de Twilio para WhatsApp
El sandbox es un entorno de pruebas donde mandás y recibís mensajes sin la aprobación completa de WhatsApp. Es ideal para prototipar.
- En la Twilio Console, andá a Messaging > Try it out > Send a WhatsApp message. O entrá a console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn.
- Aceptá los términos y hacé clic en Confirm para activar el sandbox. Vas a ver un número de sandbox (algo como +14155238886) y una frase de código única (tipo "join apple-tree").
- Desde tu celular, abrí WhatsApp y mandá el mensaje join <your-sandbox-code> (por ejemplo, "join apple-tree") al número del sandbox. WhatsApp te responde confirmando la conexión.
- Si después querés desconectarte, respondé "stop" al número del sandbox.
Dato: solo los números que se unieron al sandbox pueden interactuar con él. Si vas a probar con varias personas, que se unan también. Todo esto es gratis durante el trial.
Paso 3: mandar tu primer mensaje de WhatsApp
Ahora vamos a mandar un mensaje desde el código a tu celular, vía sandbox.
- Creá un archivo Python nuevo llamado send_whatsapp.py.
Pegá este código:
from twilio.rest import Client import os # Grab your credentials from environment variables account_sid = os.environ['TWILIO_ACCOUNT_SID'] auth_token = os.environ['TWILIO_AUTH_TOKEN'] client = Client(account_sid, auth_token) message = client.messages.create( from_='whatsapp:+14155238886', # Your sandbox number body='Hello from Twilio! This is your first WhatsApp message.', to='whatsapp:+12345678901' # Your WhatsApp number in E.164 format (e.g., +1 for US) ) print(f"Message SID: {message.sid}")- Reemplazá el valor de to por tu propio número de WhatsApp (con código de país, tipo +15551234567).
- Reemplazá from_ por tu número real del sandbox.
- Guardá el archivo y correlo: python send_whatsapp.py.
- Mirá tu WhatsApp, el mensaje tiene que aparecer ahí.
Si funcionó, listo: acabás de mandar un mensaje de WhatsApp por código. Ojo: para mensajes iniciados por el negocio fuera de la ventana de respuesta de 24 horas, en producción vas a necesitar templates pre-aprobados.
Paso 4: recibir mensajes y armar una respuesta automática
Para que sea bidireccional necesitás un webhook que maneje los mensajes entrantes.
- Instalá Flask (un framework web liviano):
pip install flask. Creá un archivo nuevo llamado reply_whatsapp.py:
from flask import Flask, request from twilio.twiml.messaging_response import MessagingResponse app = Flask(__name__) @app.route('/whatsapp', methods=['POST']) def whatsapp_reply(): # Get the incoming message incoming_msg = request.values.get('Body', '').lower() resp = MessagingResponse() msg = resp.message() # Simple echo reply for testing msg.body(f'You said: {incoming_msg}. Thanks for chatting!') return str(resp) if __name__ == '__main__': app.run(port=3000)- Levantá el server: python reply_whatsapp.py.
- Para exponer tu server local a internet, porque Twilio necesita una URL pública, usá ngrok. Descargalo de ngrok.com y corré
ngrok http 3000. Anotá la URL de forwarding (por ejemplo, https://abc123.ngrok.io). - De vuelta en la Twilio Console, andá a la configuración del sandbox de WhatsApp. En el campo "When a message comes in", pegá tu URL de ngrok con /whatsapp al final (por ejemplo, https://abc123.ngrok.io/whatsapp). Poné el método en POST y guardá.
- Probalo: mandá un mensaje desde tu WhatsApp al número del sandbox. Tenés que recibir una respuesta automática que repite tu mensaje.
Este webhook es clave para apps reales, porque lo podés extender para integrar bases de datos, IA u otros servicios.
Paso 5: pasar a producción con WhatsApp Senders
Cuando terminaste de probar, pasá a producción para usuarios reales.
- Creá una WhatsApp Business Account (WABA) desde Facebook Business Manager si todavía no tenés.
- En la Twilio Console, andá a Messaging > Senders > WhatsApp Senders.
- Hacé clic en Get Started y seguí el proceso de alta: vinculá tu WABA, verificá el número y esperá la aprobación de WhatsApp (puede tardar unos días).
- Una vez aprobado, tu sender aparece en la consola. Actualizá el from_ del código para usarlo:
whatsapp:+your-approved-number. - Los templates se envían desde la Twilio Console para que WhatsApp los apruebe, porque son obligatorios para mensajes proactivos.
Precios: cada mensaje cuesta alrededor de $0.005 a $0.01, según la región. Mirá tu consumo en la consola.
Errores comunes y consejos
- Rate limits: el sandbox tiene límites (por ejemplo, 1 mensaje por segundo). Producción escala mejor.
- Templates: usá siempre templates aprobados para mensajes salientes y evitá bloqueos.
- Debugging: revisá el debugger de Twilio en la consola cuando algo falle.
- Seguridad: nunca expongas tu Auth Token en público.
- Escalar: para cosas más avanzadas, mirá la Conversations API de Twilio para soporte multicanal.
Conclusión
Y ahí lo tenés: una integración de WhatsApp funcionando. Esta guía cubre las piezas más importantes para arrancar con mensajería de WhatsApp. Twilio te lo simplifica sin que tengas que armar APIs propias para el setup de WhatsApp Business. Como ves, mandás mensajes por código en pocas líneas.
¿Querés un agente de IA así en tu WhatsApp? Mirá mis servicios de agentes de IA para WhatsApp.