# Conectar 3CX

Conecta tu sistema telefónico 3CX con EspoCRM para identificar a quien llama, registrar llamadas, el botón Llamar, las grabaciones y la ventana emergente.

Con 3CX, el enrutamiento, las colas, el buzón de voz y los horarios siguen en 3CX. EspoCRM agrega:

- **Quién llama** en la app de 3CX: nombre, empresa y un enlace al registro en EspoCRM.
- **Registro de llamadas**: al terminar una llamada, se registra una **Llamada** en el Contacto, Cliente potencial o
  Cuenta (entrante, perdida, saliente o no contestada, con su duración), asignada al usuario de esa extensión de 3CX.
  Quien llama y no está en el CRM no se registra.
- **Botón Llamar**: abre el marcador del cliente web de 3CX o la app de 3CX.
- Con el cliente de API de 3CX (abajo): **grabaciones** que se escuchan en EspoCRM y la **ventana emergente al sonar**.

## En EspoCRM

:::steps
1. Abre **Administración → Integraciones → S+M EspoCRM VOIP · 3CX**, marca la casilla para activarla y completa **Dirección de
   3CX** (por ejemplo `https://tuempresa.3cx.us`). En **El botón Llamar abre**, elige *Cliente web de 3CX* o *App de
   3CX (enlaces tel:)*. Si quieres, elige quién recibe las llamadas perdidas sin usuario asignado. Guarda.
2. Abre **Administración → S+M EspoCRM VOIP → Plantilla de 3CX**. Se descarga `SMEspoCRMVOIP.xml` con las direcciones
   y el secreto de este CRM ya completos.
3. Para cada persona, completa **Extensión 3CX** en su Usuario (por ejemplo `101`).
:::

> [!WARNING]
> Mantén el archivo de plantilla en privado: contiene el secreto que permite a 3CX consultar tu CRM.

## En la consola de administración de 3CX

Las pantallas de 3CX se indican con sus nombres en inglés.

:::steps
1. Abre **Integrations → CRM** y anota lo que está seleccionado hoy, para poder volver atrás.
2. Elige **Add Template** y sube el archivo. Conserva su nombre `SMEspoCRMVOIP.xml`: 3CX rechaza nombres con
   espacios, guiones, "+" o "(1)".
3. En la lista de CRM, elige **SMEspoCRMVOIP**. Las direcciones y el secreto ya están completos. Deja activado
   **Enable Call Journaling** y activa **Always query**. Guarda.
4. Usa **TEST** con un número que esté en el CRM: debería mostrar el nombre.
:::

3CX tiene una sola conexión de CRM para todo el sistema: desde ahora, sus llamadas se registran en este CRM. Para
volver atrás, elige allí el CRM anterior.

## Grabaciones y ventana emergente (opcional)

Necesitan un cliente de API de 3CX.

:::steps
1. En la consola de 3CX, abre **Integrations → API** y elige **Add**. Client ID: por ejemplo `espocrm`.
2. Marca **XAPI Access**: Department *DEFAULT*, Role **Owner** (con otros roles no se pueden leer el historial de
   llamadas ni las grabaciones).
3. Marca **3CX Call Control API Access** y agrega las extensiones de los agentes (no los números DID).
4. Guarda y copia la clave de API; 3CX la muestra una sola vez.
5. En la configuración de 3CX en EspoCRM, completa **Client ID de la API de 3CX (grabaciones, llamadas en vivo)** y
   **Clave de la API de 3CX (secreto)**. Guarda.
6. Abre **Prueba de búsqueda 3CX** y elige **Test the 3CX API**.
:::

Las grabaciones se quedan en 3CX: EspoCRM las reproduce después de comprobar que el usuario puede ver esa Llamada, y
no guarda nada.

## Prueba

1. Llama desde un número que esté en el CRM, contesta en 3CX y cuelga: aparece una "llamada entrante" realizada en el
   registro, asignada al usuario de esa extensión.
2. Llama otra vez y no contestes: se registra una "llamada perdida" y el usuario recibe un aviso. Las llamadas que solo
   llegaron a una recepcionista, un grupo de timbrado o una cola también se registran como perdidas.

## Cambia el secreto

Vacía **Secreto para 3CX** en la configuración de 3CX en EspoCRM, guarda, descarga de nuevo la plantilla y súbela a
3CX. Si vuelves a descargar la plantilla sin vaciarlo, se conserva el mismo secreto.

Si la búsqueda no funciona, consulta [Solución de problemas](https://docs.sapiensandmachines.com/es/espocrm-voip/solucion-de-problemas#3cx).
