SIVO
Salesforce Service Cloud Voice

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.

Actualizado:
salesforcescvintegracionesoauth

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 Apps o equivalente en el perfil del admin SF.

Instalación del connector

  1. 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.

  2. Tras la instalación, abre Setup → busca “SIVO Connector” → pestaña Setup.

Conexión OAuth

  1. Click en “Conectar con SIVO”. SF abre una ventana OAuth con PKCE.
  2. SIVO recibe el callback en https://app.sivocenter.com/salesforce?autoConnect=1.
  3. Si no tienes sesión SIVO abierta, te lleva al login y reanuda el flujo después.

Lo que SIVO descubre automáticamente:

DatoCómo lo obtenemos
org_id (15-char)SELECT Id FROM Organization LIMIT 1
scrt_base_urlSELECT Endpoint FROM ScrtServiceConfiguration LIMIT 1
call_center_nameSELECT InternalName FROM CallCenter WHERE InternalName LIKE 'SIVO_%'
Sandbox vs producciónSELECT 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.
  • CallStatusinProgress, 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:

  1. En SIVO: Settings → Salesforce → Push transcripts → activar.
  2. En SF: el Call Center registrado debe tener el header Telephony-Provider-Name: calltree configurado. El LWC calltreeSetup lo 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_id y 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:

  1. Llama desde tu móvil a un DID configurado en SIVO.

  2. En SF, ejecuta:

    SELECT Id, CallStatus, FromPhoneNumber, StartDateTime
    FROM VoiceCall
    ORDER BY CreatedDate DESC LIMIT 1
  3. Debe devolver una fila con CallStatus = inProgress o completed.

  4. 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.