Skip to main content
El widget de voz es una cápsula flotante. El visitante inicia una llamada hablada en el navegador: el iframe de Lovi pide el micrófono y el Agente responde en audio. No lo confundas con: El embed de producción es https://widget.lovi.ai/iawidget.js con mode="voice". El repo voice-widget-lovi es un prototipo (sin iframe de Lovi). No lo copies.

Cómo integrarlo

Pégalo antes de </body>. mode="voice" carga voz en lugar del chat:
Orden del loader: primero mode="voice", luego WhatsApp full, luego chat. Si hay voz y WhatsApp full, carga voz. No hay dom para voz: el iframe es position:fixed; bottom:0. El dom del chat no aplica. No hay npm ni window.startVoice. El visitante pulsa la cápsula.

Qué ve el visitante

  1. Aparece el control (esquina, fijo).
  2. Con un clic real, el navegador pide el micrófono (getUserMedia dentro del iframe de Lovi).
  3. Oye al agente y puede colgar.
  4. Tras colgar, feedback 👍/👎.
Prueba en HTTPS o localhost. Si tu página mete el widget en un iframe de otro origen, ese iframe necesita allow="microphone" y, si usas Permissions-Policy, permitir microphone hacia https://widget.lovi.ai. El iframe de Lovi ya lleva allow="microphone; autoplay".

Aspecto

Colores, posición y animación salen de GET /functions/v1/voice-widget (Voice-config). En el HTML solo fuerzas idioma con language-lovi.

Audio y paso a humano (lo hace el iframe)

No llames estos endpoints desde tu página. El iframe:
  1. GET …/functions/v1/voice-widget — solo apariencia (Voice-config). No es la sesión de audio.
  2. GET …/functions/v1/voice-widget/signed-url — sesión ElevenLabs ConvAI (URL firmada + SDK).
  3. También usa: POST …/voice-widget/search, feedback, POST …/voice-widget/handoff, POST …/voice-widget/handoff/end, GET …/voice-widget/chat-by-conversation.
Sí hay transferencia a humano en el iframe de voz (transferring / waiting_agent / with_human, LiveKit). No es una API pública para el JavaScript de tu web.

Requisitos técnicos (página anfitriona)

La página debe poder llamar al menos a:
  • https://widget.lovi.ai
  • https://cloud.lovi.ai
  • https://api.elevenlabs.io y wss://api.elevenlabs.io
  • wss://livekit.rtc.elevenlabs.io
  • https://cloud-api.livekit.io
  • https://cdn.jsdelivr.net
Ni iawidget.js ni widget.lovi.ai envían Content-Security-Policy. Esta lista es para tu CSP / firewall.

Resolución de problemas

Relacionado