Skip to main content

Voice Nox

Audience: Sales · Support · QA · Engineering · Management · Where in app: Dashboard → Nox → Voice · Plan availability: Pro+ (a further entitlement on top of base Nox — verify)

Voice Nox lets an admin talk to Nox instead of typing. It's the same assistant with the same tools, but the conversation is spoken — useful while driving, on mobile, or for a quick check while doing something else. It's powered by ElevenLabs Conversational AI over a WebSocket.

What it does

  • Answers the same questions as text Nox, spoken aloud.
  • Can trigger the same tools (visitor lookups, stats, knowledge search, place a call, etc.).
  • Captures a transcript of the voice session for audit.

Voice-friendliness varies by answer shape:

QuestionVoice-friendly?
"How many bookings yesterday?"Yes — single number
"Walk me through John's journey"Yes — natural narrative
"Show me Sarah's last 5 visits"Partial — summarized verbally, full detail in chat
"Which 17 leads should I prioritize?"Partial — top few verbal, full list in chat

Long tables / multi-row lists are summarized for voice; the admin can ask for "the full list" to get it in the chat panel instead.

How it works

  1. Admin opens Voice Nox in the dashboard.
  2. Frontend calls POST /knox-voice/signed-url on ms-ai.
  3. ms-ai mints a signed WebSocket URL — a synced ElevenLabs agent with the tenant's company context baked in.
  4. The browser opens the WebSocket; audio streams bidirectionally.
  5. The ElevenLabs agent invokes Nox tools as needed via the WebSocket tool-call protocol (WebSocket → ms-ai → tool registry → result → back to ElevenLabs → narrated).
  6. Audio response streams back. During-call display events (canvas cards, sources, tool results) stream to the browser over GET /knox-voice/events/:conversationId (SSE), fanned out via Redis pub/sub (knox-voice-events.service.ts) — the ElevenLabs tool webhook and the browser subscription land on different pods in production.
  7. On call end, the transcript is captured to knox_call_transcripts.

A voice call continues the shared Nox conversation: the frontend passes the recent chat turns and knox-voice.service.ts injects a continuity line, so Nox picks up where the chat left off instead of re-introducing itself.

Tool-call latency is typically 1–2s.

Agent sync

The Nox voice agent is a synced copy of a base ElevenLabs Conversational AI agent, with per-tenant overrides:

  • Tool whitelist
  • Tenant-specific system-prompt additions
  • Voice ID

Syncing is handled by KnoxVoiceService (ms-ai).

Configuration & options

  • Entitlement — Voice is gated separately from text Nox.
  • Voice ID / agent overrides — per tenant via the synced ElevenLabs agent.
  • Tool whitelist — which tools the voice agent may call.
  • Recording — audio recording is optional per provider settings; the transcript is always stored for audit.

Behaviors & edge cases

  • Place a call: "call Sarah" works if the knox_place_call entitlement is on — voice confirms, then the outbound call is queued (or scheduled via scheduled_at).
  • Book a meeting: on Nox funnel beta tenants, knox_book_meeting books a GHL calendar slot after an explicit confirmation; other tenants still can't.
  • White-label: the agent self-references the tenant's ai_assistant_name and never says "Knock Knock" on white-label deployments; agencies can override the TTS voice via agency.nox_voice_id (applied per session in knox-agent-sync.service.ts).
  • Memory: same per-session memory model as text Nox (fresh each session; durable per-admin facts via knox_remember apply to both).
  • Different LLM: the voice agent uses a low-latency model tuned for conversation, so answers can differ subtly from text Nox.
  • Network sensitivity: ElevenLabs needs a stable WebSocket — flaky networks degrade quality fast, and complex multi-tool queries feel slow over voice.

Plan & limits

  • Plan-gated (Pro+, separate entitlement — verify).
  • Consumes AI credits per minute of conversation.
  • Some tool results don't translate to voice and are summarized — full detail is available in the chat panel.

Privacy

  • The voice transcript is stored in knox_call_transcripts for audit.
  • Audio recording is optional per provider settings.
  • The admin can delete a transcript via the standard delete flow.

Technical implementation

  • Module: ms-ai/src/knox-voice/. Signed URL: POST /knox-voice/signed-url. Agent sync: KnoxVoiceService.
  • Tools are the same registry as text Nox (knox-agent/tools/), bridged over the ElevenLabs WebSocket tool-call protocol.
  • Transcripts land in knox_call_transcripts (ms-ai Postgres) — see Visitor data.