Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .
El enlace a la publicación original, lo encontrarás al final de este artículo.
…
Crear una aplicación de Slack que se integre con Salesforce implica algunos desafíos, como conocer la capacidad de integración correcta para usar en cada caso, elegir el flujo de autorización correcto e implementarlo de forma segura. Esta es la primera publicación de blog de una serie en la que cubrimos todo el proceso de creación de una aplicación de Slack que se integre con Salesforce desde cero. Aprenda junto con nosotros mientras creamos Ready to Fly , nuestra nueva aplicación de muestra para enviar y aprobar solicitudes de viaje en Salesforce sin salir de Slack.
Nota: Algunas partes de esta aplicación han sido codificadas en vivo por mis colegas Mohith Shrivastava (@msrivastav13) y Kevin Poorman (@codefriar) en su serie de videos codeLive: Building with Slack .
el caso de uso
Cuando empezamos a pensar en este proyecto, nos vinieron a la mente varios casos de uso. Queríamos crear una aplicación de muestra que usara Slack y Salesforce, y queríamos mostrar cómo montar la aplicación, cómo implementar la autenticación con Salesforce y diferentes opciones para comunicarse en ambas direcciones: de Slack a Salesforce y de Salesforce a Slack. . Después de pensarlo un poco, decidimos crear una aplicación de aprobación de viajes.
Las aprobaciones de viajes residen en un objeto personalizado de Salesforce.
la experiencia del usuario
Los empleados pueden crear solicitudes de viaje desde Slack mediante un comando de acceso directo global.
Desde la página de inicio de la aplicación, los usuarios pueden ver una lista de las solicitudes de viaje que han enviado para su aprobación.
Los gerentes también pueden ver las solicitudes pendientes de revisión en la página de inicio. Dentro de Slack, pueden aprobarlos o rechazarlos. O, si quieren ver más detalles, pueden hacer clic en un botón para ver el registro en Salesforce.
Por otro lado, Salesforce envía notificaciones en diferentes casos, como cuando una solicitud de viaje enviada por el usuario ha sido aprobada o rechazada, y cuando una nueva solicitud de viaje necesita la atención del usuario. Los gerentes pueden aprobar o rechazar nuevas solicitudes de viaje desde el mensaje.
Para ver la aplicación en acción, vea esta demostración .
La arquitectura
Cuando creamos una aplicación de Slack, realmente necesitamos hacer dos cosas. En primer lugar, debemos definir la aplicación en api.slack.com en un espacio de trabajo de Slack que luego se puede distribuir de varias maneras. Esto se hace a través de una interfaz de usuario, ya sea manualmente o copiando un archivo manifest.yml , y no se necesita código en este punto.
En segundo lugar, Slack proporciona una serie de API (API de eventos, API web y más ) que puede usar para interactuar con la aplicación instalada. Para interactuar con estas API, normalmente crea una aplicación utilizando código en el idioma de su elección. Podría usar estas API directamente en su aplicación, pero afortunadamente Slack proporciona una biblioteca para facilitarle la vida: el marco de Bolt . Bolt proporciona un servidor web para ejecutar su aplicación, configura la autenticación con la aplicación Slack y le brinda interfaces simplificadas para trabajar con todas las API y funciones de Slack. El marco de Bolt está disponible para Python , JavaScript y Java .
Nota : Es posible que encuentre referencias a los SDK de Python , Node y Java . Sin embargo, Slack ahora recomienda usar el marco de Bolt, ya que incluye la funcionalidad en esos paquetes y más.
Para crear Ready to Fly, decidimos crear una aplicación Node.js. Esta aplicación actúa como una capa de middleware a través de la cual pasan todos los flujos de comunicación. Alojamos la aplicación en Heroku , ya que el proceso de implementación es sencillo y pudimos ejecutar nuestra aplicación de demostración en dynos gratuitos. La aplicación Node.js usa la versión JavaScript de Bolt (Bolt.js) para comunicarse con Slack. Con Bolt, todo el trabajo de autenticación se gestiona por usted, lo cual es una gran ventaja.
Por el contrario, la aplicación Node.js usa JSforce para llamar a Salesforce, a través de una aplicación conectada . Para Ready to Fly, decidimos usar el flujo de servidor web OAuth 2.0 para el flujo de integración de aplicaciones web (a veces conocido como "flujo de usuario a usuario"). Este flujo permite a los usuarios de Slack autorizarse como un usuario concreto en Salesforce, de modo que la aplicación pueda acceder a los datos de Salesforce en el contexto del usuario. Esto es exactamente lo que queríamos hacer, ya que las solicitudes de viaje deben crearse, aprobarse o rechazarse en nombre del usuario autorizado. Exploraremos en profundidad cómo implementamos el flujo en otra publicación de blog de esta serie (spoiler: ¡usamos el kit de inicio de Slack de Salesforce !).
Para llamar desde Salesforce a la aplicación Slack, decidimos usar una característica de Bolt.js llamada rutas HTTP personalizadas . Esto crea un enrutador expreso estándar para recibir solicitudes desde el exterior. Podríamos haber usado Webhooks para crear mensajes en la aplicación Slack directamente, pero eso no funcionó para nuestro caso de uso porque necesitábamos ejecutar alguna lógica en respuesta a la llamada de Salesforce.
Puede ver este breve video para familiarizarse con la arquitectura del sistema de la aplicación Slack.
La estructura del repositorio
El código de la aplicación Ready to Fly está organizado en un solo repositorio Git para simplificar. Tanto el código de la aplicación Node.js como el código de la aplicación Salesforce están incluidos en el repositorio.
Para implementar la aplicación, siga las instrucciones LÉAME. Deberá ejecutar un script de implementación y también realizar algunos pasos manuales. Necesitará un espacio de trabajo de Slack en el que instalará la aplicación, una cuenta de Heroku y una organización de Salesforce (una que sea un centro de desarrolladores). El script de implementación:
- Cree una organización borrador e implemente el código de la aplicación Salesforce, incluido el código necesario para la autenticación, junto con algunos datos de muestra
- Implemente el código de la aplicación Node.js en Heroku, configurando todos los tokens de autenticación necesarios y las variables de configuración en variables de entorno seguras.
Próximos pasos
Hemos creado esta aplicación desde cero. Sin embargo, Salesforce está trabajando en el SDK de Slack de Salesforce , una nueva colección de herramientas para desarrolladores que le permitirá utilizar sus habilidades de desarrollo de Salesforce para crear aplicaciones de Slack en Salesforce aprovechando sus habilidades de Apex existentes. El SDK se encuentra actualmente en Piloto para nuestros socios ISV. Hablaremos más sobre el SDK más adelante en la serie de blogs.
Eso es todo por esta primera entrada de blog de nuestra serie. ¡No olvide verificar el código Listo para volar y hacer que la aplicación se ejecute en su propia organización de Salesforce y espacio de trabajo de Slack! Recuerde: hay una serie de videos relacionados y otro video breve que lo ayudarán a familiarizarse con la arquitectura del sistema de la aplicación Slack.
Continuaremos profundizando en más detalles de implementación en futuras publicaciones. En el siguiente, profundizaremos en la estructura de la aplicación Node.js y cómo usa Bolt.js para comunicarse con Slack. ¡Así que estad atentos!
Sobre el Autor
Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Se centra en los componentes web Lightning y la estrategia de adopción de Lightning. Puedes seguirla en Twitter @AlbaSFDC .
…
Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2022/02/building-a-slack-app-that-integrates-with-salesforce-part-1-architectural-overview.html