Ir al contenido principal

Fin Messenger: Integrando el messenger en tu portal de Salesforce

Esta guía te muestra los pasos para instalar Fin Messenger en una página web de Salesforce.

Agrega Fin Messenger a tu sitio de Salesforce Experience Cloud (portal) y controla qué datos del usuario conectado se envían a Fin completamente mediante configuración, sin necesidad de editar Apex.

Nota: Cambios (jun 2026): Antes esta guía pedía editar la clase JwtGenerator Apex para elegir el identificador de usuario y qué atributos enviar. Eso no es posible en una organización de producción (Salesforce no permite editar Apex vía Setup en producción, y las clases empaquetadas se sobrescriben al actualizar). Ahora configuras todo esto en Fin Messenger Settings (custom setting), con una interfaz Apex opcional para casos avanzados (ver Paso 6).


Instalar Fin Messenger en una página web de Salesforce

1. Instala el paquete en Salesforce

Para instalar Fin Messenger en una página web de Salesforce, hemos creado un paquete que puedes instalar, el cual simplemente crea una definición de custom setting.

Necesitarás instalar el paquete en tu entorno Salesforce antes de seguir los pasos a continuación.

O

2. Configura los ajustes de Fin Messenger en Salesforce

El paquete añade un Fin Messenger Settings protected setting que almacena tu App ID, JWT secret y (nuevo) la configuración de datos de usuario.


​A) Abre la configuración Setup

  1. Abre el App Launcher.

  2. Elige Fin Messenger Setup.

B) App ID — en Fin, Settings > General; introdúcelo en el campo App Id.
​C) JWT Secret Key — en Fin, es la Unified Secret key en Settings > Fin Messenger > Security; introdúcelo en el campo JWT Secret Key. La clave secreta no puede leerse después de guardar; solo se muestra su huella digital.


Estos dos son los únicos valores obligatorios. El resto (Paso 6) es opcional.

3. Configura la política de seguridad de contenido (CSP)

  1. Setup > Digital Experiences > All Sites > (tu sitio) > Builder > Settings > Security & Privacy.

  2. Configura Security Level a Relaxed CSP.

  3. En Trusted Sites for Scripts, añade https://widget.intercom.io y https://js.intercomcdn.com.

  4. En Setup → Trusted URLs, añade las URLs/directivas CSP de Intercom, con CSP Context = All o Experience Builder Sites.

4. Añade el script de arranque de Fin Messenger a tu portal

<script>
window.addEventListener('finMessengerData', function (e) {
var data = e.detail || {};
window.intercomSettings = {
api_base: 'https://api-iam.intercom.io', // regional base — see table
app_id: data.appId,
intercom_user_jwt: data.jwt // omitted/null → boots logged-out
};
window.Intercom && window.Intercom('boot', window.intercomSettings);
});
</script>

Región

api_base

EE.UU.

https://api-iam.intercom.io

UE

https://api-iam.eu.intercom.io

Australia

https://api-iam.au.intercom.io

Nota: Para sitios Experience Cloud, usa el fragmento del cargador del widget junto con el script listener finMessengerData en este paso. No añadas un bloque manual separado intercomSettings, ya que eso puede impedir que aparezca el Messenger.

5. Añade el componente Fin Messenger a tu página

  1. Setup > Digital Experiences > All Sites > (tu sitio) > Builder.

  2. Arrastra el componente Fin Messenger a la página del portal.

  3. Publica el sitio.

6. Configura los datos de usuario enviados a Fin

Todo listo en la app Fin Messenger Setup (Paso 2) — sin cambios de código. Deja un campo en blanco para mantener el valor predeterminado.

Campo

Qué controla

Predeterminado si está vacío

Campo Id de Usuario

El campo Usuario cuyo valor se convierte en el user_id de Fin.

ContactId

Campos de Atributos

Atributos adicionales para enviar (formato abajo).

ninguno

Campo Id de Compañía

El campo Usuario enviado como company.company_id.

omitido

Clase Proveedora

Avanzado: una clase Apex que devuelve atributos personalizados.

no usado

Formato de Campos de Atributos

