Operations
Troubleshooting
Quick diagnostic for the 20 most common SIVO issues — SIP registration, WebRTC audio, transcription, Salesforce, AI agents.
Calls and audio
Agent isn’t receiving calls
Common cause: agent status is On Break / Logged Out, or not in the right queue.
Check in order:
- Dashboard → Agents → your user →
statusshould beAvailable. - Queue → must include the agent as member (Settings → Queues → view members).
- Softphone → SIP registration green (top-right icon).
- WebRTC → mic permission granted in the browser.
No audio in the call (one side or both)
Common cause: NAT/corporate firewall blocking RTP, or codec mismatch.
- If PSTN caller can’t hear agent: check agent-side firewall, open outbound UDP RTP range.
- If agent can’t hear caller: same other direction.
- Negotiated codecs visible in backoffice CDR → “Call detail” → “Technical”.
- WebRTC needs STUN. If your corporate net blocks
stun.l.google.com:19302, ICE fails. Solution: use TURN (Enterprise).
Call drops on blind transfer
Common cause: destination doesn’t exist or is unavailable.
- Verify destination extension is registered (Settings → Agents).
- Filter Audit Log by
event=transferfor the exact cause. - Attended (3-way) is more reliable when the destination is uncertain.
SIP registration
Softphone shows disconnected
- Logout/login (re-issues tokens).
- If it persists, browser DevTools → Console → search “SIP” / “WSS”.
- WSS on port 443 can be blocked by mis-configured HTTP/2 proxies. Use alt port or disable HTTP/2 at proxy.
SIP trunk in FAIL state
Common cause (90%): wrong CIDRs or bad credentials.
- Settings → SIP trunks → “Allowed CIDRs” must contain the carrier’s full range.
- Zadarma sends from
185.45.152.0/24(not only185.45.152.180). - Twilio: see IPs in Twilio dashboard → Elastic SIP Trunking → “IP ACL”.
- After fixing, wait 30s and check status.
Live transcription
No transcript even though policy is active
Common cause: policy is active but the call didn’t reach bridge-agent-start or enter an ai_agent node.
If you believe it was answered yet not transcribed:
- Settings → Transcription policies → verify your policy applies (scope global vs DID vs queue vs agent).
- Settings → Transcription providers → STT API key must be valid (test button).
- Call CDR → “Technical” → look for
transcription_*events. Iftranscription_startedis missing, capture never started.
Transcription cuts mid-call
- STT provider WebSocket can drop occasionally. We retry up to 3 times. If all fail, logged in
transcription_errorsof CDR. - If this happens systematically: possibly provider quota/rate-limit. Check provider dashboard.
auth_error with ElevenLabs Scribe
- API key invalid or expired.
- Verify configured model is
scribe_v2_realtime(with_realtimesuffix), notscribe_v2. Batch doesn’t support WebSocket streaming.
Salesforce SCV
”Connect with SIVO” button in the LWC doesn’t open OAuth
- SF admin lacks External Client App install permission. Assign Profile/Permission Set with “Manage Connected Apps”.
- Popup blocked by browser. Allow popups for your SF domain.
OAuth callback failed: invalid_grant
- SIVO server clock and Salesforce clock differ by >5 min. Rare. Report to support.
- External Client App deleted between OAuth open and callback. Reinstall package.
VoiceCall not created on inbound
- SF ↔ SIVO user mapping incomplete. Settings → Salesforce → “User mappings”.
- Agent who will answer isn’t mapped to an active SF
User. - SCRT2 endpoint unreachable. Check
status.salesforce.com.
Transcription doesn’t appear in Conversation
- Verify SIVO → Settings → Salesforce →
push_transcripts: true. Telephony-Provider-Name: calltreeheader must be configured in SFCall Center(LWC does it automatically).- SOQL:
SELECT Id, ConversationIdentifier FROM Conversation ORDER BY CreatedDate DESC LIMIT 5should have recent rows. - SCRT2 errors → CDR → “Technical” → look for
sf_push_error.
AI agents
Bot interrupts its own voice (loop)
Cause: AI agent’s VAD detects TTS playback as speech.
- Advanced (Pro/Enterprise) → AI Agents → “Anti-echo cooldown” → bump to 400-500ms if your hardware or environment is noisy.
- Ensure caller isn’t on speakerphone close to the mic.
Latency too high (>2s)
- Switch LLM to Groq (TTFT ~120ms vs OpenAI 700+).
- STT: Deepgram Nova-2 is fastest.
- If using ElevenLabs TTS, try
eleven_multilingual_v2(WS) instead ofeleven_v3(HTTP).
LLM returns invalid JSON and bot says “didn’t catch that”
- Review the prompt: must explicitly instruct JSON with
response,action,variablesfields. - Most reliable LLMs for structured JSON output: OpenAI GPT-4o-mini and Groq Llama 3.x with temperature ≤ 0.3.
Multi-tenant
I see other tenant’s data in my dashboard
This should not happen and is a critical security bug. If you see it:
- Close session immediately.
- Capture full URL, visible IDs, date/time.
- Email
[email protected]with subject [SECURITY] Cross-tenant data leak. - SIVO confirms within 2h and opens internal incident response.
PostgreSQL RLS is active on 23+ tables. If you see cross-tenant data, the RLS engine failed — immediate escalation.
Webhooks
My endpoint receives the event twice
Normal. Each webhook carries a unique X-Sivo-Event-Id. If you get the same ID twice (timeouts on your side), discard it. SIVO never changes the ID on retry.
My webhook returns 200 but data doesn’t arrive
- Verify body is parseable JSON. Some frameworks consume the body if you don’t
app.use(express.raw())before your HMAC handler. - HMAC: signature is computed on the raw body, not parsed.
HMAC signature mismatch
- Use the correct
webhook_secret(the per-endpoint one, not a global). - Algorithm is
sha256(notsha1). - Comparator must be timing-safe (
crypto.timingSafeEqualin Node).
Backoffice and dashboard
Page loads indefinitely
- Stale browser cache. Hard refresh
Ctrl+Shift+R(Win/Linux) /Cmd+Shift+R(Mac). - Socket.IO WebSocket disconnected. Network tab → WS → if red, reload.
Login says “invalid credentials” with correct password
- 5 failed attempts in 15 min triggers temp lockout. Wait or request reset.
- MFA enabled (admin/superadmin): missing TOTP code, not the password.
How to get support if none of this works
- Audit Log: backoffice — if incident, wait ETA.
- Audit log: backoffice → Audit → filter by affected user/resource.
- Email:
[email protected]with:- Tenant slug.
- Exact time of issue (timezone).
- User/agent/queue/call ID if applicable.
- Screenshot with DevTools Console + Network open.
- Enterprise: use your CSM direct channel.