Lo esencial
Las apps de mensajería ya no son solo chats. Son plataformas de negocio completas: ventas, soporte, incorporación de clientes, trabajo en equipo. El problema es uno: todo eso requiere personas, que se cansan, se enferman y se van de vacaciones. La IA cambia la ecuación. En esta lección construimos bots inteligentes para Telegram, Slack, WhatsApp y Microsoft Teams: el cliente escribe → Claude analiza → responde en segundos → si es complicado → lo pasa a un responsable.
Conceptos clave
- Telegram Bot API: la interfaz oficial para bots; python-telegram-bot es el estándar en Python
- Webhook vs. polling: dos formas de recibir mensajes; el webhook es más rápido y barato en producción
- Slack Bolt SDK: el SDK oficial: eventos, atajos y slash commands en un solo lugar
- WhatsApp Business API: tres caminos: Twilio (confiable), 360dialog (especializado), Meta Cloud API (directo)
- Microsoft Teams: notificaciones por webhook con la app Workflows y el Teams MCP oficial de Microsoft (preview)
- ManyChat: un constructor de flujos sin código para mensajes directos (Instagram, WhatsApp, Messenger, Telegram y otros)
- Unified Messaging Hub (centro unificado de mensajes): una sola entrada para todos los canales; Claude clasifica y enruta
- Lógica de escalamiento: cuándo responde el bot y cuándo pasa el caso a una persona
Teoría
Qué app de mensajería para qué negocio
| App | Público | Mejor para | Complejidad |
|---|---|---|---|
| Telegram | Comunidades tech, creadores, algunos países; en Latinoamérica es menos común que WhatsApp | Comunidades, contenido, prospectos, ventas | Baja |
| Slack | Equipos, SaaS, B2B | Procesos internos, notificaciones, DevOps | Media |
| Latinoamérica (el canal principal), Europa, todo el mundo | Atención a clientes, pequeños negocios | Media | |
| Teams | B2B corporativo | Clientes empresariales, integración con Office 365 | Alta |
La regla para elegir: ve a donde ya está tu público. No crees un canal nuevo: intégrate en el que ya existe.
Bot de Telegram: de cero a asistente inteligente
Paso 1: Crear el bot
Escribe /newbot a @BotFather → pon un nombre y un username → recibe el token. Ese token = el acceso para controlar el bot.
Paso 2: Integración básica con Claude
import os
import logging
from telegram import Update
from telegram.ext import (
Application, CommandHandler, MessageHandler,
filters, ContextTypes
)
import anthropic
from dotenv import load_dotenv
load_dotenv()
claude = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
BOT_TOKEN = os.environ["TELEGRAM_BOT_TOKEN"]
# Historial de la conversación en memoria
# En producción, cámbialo por Redis o SQLite
conversation_history: dict[int, list] = {}
SYSTEM_PROMPT = """Eres el asistente de IA de la inmobiliaria Acme Realty.
Respondes preguntas sobre bienes raíces en Ecuador: precios, zonas, proceso de compra.
Tono: experto amable, no vendedor.
Si la pregunta requiere la asesoría de un asesor, dilo con claridad y ofrece dejar un contacto.
Responde breve: 1–3 oraciones si la pregunta es simple, hasta 5 párrafos si es compleja.
Idioma: español."""
async def cmd_start(update: Update, context: ContextTypes.DEFAULT_TYPE):
"""Comando /start: saludo al usuario nuevo."""
user = update.effective_user
await update.message.reply_text(
f"¡Hola, {user.first_name}! 👋\n\n"
"Te ayudo con tus preguntas sobre bienes raíces en Cuenca, Ecuador. "
"Pregunta por precios, zonas o el proceso de compra y te respondo al instante.\n\n"
"Si necesitas una asesoría personal, solo dímelo."
)
async def cmd_contact(update: Update, context: ContextTypes.DEFAULT_TYPE):
"""Comando /contact: pide los datos de contacto."""
await update.message.reply_text(
"Déjanos tu email o tu teléfono, "
"y un asesor te contactará en menos de 2 horas en horario laboral."
)
# En un bot real aquí va un ConversationHandler para recibir y guardar el contacto
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
"""El manejador principal de los mensajes entrantes."""
user_id = update.effective_user.id
user_text = update.message.text
# Inicializamos el historial si es el primer mensaje
if user_id not in conversation_history:
conversation_history[user_id] = []
# Agregamos el mensaje del usuario
conversation_history[user_id].append({
"role": "user",
"content": user_text
})
# Limitamos el historial: los últimos 10 mensajes
if len(conversation_history[user_id]) > 10:
conversation_history[user_id] = conversation_history[user_id][-10:]
# Mostramos "escribiendo..." para una buena experiencia
await context.bot.send_chat_action(
chat_id=update.effective_chat.id,
action="typing"
)
# Solicitud a Claude (modelos vigentes: página «Lo vigente»)
response = claude.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
system=SYSTEM_PROMPT,
messages=conversation_history[user_id]
)
assistant_reply = "".join(b.text for b in response.content if b.type == "text")
# Guardamos la respuesta en el historial
conversation_history[user_id].append({
"role": "assistant",
"content": assistant_reply
})
await update.message.reply_text(assistant_reply)
async def handle_error(update: object, context: ContextTypes.DEFAULT_TYPE):
"""Registramos los errores."""
logging.error("Exception while handling update:", exc_info=context.error)
def main():
app = Application.builder().token(BOT_TOKEN).build()
app.add_handler(CommandHandler("start", cmd_start))
app.add_handler(CommandHandler("contact", cmd_contact))
app.add_handler(MessageHandler(
filters.TEXT & ~filters.COMMAND, handle_message
))
app.add_error_handler(handle_error)
print("Bot de Telegram en marcha (modo polling)...")
app.run_polling(allowed_updates=Update.ALL_TYPES)
if __name__ == "__main__":
main()Telegram: los cuatro patrones principales de bot
1. Bot de preguntas frecuentes (FAQ): responde las preguntas típicas sobre el producto, los precios, los envíos. El system prompt contiene toda la base de conocimiento. Se encarga de las preguntas típicas y le quita una parte notable de la carga al equipo de soporte.
2. Calificador de prospectos: le hace una serie de preguntas al usuario nuevo (presupuesto, plazos, necesidades), determina qué tan "caliente" está el prospecto y le ofrece una reunión o lo manda a una secuencia de seguimiento (nurture).
3. Bot de agenda: se integra con Calendly por API, ofrece horarios libres y crea la reservación directo en el chat. El cliente no sale de la app.
4. Publicador de contenido: Claude genera una publicación según un horario y el bot la publica en el canal. Planear el contenido de la semana toma 20 minutos, una vez, el lunes.
Slack: automatizar los procesos del equipo
Slack con Bolt SDK no es solo un chat. Es una plataforma para bots de equipo inteligentes.
Escenarios típicos:
- Resumen del standup: el bot junta las respuestas de una encuesta, Claude arma el resumen → lo publica en el canal
- Avisos de PR: cuando se abre un Pull Request, Claude lee el diff y escribe un resumen breve de los cambios
- Tareas con un comando:
/task Hacer la landing→ Claude crea la tarea en Notion/Linear → devuelve el enlace - Respuestas a @menciones: el bot "escucha" los canales y responde cuando lo mencionan con @
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
import anthropic
import os
app = App(token=os.environ["SLACK_BOT_TOKEN"])
claude = anthropic.Anthropic()
@app.event("app_mention")
def handle_mention(event, say):
"""Responde cuando alguien menciona al bot con @."""
user_text = event["text"]
# Quitamos la @mención del bot del texto
clean_text = user_text.split(">", 1)[-1].strip() if ">" in user_text else user_text
response = claude.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
system="Eres el asistente del equipo de desarrollo. Responde breve y concreto.",
messages=[{"role": "user", "content": clean_text}]
)
say(f"<@{event['user']}> {''.join(b.text for b in response.content if b.type == 'text')}")
@app.command("/standup")
def handle_standup(ack, say, command):
"""
/standup: genera el formulario del standup.
El usuario lo llena, el bot junta las respuestas y hace un resumen.
"""
ack()
say({
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": f"*Standup de {command['user_name']}*\n"
"Responde tres preguntas:"
}
},
{
"type": "input",
"block_id": "done",
"element": {
"type": "plain_text_input",
"action_id": "done_input",
"placeholder": {"type": "plain_text", "text": "¿Qué hiciste ayer?"}
},
"label": {"type": "plain_text", "text": "Hecho"}
}
]
})
@app.command("/summarize")
def handle_summarize(ack, say, command):
"""
/summarize [texto]: resume un mensaje largo.
Útil para descripciones largas de PR o documentos en los canales.
"""
ack()
text_to_summarize = command.get("text", "")
if not text_to_summarize:
say("Escribe el texto después del comando: `/summarize [tu texto]`")
return
response = claude.messages.create(
model="claude-haiku-4-5",
max_tokens=300,
messages=[{
"role": "user",
"content": f"Resume este texto en 3–5 puntos:\n\n{text_to_summarize}"
}]
)
say(f"📋 *Resumen:*\n{''.join(b.text for b in response.content if b.type == 'text')}")
if __name__ == "__main__":
handler = SocketModeHandler(app, os.environ["SLACK_APP_TOKEN"])
print("Bot de Slack en marcha...")
handler.start()WhatsApp Business API: el mayor alcance
WhatsApp es una de las apps de mensajería más usadas del mundo: la usan miles de millones de personas. Para los negocios en Latinoamérica y Europa, muchas veces es el único canal que prefieren sus clientes.
Ojo con las reglas de Meta: desde el 15 de enero de 2026, Meta no permite en WhatsApp los asistentes de IA de uso general (como ChatGPT) en Latinoamérica, salvo Brasil. Un bot que atiende a los clientes de tu propio negocio es otro caso, pero antes de lanzar revisa las políticas vigentes de WhatsApp Business y lo que permite tu proveedor.
Tres caminos para conectarte:
| Proveedor | Ventajas | Desventajas | Precio |
|---|---|---|---|
| Twilio | Confiable, documentación excelente | Pagas al proveedor y a Meta | según la tarifa de Twilio + cargos de Meta |
| 360dialog | Especializado en WhatsApp | Menos documentación | según la tarifa de 360dialog + cargos de Meta |
| Meta Cloud API | Acceso directo, sin margen de un proveedor | Verificación del negocio complicada | solo los cargos de Meta |
Desde el 1 de julio de 2025, Meta cobra cada mensaje de plantilla entregado (depende de la categoría del mensaje y del país del destinatario); las respuestas al cliente dentro de la ventana de atención son gratis. Las tarifas vigentes están en la página de Meta y con tu proveedor.
Código con Twilio + Claude:
from flask import Flask, request
from twilio.twiml.messaging_response import MessagingResponse
from twilio.rest import Client
import anthropic
import os
app = Flask(__name__)
twilio_client = Client(
os.environ["TWILIO_ACCOUNT_SID"],
os.environ["TWILIO_AUTH_TOKEN"]
)
claude = anthropic.Anthropic()
# Historial de conversaciones (en producción: Redis con TTL de 24 h)
wa_conversations: dict[str, list] = {}
WA_SYSTEM = """Eres el asistente de IA de la empresa en WhatsApp.
Responde breve (WhatsApp no es email).
Si la pregunta requiere a un asesor, di: 'Te paso con un especialista, te responde en menos de una hora.'
Sé amable, pero profesional."""
@app.route("/webhook/whatsapp", methods=["POST"])
def whatsapp_webhook():
"""Procesa los mensajes entrantes de WhatsApp."""
from_number = request.form.get("From", "")
body = request.form.get("Body", "").strip()
if not body:
return str(MessagingResponse())
# Historial de la conversación
if from_number not in wa_conversations:
wa_conversations[from_number] = []
wa_conversations[from_number].append(
{"role": "user", "content": body}
)
# Limitamos el contexto a los últimos 8 mensajes
history = wa_conversations[from_number][-8:]
# Claude genera la respuesta
response = claude.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
system=WA_SYSTEM,
messages=history
)
reply = "".join(b.text for b in response.content if b.type == "text")
wa_conversations[from_number].append(
{"role": "assistant", "content": reply}
)
# Si Claude pasa el caso a un asesor, avisamos internamente
if "especialista" in reply.lower() or "te paso" in reply.lower():
notify_manager(from_number, body, reply)
# Respondemos al usuario
resp = MessagingResponse()
resp.message(reply)
return str(resp)
def notify_manager(customer_number: str, question: str, bot_reply: str):
"""Avisamos al responsable por Telegram cuando el bot no puede ayudar."""
import requests
telegram_token = os.environ.get("TELEGRAM_BOT_TOKEN")
manager_chat = os.environ.get("MANAGER_TELEGRAM_CHAT_ID")
if not telegram_token or not manager_chat:
return
message = (
f"🔔 *Escalamiento desde WhatsApp*\n\n"
f"Cliente: `{customer_number}`\n"
f"Pregunta: {question}\n\n"
f"El bot respondió: {bot_reply[:200]}..."
)
requests.post(
f"https://api.telegram.org/bot{telegram_token}/sendMessage",
json={
"chat_id": manager_chat,
"text": message,
"parse_mode": "Markdown"
}
)
if __name__ == "__main__":
app.run(port=5001, debug=False)En este ejemplo el aviso interno va por Telegram; si tu equipo usa otro canal (Slack, Teams, correo), cambia solo la función notify_manager().
Microsoft Teams: el canal corporativo
Si tus clientes son corporativos, trabajan en Teams. Dos escenarios:
Escenario 1: Notificaciones por webhook en un canal de Teams
La forma más sencilla es la app Workflows de Teams (funciona con Power Automate): te da una dirección a la que puedes mandar una solicitud con un mensaje. Microsoft está retirando los Incoming Webhook antiguos basados en conectores de Office 365, así que las notificaciones nuevas configúralas con Workflows.
import requests
import json
import os
TEAMS_WEBHOOK_URL = os.environ["TEAMS_WEBHOOK_URL"]
def send_teams_notification(title: str, message: str,
color: str = "0078D4",
facts: list[dict] = None) -> bool:
"""
Envía una tarjeta de notificación a un canal de Teams con la dirección webhook de Workflows.
Workflows acepta MessageCard y Adaptive Card: revisa el formato en un canal de prueba.
color: color hex de la franja lateral (0078D4 = azul de Microsoft)
facts: lista de {"name": "...", "value": "..."} para la tabla de datos
"""
card = {
"@type": "MessageCard",
"@context": "http://schema.org/extensions",
"themeColor": color,
"summary": title,
"sections": [{
"activityTitle": title,
"activityText": message,
}]
}
if facts:
card["sections"][0]["facts"] = facts
response = requests.post(
TEAMS_WEBHOOK_URL,
headers={"Content-Type": "application/json"},
data=json.dumps(card)
)
return response.ok # cualquier respuesta exitosa (200, 202)
# Ejemplo: aviso de una venta nueva
def notify_deal_closed(client_name: str, amount: float,
property_address: str) -> None:
"""Aviso en el canal de ventas de Teams cuando se cierra un negocio."""
send_teams_notification(
title="🎉 ¡Se cerró un negocio nuevo!",
message=f"El asesor firmó el contrato con el cliente.",
color="00B050", # verde
facts=[
{"name": "Cliente", "value": client_name},
{"name": "Monto", "value": f"${amount:,.0f}"},
{"name": "Propiedad", "value": property_address},
]
)Cómo configurar el webhook en Teams con Workflows:
- En Teams → Canal → ⋯ (tres puntos) → Workflows
- Elige la plantilla "Send webhook alerts to a channel" (enviar avisos de webhook a un canal)
- Configura los parámetros y guarda
- Copia la dirección del webhook → guárdala en una variable de entorno
Escenario 2: Teams MCP de Microsoft
Microsoft tiene un servidor MCP oficial para Teams (forma parte de Microsoft Agent 365, en preview). Permite que un agente lea chats y canales, publique mensajes y responda en hilos. Es un servidor alojado, no un paquete que se instala con npx: la conexión la configura el administrador de la organización (registro de la app en Microsoft Entra y otorgamiento de permisos), y los nombres de las herramientas pueden cambiar durante el preview. Herramientas y forma de conexión vigentes: documentación de Microsoft. Qué clientes MCP se admiten, revísalo en esa misma documentación.
Cuándo usar cada uno:
- Webhook con Workflows: avisos de procesos de negocio (CRM, despliegues, ventas). Rápido, sin registrar una app.
- Teams MCP: un agente interactivo que lee y responde en los canales. Requiere registrar la app en Entra y permisos de administrador.
ManyChat: cuando no quieres código
Para emprendedores que no programan: ManyChat. Un constructor visual de flujos para mensajes directos: Instagram, Messenger, WhatsApp, TikTok, Telegram.
Qué puede hacer ManyChat:
- Secuencias visuales de mensajes con condiciones (if/else sin código)
- Integración con Google Sheets, Zapier, Make
- Segmentar al público con etiquetas
- Pruebas A/B de mensajes
- Envíos masivos (broadcast)
ManyChat + Claude con Zapier: Las funciones de IA propias de ManyChat dependen del plan, y conectar específicamente a Claude suele ser más fácil con Zapier: ManyChat → Webhook → Zapier → API de Claude → respuesta de vuelta a ManyChat. Un poco más complicado, pero sin código.
Unified Messaging Hub: un solo sistema para todos los canales
from flask import Flask, request, jsonify
import anthropic
import json
import os
app = Flask(__name__)
claude = anthropic.Anthropic()
ROUTING_SYSTEM = """Eres un enrutador de mensajes de clientes. Analiza la solicitud y devuelve JSON:
{
"intent": "faq|lead|complaint|consultation|other",
"urgency": "low|medium|high",
"language": "es|en|pt",
"should_escalate": true|false,
"suggested_response": "respuesta breve si intent=faq"
}"""
def route_message(message: str, channel: str, user_id: str) -> dict:
"""
Analiza el mensaje entrante y decide la ruta.
channel: telegram|whatsapp|slack|teams
"""
response = claude.messages.create(
model="claude-haiku-4-5", # Haiku para enrutar: rápido y barato; comprueba que el modelo siga disponible
max_tokens=256,
system=ROUTING_SYSTEM,
messages=[{
"role": "user",
"content": f"Canal: {channel}\nMensaje: {message}"
}]
)
try:
return json.loads("".join(b.text for b in response.content if b.type == "text"))
except json.JSONDecodeError:
return {
"intent": "other",
"urgency": "medium",
"language": "es",
"should_escalate": False,
"suggested_response": ""
}
@app.route("/hub/incoming", methods=["POST"])
def unified_incoming():
"""
Una sola entrada para los mensajes de todos los canales.
Cada fuente (bot de Telegram, webhook de WhatsApp, evento de Slack)
manda el mensaje aquí en un formato estandarizado.
"""
data = request.json
channel = data.get("channel", "unknown")
user_id = data.get("user_id", "")
message = data.get("message", "")
# 1. Enrutamiento con Claude Haiku (barato y rápido)
routing = route_message(message, channel, user_id)
# 2. Lógica según la intención
if routing["should_escalate"]:
# Lo pasamos a una persona
escalate_to_manager(channel, user_id, message, routing)
reply = "Paso tu pregunta a un especialista. Te respondemos en menos de 1 hora."
elif routing["intent"] == "faq" and routing["suggested_response"]:
# Usamos la respuesta lista del enrutamiento
reply = routing["suggested_response"]
else:
# Respuesta completa con Claude Sonnet
response = claude.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
system="Eres un asistente amable. Responde en el idioma del cliente.",
messages=[{"role": "user", "content": message}]
)
reply = "".join(b.text for b in response.content if b.type == "text")
return jsonify({
"reply": reply,
"routing": routing,
"channel": channel
})
def escalate_to_manager(channel: str, user_id: str,
message: str, routing: dict) -> None:
"""Avisa al responsable por Telegram."""
bot_token = os.environ.get("TELEGRAM_BOT_TOKEN")
manager_chat = os.environ.get("MANAGER_TELEGRAM_CHAT_ID")
if not bot_token or not manager_chat:
return
import requests
requests.post(
f"https://api.telegram.org/bot{bot_token}/sendMessage",
json={
"chat_id": manager_chat,
"text": (
f"🔔 *Escalamiento*\n"
f"Canal: {channel} | Usuario: `{user_id}`\n"
f"Urgencia: {routing.get('urgency', '?')}\n"
f"Mensaje: {message[:300]}"
),
"parse_mode": "Markdown"
}
)
if __name__ == "__main__":
app.run(port=5002, debug=False)Cómo cobrar: vender bots a clientes
Es un servicio aparte. Los pequeños negocios necesitan bots, pero no saben cómo hacerlos.
Paquetes típicos y de qué se compone el precio:
| Paquete | Qué incluye | De qué se compone el precio |
|---|---|---|
| Bot básico de FAQ | Bot de WhatsApp o Telegram, 20–50 preguntas en la base de conocimiento | horas de configuración y de llenar la base de conocimiento; mantenimiento: ajustes al prompt y monitoreo |
| Calificador de prospectos | Bot + integración con el CRM | horas de integración con el CRM; mantenimiento: revisar que los prospectos lleguen bien |
| Bot de WhatsApp | WhatsApp Business API + Claude | configuración y verificación del negocio; mantenimiento + cargos de Meta y del proveedor |
| Sistema completo | Todos los canales + CRM + Unified Hub + analítica | horas sumadas de todos los canales + gastos de hosting y tokens |
Los precios dependen del mercado, del nicho y del tiempo que inviertas. Los ingresos en este nicho no están garantizados: calcula tus gastos y la demanda en tu mercado con las lecciones Empaqueta tu oferta y Precios y monetización.
Práctica
Tarea: asistente de IA en Telegram + webhook en Teams en 5 pasos
Paso 1: Crea un bot de Telegram (10 min)
- @BotFather →
/newbot→ nombre → username → token - Crea el proyecto:
mkdir ai-messenger-bot && cd ai-messenger-bot
python -m venv venv && source venv/bin/activate
pip install python-telegram-bot anthropic python-dotenv flask requests- Crea el
.env:
TELEGRAM_BOT_TOKEN=tu_token
ANTHROPIC_API_KEY=sk-ant-...
TEAMS_WEBHOOK_URL=https://... # lo agregamos en el paso 3
MANAGER_TELEGRAM_CHAT_ID=tu_chat_idTelegram se usa aquí porque crear un bot de prueba es gratis e inmediato. Si tus clientes están en WhatsApp, el mismo handle_message() se adapta al webhook de WhatsApp de la sección anterior.
Paso 2: Adapta el código a tu nicho (10 min)
Copia handle_message() de la teoría. Cambia el SYSTEM_PROMPT: describe tu negocio o el nicho de tu cliente. Ejecútalo:
python bot.pyBusca el bot en Telegram por su username → manda /start → hazle de 7 a 10 preguntas como si fueras cliente. Evalúa la calidad y mejora el system prompt si hace falta.
Paso 3: Configura el webhook en Teams (5 min)
- En tu Teams (o pídeselo a tu cliente): Canal → ⋯ → Workflows → plantilla "Send webhook alerts to a channel"
- Ponle de nombre "AI Assistant Bot" y guarda
- Copia la dirección del webhook → agrégala al
.envcomoTEAMS_WEBHOOK_URL - Corre una prueba:
from dotenv import load_dotenv
load_dotenv()
notify_deal_closed("Juan Pérez", 85000, "Calle Larga 45, Cuenca")Revisa el canal de Teams: debe aparecer una tarjeta.
Paso 4: Agrega el escalamiento en Telegram (5 min)
Copia la función notify_manager() de la sección de WhatsApp. Intégrala al bot de Telegram: cuando el usuario escriba "quiero hablar con un asesor" o "llámenme", Claude devuelve una señal de escalamiento y te avisas a ti mismo.
Paso 5: Documéntalo como caso (5 min)
- Captura de la conversación con el bot
- Captura del aviso en Teams
- Descripción: para qué negocio es y qué problema resuelve
- Cálculo del costo para el cliente (configuración + mantenimiento)
- Agrégalo a tu portafolio
Tarea extra:
Agrega el comando /contact al bot de Telegram. Cuando el usuario lo usa, el bot pide su email o teléfono, lo guarda en una Google Sheet con la biblioteca gspread y te avisa por Telegram. Es tu primer convertidor de prospectos.
Herramientas y recursos
- python-telegram-bot: el estándar para bots de Telegram en Python, gratis
- Slack Bolt SDK: el SDK oficial para apps de Slack, gratis
- Twilio WhatsApp: WhatsApp Business API, precios en el sitio de Twilio
- 360dialog: API especializada de WhatsApp, tarifas en su sitio
- Meta Cloud API: acceso directo a WhatsApp, verificación complicada, tarifas de Meta
- ManyChat: constructor de flujos sin código para mensajes directos; tarifas y condiciones vigentes en su sitio
- Teams: webhook con Workflows: avisos en Teams sin un bot aparte
- ngrok: URL pública para desarrollar, tiene plan gratis
- Redis / Upstash: para guardar el historial de conversaciones, tiene nivel gratis
Ideas clave
Una app de mensajería sin bot de IA es como un sitio sin formulario de contacto: el cliente llega, no hay nadie, el cliente se va. El bot atrapa los mensajes que de otro modo se perderían.
Un bot bien configurado se encarga de las preguntas típicas y libera a las personas para los casos difíciles. El costo en tokens de una conversación normal es una fracción pequeña del costo del tiempo de trabajo de una persona, pero calcúlalo para tu volumen. Precios y versiones vigentes: Lo vigente.
Puedes venderles bots a tus clientes como producto, no solo como trabajo de una vez: la base se reutiliza, y para cada nicho cambian el system prompt y la marca. Cuánto te deje depende de tu mercado y tu nicho; no hay garantías.
Para seguir con el tema
→ IA sin código: v0, Webflow AI y Framer para emprendedores
La marca se guarda solo en este navegador y no se envía a ningún sitio. Mi progreso