Integraciones
Salesforce Service Cloud Voice
Conecta SIVO con tu org de Salesforce en un click. OAuth zero-touch, push automático a Conversation/ConversationEntry, listo para Einstein.
La integración con Salesforce es la pieza estrella de SIVO. Está diseñada para que el admin de SF complete el onboarding en menos de 10 minutos, sin tener que subir certificados ni configurar Connected Apps manualmente.
Prerrequisitos
- Org Salesforce con Service Cloud Voice activado.
- Licencias SCV asignadas a los usuarios que vayan a atender llamadas.
- Permiso
Manage Connected Appso equivalente en el perfil del admin SF.
Instalación del connector
-
En tu org SF, abre el package de SIVO:
https://login.salesforce.com/packaging/installPackage.apexp?p0=<package-id>El package contiene una External Client App, un Lightning Web Component (
calltreeSetup) y dos custom metadata records. Auto-detecta sandbox vs producción. -
Tras la instalación, abre Setup → busca “SIVO Connector” → pestaña Setup.
Conexión OAuth
- Click en “Conectar con SIVO”. SF abre una ventana OAuth con PKCE.
- SIVO recibe el callback en
https://app.sivocenter.com/salesforce?autoConnect=1. - Si no tienes sesión SIVO abierta, te lleva al login y reanuda el flujo después.
Lo que SIVO descubre automáticamente:
| Dato | Cómo lo obtenemos |
|---|---|
org_id (15-char) | SELECT Id FROM Organization LIMIT 1 |
scrt_base_url | SELECT Endpoint FROM ScrtServiceConfiguration LIMIT 1 |
call_center_name | SELECT InternalName FROM CallCenter WHERE InternalName LIKE 'SIVO_%' |
| Sandbox vs producción | SELECT IsSandbox FROM Organization |
No tienes que copiar/pegar ningún ID.
Mapeo de usuarios
Click en “Auto-import SF users”. SIVO ejecuta:
SELECT Id, Email, Name FROM User
WHERE IsActive = true AND UserType = 'Standard'
Y empareja por email con tus agentes SIVO existentes. Los matcheados quedan vinculados; los no matcheados los puedes crear con un click.
Modelo de datos en Salesforce
SIVO empuja a SCRT2 (Service Cloud Real-Time API v2), que materializa tus llamadas en estos objetos:
VoiceCall
El record canónico de la llamada. Campos clave:
VendorCallKey— UUID del canal SIP en SIVO.CallStatus—inProgress,completed,abandoned, etc.StartDateTime/CallEndDateTime.FromPhoneNumber/ToPhoneNumber.OwnerId— el SF User que atendió.
Conversation + ConversationEntry
Cuando activas la transcripción en vivo, cada turno se empuja como:
POST /telephony/v1/voiceCalls/{vendorCallKey}/messages
Telephony-Provider-Name: calltree
{
"messageId": "uuid-v4",
"messageSequenceNumber": 1,
"senderType": "ENDUSER",
"content": "Hola, llamo por mi factura del mes pasado.",
"timestamp": "2026-05-20T10:23:45Z"
}
Salesforce lo materializa como Conversation (el thread) + ConversationEntry (cada mensaje individual). Compatible directamente con Einstein Conversation Insights para sentimiento, temas y coaching.
Activación de transcripción en SF
Para que las transcripciones aparezcan en SF:
- En SIVO: Settings → Salesforce → Push transcripts → activar.
- En SF: el
Call Centerregistrado debe tener el headerTelephony-Provider-Name: calltreeconfigurado. El LWCcalltreeSetuplo hace automáticamente al conectar.
Multi-org
Una instancia SIVO puede conectarse a N orgs Salesforce. Cada org tiene:
- Su propio mapeo de usuarios.
- Su propio
org_idy endpoint SCRT2. - Opción de keypair RS256 dedicado (Enterprise) — ver Rotación de keys JWT.
Útil para holdings, BPOs y partners que operan llamadas para múltiples marcas con sus propias orgs SF.
Softphone embebido (Open CTI)
El softphone WebRTC de SIVO se renderiza como panel Open CTI dentro de la consola SF. Las ventajas:
- Sin doble login — el JWT SIVO se obtiene de la sesión SF.
- Pop-up automático del registro relacionado (
Contact,Account,Case) cuando entra la llamada. - Click-to-call desde cualquier campo de teléfono.
Verificación end-to-end
Tras configurar:
-
Llama desde tu móvil a un DID configurado en SIVO.
-
En SF, ejecuta:
SELECT Id, CallStatus, FromPhoneNumber, StartDateTime FROM VoiceCall ORDER BY CreatedDate DESC LIMIT 1 -
Debe devolver una fila con
CallStatus = inProgressocompleted. -
Si activaste transcripción, busca también:
SELECT Id, Message FROM ConversationEntry WHERE Conversation.RelatedRecordId = '<voiceCallId>' ORDER BY MessageSequenceNumber
Resolución de problemas
Ver Troubleshooting → Salesforce SCV para los problemas más frecuentes y sus soluciones.