Cómo configurar la integración de Salesforce

:bookmark: Esta guía cubre los pasos de configuración necesarios para conectar Discourse con Salesforce utilizando el complemento Discourse Salesforce.

:discourse: Discourse Salesforce está disponible en el plan Enterprise.

:person_raising_hand: Nivel de usuario requerido: Administrador

Paso 0: Encontrar a las personas adecuadas en tu organización

Antes de hacer cualquier cosa en Discourse, asegúrate primero de conocer a las personas adecuadas de tu organización que deben participar para gestionar lo requerido en el lado de Salesforce.

Administrador de Salesforce

Quiénes son: En la mayoría de las organizaciones, esta es generalmente la persona a quien tu equipo llama “el admin de Salesforce”, la persona que gestiona la configuración de la organización de Salesforce, no necesariamente el administrador de sistemas de TI.

Qué hacen: Se encargan de la configuración inicial en el lado de Salesforce creando la Aplicación de cliente externo (o Aplicación conectada) en Setup de Salesforce, configurando los ajustes de OAuth y obteniendo la clave de consumidor (Consumer Key) y el secreto de consumidor (Consumer Secret).

Qué necesitan: Acceso a Setup de Salesforce y específicamente al External Client App Manager. En Salesforce, esto requiere el permiso de sistema Customize Application. Esto está incluido en el perfil estándar System Administrator. Si la persona que realiza la configuración no tiene un perfil de System Administrator, un administrador de Salesforce deberá otorgarle un conjunto de permisos que incluya “Customize Application”.

Usuario de integración de Salesforce

Quiénes son: Un usuario de Salesforce cuyas credenciales de cuenta son utilizadas por el complemento de Discourse para realizar llamadas API a Salesforce.

Qué hacen: Proporcionan el nombre de usuario para ingresar en la configuración salesforce username de los ajustes de Discourse Salesforce para facilitar todas las llamadas API desde Discourse a Salesforce.

Qué necesitan: Este usuario debe tener:

Permiso Por qué es necesario
API Enabled Requerido para cualquier acceso API de Salesforce
Create, Read, Edit en Lead Crear y vincular Leads desde los usuarios de Discourse
Create, Read, Edit en Contact Crear y vincular Contactos desde los usuarios de Discourse
Create, Read, Edit en Case Crear Casos desde los temas de Discourse
Create en Case Comment Sincronizar las respuestas del tema como Comentarios de caso
Create en FeedItem (Chatter) Publicar la actividad del tema en Chatter

Nota: El usuario de integración de Salesforce puede ser la misma persona que el administrador de Salesforce. Sin embargo, como buena práctica de seguridad, recomendamos usar una cuenta separada y con permisos más limitados para el usuario de integración.

Paso 1: Generar un certificado y una clave privada

Rol: Admin de Discourse

Discourse Salesforce utiliza el flujo JWT Bearer Flow para autenticarse con Salesforce. Esto requiere un par de claves RSA: un certificado público que Salesforce utiliza para verificar la identidad del complemento y una clave privada que Discourse utiliza para firmar sus solicitudes.

  1. Sigue estas instrucciones para generar el par de claves:
    • server.crt - un certificado público que demuestra que Discourse es la aplicación autorizada
    • server.key - una clave privada que firma las solicitudes API de Discourse a Salesforce
  2. Envía el archivo server.crt a tu administrador de Salesforce para que pueda cargarlo en el Paso 3.
  3. Guarda la server.key para pegarla en los ajustes de Discourse Salesforce en el Paso 5.

Paso 2: Crear la Aplicación de cliente externo en Salesforce

Rol: Administrador de Salesforce

  1. Inicia sesión en Salesforce.

  2. Haz clic en el icono de engranaje (:gear:) en la esquina superior derecha y selecciona Setup.

  3. En el cuadro de búsqueda rápida, busca External Client App Manager y selecciónalo.

  4. Haz clic en New External Client App.

Nota: Estos pasos utilizan el External Client App Manager, introducido en Salesforce Spring '25. Si tu organización está en una versión anterior, la interfaz de usuario puede mostrar App Manager o Connected Apps en su lugar; la configuración subyacente es la misma.

Paso 3: Completar la información básica y los ajustes de OAuth

