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.
…
Esta es la cuarta publicación de blog de una serie de cinco partes.
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 cuarta 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 .
Revisa las publicaciones anteriores del blog:
Mejorar la experiencia del desarrollador
Hasta ahora, hemos visto cómo se diseñan las diferentes partes de nuestra aplicación Ready to Fly y cómo hacemos que los diferentes sistemas interactúen. Puede compilar toda la aplicación mientras envía cambios a Salesforce y Heroku cada vez; sin embargo, podemos obtener una experiencia de desarrollador mucho mejor al ejecutar nuestra aplicación Node.js localmente y usar un depurador.
Desarrollo local con Modo Socket
La opción más sencilla para ejecutar una aplicación de Slack localmente es ejecutarla en modo Socket , donde Slack proporciona una URL de WebSocket dedicada a su aplicación. WebSocket es un protocolo que, a diferencia de HTTP, permite la comunicación bidireccional entre el cliente y el servidor. Al usar el modo de socket, no necesita exponer un punto final HTTP público para recibir eventos de Slack. La URL con la que Slack se comunica se crea en tiempo de ejecución y Bolt la actualiza periódicamente. El modo Socket también se puede usar para ejecutar aplicaciones detrás de un firewall. Obtenga más información leyendo las instrucciones para ejecutar su aplicación en modo Socket.
Sin embargo, hay algunos casos en los que el modo Socket no se puede utilizar actualmente para el desarrollo local, por ejemplo, si necesita:
- Implemente el flujo Slack OAuth (p. ej., para aplicaciones de directorio ) para almacenar la información de instalación de forma segura
- Llame desde Salesforce a una ruta HTTP personalizada definida en Slack
- Use un ExpressReceiver personalizado para enrutar las solicitudes HTTP cuando el receptor original no funcione para usted
En esos casos, la opción alternativa es utilizar una solución de tunelización, como ngrok . Esto es lo que tuvimos que usar en las últimas etapas de desarrollo de Ready to Fly. Como implementamos una llamada de Salesforce a Slack, también necesitábamos un ExpressReceiver personalizado para usar la biblioteca express-session
rápida, ya que el estándar no es compatible con el middleware.
Desarrollo local con ngrok
Ngrok expone su servidor local al exterior a través de un túnel seguro. Cuando lo ejecuta, proporciona una URL pública que puede usar en sus integraciones, por ejemplo, para llamar desde Salesforce a la aplicación Node.js que se ejecuta en su máquina local.
Tienes varias opciones para instalar ngrok . En nuestro caso, decidí usar npm:
npm instalar ngrok -g
A continuación, tendrás que registrarte . Una vez que haya iniciado sesión, vaya a "Configuración e instalación" y copie su token de autenticación, ya que deberá almacenarlo en su máquina local.
La forma más fácil de almacenar su token de autenticación es ejecutar:
ngrok authtoken my_auth_token
¡Y eso es todo! Después de eso, podrá ejecutar un túnel ngrok de la siguiente manera:
ngrok http 3000
En la imagen de arriba, podemos ver cómo se está ejecutando el túnel ngrok. Las solicitudes que lleguen a http://2246-213-194-153-236.ngrok.io serán reenviadas por ngrok a http://localhost:3000.
Veamos ahora cómo configurar Slack, Salesforce y la aplicación Node.js para usar esa URL pública de ngrok. Tendrá que copiar la URL pública en varios lugares (¡asegúrese de copiar el HTTPS!):
1. Copie la URL pública en las URL de solicitud de su aplicación de Slack. Puede encontrar la configuración de la aplicación Slack en api.slack.com .
2. Copie la URL pública en el archivo .env de la aplicación Node.js para anular la variable de entorno HEROKU_URL.
Es una buena práctica almacenar la configuración en variables de entorno . De esa forma, la configuración de diferentes entornos de ejecución es sencilla y los tokens y los secretos se mantienen seguros, separados de su código fuente. Como parte de la configuración realizada por el kit Slack Starter de Salesforce , las variables de entorno se configuran en Heroku a través de config vars, pero también en un archivo .env local que nunca se compromete con el repositorio.
Luego, usamos la biblioteca dotenv npm para leerlos en el código de la aplicación Node.js, lo que significa que las vars de Heroku se usarán cuando la aplicación se ejecute en Heroku. Pero cuando se ejecuta localmente, se usará el archivo .env vars en su lugar. Ese es el archivo donde tendrá que actualizar el valor de la variable de entorno HEROKU_URL para que apunte a la URL pública de ngrok.
3. Agregue la URL pública de ngrok en el campo URL de devolución de llamada de la aplicación conectada en Salesforce. Eso es lo que usamos para la autorización. Encontrará la definición de la aplicación conectada en "Configuración → Administrador de aplicaciones".
4. Agregue una nueva configuración de sitio remoto que contenga la URL pública de ngrok. Este es el que usaremos para llamar desde Salesforce a Slack, ¡y debemos hacer que Salesforce lo permita!
5. Modifique el campo BoltAppConfigHeroku
del registro de tipo de metadatos personalizado de URL__c
tal como se usa en la lógica de Apex para realizar la llamada.
¡Ahora está preparado para ejecutar Ready to Fly localmente! En otra terminal (diferente a la que está ejecutando ngrok), ejecute node app.js
Su aplicación se ejecutará en https://localhost:3000 y ngrok canalizará cualquier solicitud entrante a esa dirección. A continuación, puede realizar cambios en el código, así como iniciar y detener la aplicación tantas veces como desee, lo que hace que el desarrollo sea mucho más fácil y productivo.
depuración
Para maximizar aún más la productividad, y dado que su aplicación ahora se ejecuta localmente, puede adjuntar un depurador. Una forma simple y efectiva de hacerlo es usar VSCode:
- Vaya a la pestaña "Ejecutar y depurar" en VSCode
- Seleccione "Terminal de depuración de JavaScript" en el menú desplegable y haga clic en el botón Reproducir
- ¡Agregue puntos de interrupción a su código!
- Finalmente, ejecute la aplicación en el terminal de depuración de JavaScript con
node app.js
Recuerde detener cualquier otra instancia en ejecución de la aplicación de antemano para evitar que se use el puerto. Cuando interactúa con la aplicación, desde Salesforce o desde Slack, el código se detendrá en los puntos de interrupción alcanzados y podrá examinar las variables, la pila de llamadas, etc., lo que se vuelve extremadamente efectivo al desarrollar Node.js aplicación!
Otras herramientas para desarrolladores
Finalmente, quiero mencionar algo más que me resultó muy útil: las herramientas para desarrolladores de Slack . Estos le permiten obtener acceso rápido a los documentos API de Slack dentro de Slack, recuperar información útil como ID de conversación y espacio de trabajo, e investigar la estructura de los mensajes del canal. ¡Darle una oportunidad!
Terminando
En esta publicación de blog, hemos cubierto cómo ejecutar la parte de la aplicación Node.js de nuestra integración localmente. También hemos visto cómo usar un depurador para poder detenernos en los puntos de interrupción e inspeccionar nuestro código en profundidad. Estas herramientas, junto con las herramientas para desarrolladores de Slack, lo convertirán en un desarrollador mucho más productivo (¡y feliz!) al crear una aplicación de Slack.
¡Asegúrese de clonar el kit de inicio de Slack de Salesforce y pruebe el desarrollo local con ngrok!
Estén atentos a la publicación de blog final de la serie en la que cubriremos las funciones interesantes en las que Salesforce está trabajando para hacer que el desarrollo de las aplicaciones de Slack + Salesforce sea mucho más fácil.
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/03/building-a-slack-app-that-integrates-with-salesforce-part-4-local-development-and-debugging.html