Pares separados por comas intercomKey:UserField:

  • A la izquierda de los dos puntos — el nombre del atributo Intercom (clave que recibe Fin).

  • A la derecha de los dos puntos — el nombre API del campo Usuario de Salesforce para leer el valor.

  • Un nombre de campo simple usa el nombre del campo en minúsculas como clave Intercom.

  • Los campos personalizados usan su nombre API (__c). Los campos desconocidos se ignoran.

Ejemplo: phone:Phone, job_title:Title, Department, plan:Account_Tier__c produce:
​

{ "phone": "(555) 123-4567", "job_title": "Account Executive", "department": "Sales", "plan": "Enterprise" }

Nota: name, email y user_id siempre se envían (no los listes aquí).

Avanzado: atributos personalizados vía Apex

Para valores que no puedes expresar como un solo campo Usuario, implementa finai.MessengerAttributeProvider en tu propia clase Apex (editable, en tu organización), luego pon su nombre en Clase Proveedora:
​

global class MyFinAttributes implements finai.MessengerAttributeProvider {
global Map<String, Object> injectFinCustomAttributes(User currentUser) {
Map<String, Object> attrs = new Map<String, Object>();
attrs.put('locale', currentUser.LanguageLocaleKey);
attrs.put('is_internal',
currentUser.Email != null && currentUser.Email.endsWith('@acme.com'));

// currentUser only has the configured fields — query anything else yourself
Contact c = [
SELECT AccountId, Account.Name, Account.Subscription_Tier__c
FROM Contact WHERE Id = :currentUser.ContactId LIMIT 1
];
attrs.put('plan', c.Account.Subscription_Tier__c);
attrs.put('company', new Map<String, Object>{
'company_id' => c.AccountId, 'name' => c.Account.Name
});
return attrs;
}
}
  • Debe ser global (llamada a través del espacio de nombres del paquete).

  • currentUser solo contiene los campos configurados en el Paso 6 — consulta cualquier otro.

  • El mapa del proveedor se fusiona último, por lo que sus claves prevalecen sobre Campos de Atributos.

  • Mantenlo ligero — se ejecuta en cada arranque del messenger (los errores se capturan; consultas lentas ralentizan el arranque).

Seguridad: Los perfiles de usuario de Community y Experience Cloud no necesitan el permiso API Enabled ni acceso al custom setting finmessenger__Settings__c, y puedes eliminar ambos (mantén el custom setting). Mantén el secreto JWT en el servidor; solo el token firmado debe llegar al navegador. Prueba los cambios primero en sandbox.


Preguntas frecuentes

¿Cómo encuentro mi Fin App ID?

Ve a Settings > General. Tu App ID aparece en la sección App details.

¿Dónde encuentro la JWT Secret Key?

Copia la Unified Secret key en Settings > Fin Messenger > Security. Esta es la JWT secret key.

¿Qué pasa si el messenger no carga?

Revisa tus configuraciones CSP. Asegúrate de que tanto las URLs de scripts confiables como las URLs confiables estén configuradas correctamente y que el nivel de seguridad esté en Relaxed CSP.

¿Puedo restringir qué datos de usuario se envían a Fin?

Sí, eso es el Paso 6. Configura Campo Id de Usuario, Campos de Atributos, Campo Id de Compañía y Clase Proveedora en Fin Messenger Settings. Solo se envían name, email, user_id y lo que listes en Campos de Atributos. Limpia campos para enviar menos.

¿Necesito editar Apex?

No, la configuración estándar en el Paso 6 no requiere cambios de código. Apex solo es necesario si optas por el gancho avanzado Clase Proveedora, que usa una clase que escribes en tu propia organización (no el Apex empaquetado).

¿Cómo resuelvo fallos de compilación de Apex?

  • El paquete de Salesforce depende de objetos y campos estándar, así que si hay un fallo de compilación podría deberse a clases Apex huérfanas en la organización Salesforce.

  • En esos casos, haz clic en el acordeón Opciones Avanzadas durante la instalación.

  • Selecciona Compilar solo el Apex del paquete y luego pulsa Instalar.

¿Ha quedado contestada tu pregunta?