Rol: Administrador de Salesforce

  1. Completa la sección Basic Information (el Nombre de la aplicación y el Correo electrónico de contacto son obligatorios).

  2. Expande la sección API (Enable OAuth Settings) y marca la casilla de la opción Enable OAuth.

  3. Configura los siguientes ajustes en esta sección:

    • Callback URL: Añade ambos de estos enlaces, reemplazando <your-discourse-site> con la URL completa de tu sitio de Discourse (por ejemplo, meta.discourse.org):
      https://<your-discourse-site>
      https://<your-discourse-site>/auth/salesforce/callback
      :star: ¡Asegúrate de que no haya una barra inclinada / final al final de ninguna de las URL!
    • Available OAuth Scopes: Añade los tres:
      • Acceder al servicio de identificación de URL (id, profile, email, address, phone)
      • Gestionar datos de usuario a través de APIs (api)
      • Realizar solicitudes en cualquier momento (refresh_token, offline_access)
    • Flow Enablement: Habilita ambos:
      • Enable Client Credentials Flow
      • Enable JWT Bearer Flow — esto es requerido para que el complemento cree Leads, Contactos y Casos
  4. En Certificate Upload, haz clic en Upload files y sube el archivo server.crt del Paso 1.

  5. Haz clic en Create.

Paso 4: Obtener la clave de consumidor (Consumer Key) y el secreto de consumidor (Consumer Secret)

Rol: Administrador de Salesforce

  1. En la Aplicación de cliente externo recién creada, haz clic en la pestaña Settings.

  2. Desplázate hacia abajo y expande OAuth Settings.

  3. Haz clic en Consumer Key and Secret.

  4. Vuelve a introducir tus credenciales de acceso de Salesforce cuando se te solicite.

  5. Copia la Consumer Key y el Consumer Secret y envíaselos a tu admin de Discourse para el Paso 5.

Paso 5: Configurar los ajustes del complemento de Discourse

Rol: Admin de Discourse

  1. En Discourse, ve a Admin → Plugins → Salesforce → Settings.

  2. Completa los siguientes ajustes:

    Ajuste Valor
    salesforce enabled Marca la casilla para habilitar la integración
    salesforce client id La Consumer Key del Paso 4
    salesforce client secret El Consumer Secret del Paso 4
    salesforce rsa private key Pega el contenido completo del archivo server.key del Paso 1
    salesforce username El nombre de usuario del usuario de integración de Salesforce
    salesforce authorization server url Solo es necesario si usas un dominio personalizado de Salesforce (por ejemplo, https://mycompany.my.salesforce.com)

  3. Haz clic en Save changes.

Paso 6: Autorizar la aplicación de Discourse en Salesforce

Rol: Usuario de integración de Salesforce

  1. Ve a https://<your-discourse-site>/salesforce/admin/authorize, reemplazando <your-discourse-site> con la URL completa de tu sitio de Discourse (por ejemplo, meta.discourse.org).
  2. Serás redirigido a Salesforce y se te pedirá que autorices la aplicación.
  3. Inicia sesión en Salesforce y concede acceso a la aplicación.

Después de completar este paso, deberías estar listo. Puedes confirmar que está funcionando yendo a cualquier perfil de usuario en Discourse; debería aparecer una opción Sync with Salesforce en el menú de administración.

Solución de problemas

Si el complemento no funciona después de la configuración, revisa lo siguiente primero:

  • Comprobaciones de salud del panel de administración: el complemento muestra dos alertas en /admin cuando hay errores de configuración:

    • SalesforceInvalidCredentials: la Consumer Key, Consumer Secret, la clave privada RSA o el nombre de usuario son incorrectos
    • SalesforceAppNotApproved: el paso de autorización (Paso 6) no se ha completado, o la aplicación conectada fue rechazada
  • Habilitar registro detallado: Activa el ajuste del sitio salesforce_auth_verbose_logging para escribir una salida de autenticación detallada en los /logs de Discourse. Errores comunes y causas:

Síntoma Causa probable
“Insufficient privileges” al crear un Lead o Contacto El usuario de integración no tiene permisos de Crear/Editar en los objetos Lead o Contact
“Insufficient privileges” al crear un Caso Al usuario de integración le faltan permisos para Caso o Comentario de caso
“Invalid grant” en el paso de autorización La clave RSA no coincide con el certificado cargado en el Paso 3, o no se habilitó el flujo JWT Bearer
Error “DUPLICATE_VALUE” al crear un Lead o Contacto Comportamiento esperado si el usuario ya existe en Salesforce; el complemento lo maneja, pero consulta la documentación principal del complemento para más detalles
Las publicaciones en Chatter no aparecen Es posible que el usuario de integración no tenga permisos para crear FeedItem