Saltar al contenido
K0lateral
Programación

Cómo construir un chatbot de WhatsApp con ElevenLabs y Claude en Python

· (banco local)

Aprende a montar un chatbot de voz para WhatsApp con ElevenLabs y Claude en Python. Guía práctica, código listo y prompts funcionales.

Cómo construir un chatbot de WhatsApp con ElevenLabs y Claude en Python
(banco local)

Cómo construir un chatbot de WhatsApp con ElevenLabs y Claude en Python

Mira, colega, vamos a dejar la teoría de lado. Si estás aquí es porque quieres montar un chatbot de WhatsApp que hable, no que escriba. Y para eso necesitas dos piezas clave: ElevenLabs para la voz y Claude para el cerebro. Yo lo he probado, y te aseguro que el resultado es brutal. Aquí va el paso a paso, sin humo.

1. El esquema: qué necesitas realmente

La cosa es más sencilla de lo que parece. El flujo es este: el usuario manda un audio por WhatsApp → Twilio lo recibe → tu script en Python lo transcribe con Whisper → se lo pasas a Claude → Claude te da la respuesta → ElevenLabs la convierte en voz → Twilio la envía de vuelta.

¿Suena complejo? No lo es tanto. Vamos por partes.

2. Configuración inicial

Primero, instala las dependencias que vas a necesitar:

pip install twilio openai anthropic elevenlabs python-dotenv

Ojo: para transcribir el audio, yo uso Whisper de OpenAI (ya que Twilio te da el archivo, no el texto). Es lo más fiable que he probado.

3. El prompt maestro para Claude

Aquí es donde entra el criterio. No le pidas a Claude que "sea un asistente". Eso es de novato. Dale contexto, personalidad y límites. Este es el prompt que yo uso:

Actúa como "K0", un asistente de voz de WhatsApp para K0lateral.com.

Eres directo, con humor irónico y respondes en español de España,

sin ser un pelota. Respeta estas reglas:

  • Máximo 3 frases por respuesta (es audio, no un testamento).
  • Si te preguntan por temas fuera de tecnología, redirige con gracia.
  • No des consejos médicos, legales ni financieros.
  • Si no sabes algo, dilo claro y ofrece buscar info.

4. El código: el esqueleto del bot

Aquí tienes el script base para que funcione. No es magia, es Python:

import os

from flask import Flask, request

from twilio.twiml.messaging_response import MessagingResponse

from openai import OpenAI

from anthropic import Anthropic

from elevenlabs import generate, set_api_key

app = Flask(__name__)

client_openai = OpenAI()

claude = Anthropic()

set_api_key(os.getenv("ELEVENLABS_API_KEY"))

@app.route("/whatsapp", methods=["POST"])

def whatsapp_bot():

# 1. Recibir el audio de Twilio

media_url = request.form.get("MediaUrl0")

if not media_url:

return str(MessagingResponse().message("Envíame un audio, colega."))

# 2. Transcribir con Whisper

audio_file = client_openai.audio.transcriptions.create(

model="whisper-1",

file=("audio.mp3", requests.get(media_url).content)

)

user_text = audio_file.text

# 3. Respuesta de Claude

response = claude.messages.create(

model="claude-3-5-sonnet-20241022",

max_tokens=150,

system="Eres K0, el asistente de voz de K0lateral.",

messages=[{"role": "user", "content": user_text}]

)

bot_text = response.content[0].text

# 4. Convertir a voz con ElevenLabs

audio = generate(text=bot_text, voice="21m00Tcm4TlvDq8ikWAM")

# 5. Devolver como mensaje de voz

twilio_response = MessagingResponse()

twilio_response.message("Aquí tienes mi respuesta, tio. 🔊").media(audio_url)

return str(twilio_response)

5. El prompt para refinar la voz

ElevenLabs no es solo "sube la voz". Tú controlas el tono con el prompt de voz. Yo uso este:

Voz masculina, tono desenfadado pero profesional, como un amigo

que sabe de tecnología. Evita el tono robótico. Enfatiza las

palabras clave con naturalidad. Pausas breves entre frases.

Sin muletillas ni sonidos de relleno.

6. Los ajustes que marcan la diferencia

Mira, hay un par de cosas que no te vas a encontrar en los tutoriales de turno:

  • Latencia: la gente abandona si tarda más de 2 segundos en responder. Usa el modelo Turbo de ElevenLabs y optimiza la transcripción.
  • Errores: Twilio te va a dar audios en formatos raros. Normaliza todo a MP3 antes de enviarlo a Whisper, o tendrás fallos raros.
  • Seguridad: limita el número de peticiones por usuario. He visto bots que se vuelven locos con gente que spamea.

7. Despliegue y prueba

Para pruebas locales, usa ngrok con el puerto 5000. Para producción, yo uso Railway o Render. No te compliques con servidores físicos.

ngrok http 5000

Y en Twilio, apunta el webhook a tu URL de ngrok con POST. Fácil.

¿Y el código completo?

Si quieres el repositorio con la solución completa, con manejo de errores y todo, déjame un comentario y lo subo. Pero con esto ya tienes el 80% hecho.

Y tú, ¿qué usas para tus chatbots con voz? ¿Le metes ElevenLabs o te vas a otra opción? Cuéntame, colega.

Más sobre Programación

Ver todo →