¿Cómo reenviar SMS a un endpoint de API webhook?
Respuesta Rápida: Forward SMS puede enviar tus mensajes de texto a cualquier endpoint HTTP como un webhook JSON. Crea un destino Webhook en la app, ingresa la URL de tu endpoint y configura una automatización de Atajos. Tu endpoint recibirá una solicitud POST con el contenido del mensaje, remitente y marca de tiempo.
¿Qué es el Reenvío de SMS por Webhook?
El reenvío de SMS por webhook envía automáticamente tus mensajes de texto a cualquier endpoint HTTP que controles. A diferencia de las integraciones específicas de plataforma (Slack, Discord, Teams), los webhooks te dan control completo sobre cómo se procesan los mensajes. Esto es ideal para desarrolladores que crean integraciones personalizadas, sistemas de registro o flujos de trabajo de automatización.
Cuando llega un mensaje, Forward SMS envía una solicitud POST a tu endpoint con una carga JSON estructurada que contiene el contenido del mensaje, información del remitente y metadatos.
Por Qué Usar Webhooks
Los webhooks ofrecen flexibilidad que las integraciones preconstruidas no pueden igualar:
- Automatización personalizada: Activa cualquier flujo de trabajo cuando recibas un SMS - actualiza bases de datos, envía notificaciones, ejecuta scripts o integra con cualquier servicio
- Registro de datos: Almacena todos los mensajes entrantes en tu propia base de datos para cumplimiento, análisis o respaldo
- Enrutamiento multi-servicio: Procesa mensajes con tu propia lógica para enrutarlos a diferentes destinos según el contenido o el remitente
- Herramientas internas: Integra funciones basadas en SMS en tus paneles y herramientas internas
- Integración IoT: Conecta alertas SMS a tus sistemas IoT, automatización del hogar o infraestructura de monitoreo
Formato de Carga del Webhook
Cuando se reenvía un mensaje, tu endpoint recibe una solicitud POST con la siguiente carga JSON:
{
"timestamp": "2025-01-31T14:30:00Z",
"content": "Your verification code is 123456",
"sender": "+1234567890",
"contact": "Bank of Example"
}
Campos de la Carga
| Campo | Tipo | Descripción |
|-------|------|-------------|
| timestamp | string | Marca de tiempo en formato ISO 8601 de cuándo se reenvió el mensaje |
| content | string | El contenido del mensaje de texto |
| sender | string | Número de teléfono del remitente (si está disponible) |
| contact | string | Nombre del contacto de tu libreta de direcciones (si coincide) |
Configurar el Reenvío por Webhook
Paso 1: Descargar Forward SMS
Descarga Forward SMS desde la App Store.
Paso 2: Crear un Destino Webhook
Abre la app, toca "Agregar Destino" y selecciona "Webhook". Ingresa la URL de tu endpoint. La URL debe ser HTTPS por seguridad.
Paso 3: Probar tu Endpoint
Usa el botón "Enviar mensaje de prueba" para verificar que tu endpoint reciba el webhook correctamente. Revisa los registros de tu servidor para confirmar que llegó la carga.
Paso 4: Configurar la Automatización de Atajos
Sigue nuestra guía de configuración de Atajos para crear la automatización que activa el reenvío de mensajes.
Ejemplos de Implementación
Aquí hay ejemplos para manejar el webhook en varios lenguajes:
Node.js (Express)
const express = require('express');
const app = express();
app.use(express.json());
app.post('/webhook/sms', (req, res) => {
const { timestamp, content, sender, contact } = req.body;
console.log(`Received SMS from ${sender}: ${content}`);
// Process the message (save to database, trigger automation, etc.)
res.status(200).json({ received: true });
});
app.listen(3000);
Python (Flask)
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhook/sms', methods=['POST'])
def handle_sms():
data = request.json
sender = data['sender']
content = data['content']
print(f"Received SMS from {sender}: {content}")
# Process the message
return jsonify({'received': True}), 200
if __name__ == '__main__':
app.run(port=3000)
PHP
<?php
$payload = json_decode(file_get_contents('php://input'), true);
$sender = $payload['sender'];
$content = $payload['content'];
$timestamp = $payload['timestamp'];
error_log("Received SMS from $sender: $content");
// Process the message
http_response_code(200);
echo json_encode(['received' => true]);
?>
Ruby (Sinatra)
require 'sinatra'
require 'json'
post '/webhook/sms' do
payload = JSON.parse(request.body.read)
sender = payload['sender']
content = payload['content']
puts "Received SMS from #{sender}: #{content}"
# Process the message
content_type :json
{ received: true }.to_json
end
Consideraciones de Seguridad
Usar HTTPS
Siempre usa endpoints HTTPS para cifrar la carga del webhook en tránsito. Forward SMS requiere HTTPS para las URLs de webhook.
Manejar Errores con Elegancia
Tu endpoint debe devolver un código de estado 2xx para confirmar la recepción. Si Forward SMS recibe una respuesta de error, registrará el fallo.
Solución de Problemas
El Webhook No Recibe Mensajes
- Verificar la URL: Asegúrate de que la URL de tu endpoint sea correcta y accesible desde internet
- Verificar HTTPS: La URL debe usar HTTPS, no HTTP
- Revisar reglas de firewall: Tu servidor debe aceptar solicitudes POST entrantes
- Probar el endpoint: Usa el botón de prueba en la app para verificar la conectividad
Los Mensajes Llegan Lentamente
- Revisar automatización de Atajos: Asegúrate de que la automatización se ejecute sin requerir confirmación
- Actualización en segundo plano: Habilita esto para Forward SMS en Configuración de iOS
- Problemas de red: Tanto tu iPhone como tu servidor necesitan conexiones a internet estables
La Carga No Se Analiza
- Content-Type: La solicitud usa
Content-Type: application/json - Análisis JSON: Asegúrate de que tu servidor analice correctamente el cuerpo JSON
- Codificación de caracteres: Los mensajes están codificados en UTF-8
Preguntas Frecuentes
¿Puedo reenviar a múltiples endpoints de webhook?
Sí, crea múltiples destinos Webhook en Forward SMS. Cada destino puede tener una URL de endpoint diferente, y todos recibirán los mensajes reenviados.
¿Qué pasa si mi endpoint está caído?
Si tu endpoint devuelve un error o no es accesible, el reenvío del mensaje fallará. La app registra estos fallos para depuración. Considera implementar un sistema de respaldo o monitoreo.
¿Hay un límite de velocidad en los webhooks?
No hay un límite de velocidad artificial de Forward SMS. Los mensajes se reenvían tan rápido como llegan y tu endpoint puede procesarlos.
¿Puedo filtrar qué mensajes se reenvían?
Actualmente, todos los mensajes que activan la automatización de Atajos se reenvían. Puedes implementar lógica de filtrado en tu endpoint de webhook para ignorar mensajes no deseados.
¿Puedo usar HTTP en lugar de HTTPS?
No, por razones de seguridad Forward SMS requiere endpoints HTTPS. Esto asegura que los datos de tus mensajes estén cifrados en tránsito.