Skip to content

Etiqueta: REST

Explore la API de la plataforma de eventos con la colección de cartero extendida ☁️

Explore la API de la plataforma de eventos con la colección de cartero extendida ☁️

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.

Explore la API de la plataforma de eventos con la colección extendida de Postman | Blog de desarrolladores de Salesforce

Para una gran cantidad de nuestros clientes, la plataforma Salesforce sirve como la piedra angular de sus sistemas de información y, por lo tanto, debe integrarse perfectamente con una amplia gama de sistemas de terceros. Entre las muchas opciones de integración disponibles se encuentra la plataforma de eventos de Salesforce.

En esta publicación, repasaremos brevemente la plataforma de eventos y luego exploraremos la nueva plataforma de eventos y las solicitudes de API que se agregaron a la colección de API de la plataforma de Salesforce en Postman. También aprenderá cómo introdujimos la capacidad de configurar Event Relays y canales personalizados con Postman.

Acerca de la plataforma de eventos de Salesforce

Event Platform consta de diferentes funciones que le permiten crear arquitecturas basadas en eventos gracias a Salesforce Event Bus.

Tipos de eventos

El bus de eventos de Salesforce admite dos tipos principales de eventos casi en tiempo real: eventos de plataforma y eventos de cambio.

Los eventos de la Plataforma permiten la comunicación dentro de la Plataforma y con sistemas externos. Estos eventos se pueden enviar y recibir con código personalizado o herramientas declarativas, como Flow. Hay eventos de plataforma estándar con campos predefinidos y eventos personalizados que puede crear con campos personalizados.

Los eventos de cambio son enviados automáticamente por la Plataforma cada vez que se crea, modifica, elimina o recupera un registro. Cada evento de cambio está vinculado a un objeto de Salesforce estándar o personalizado, y los campos de evento coinciden con los de su objeto principal.

Los eventos de plataforma y los eventos de cambio se pueden enviar y recibir gracias a una selección de dos tecnologías de transmisión: la biblioteca CometD heredada o la API Pub/Sub basada en gRCP más moderna . Independientemente de la tecnología o el tipo de evento, publica o se suscribe a eventos a través de canales dedicados.

Canales personalizados

Puede definir un canal personalizado para agrupar mensajes de eventos del mismo tipo (eventos de plataforma o eventos de cambio) en una transmisión. Por ejemplo, puede combinar eventos de cambio de cuenta, contacto y pedido en un solo canal personalizado CustomerUpdates__chn . Después de suscribirse a este canal, recibirá notificaciones sobre cambios en cualquiera de esos tres objetos.

Tenga en cuenta que los canales personalizados son compatibles con eventos de plataforma personalizados, pero no con eventos de plataforma estándar.

Además de la capacidad de agrupar varios eventos, los canales personalizados desbloquean dos funciones: filtrado de eventos y cambio de enriquecimiento de eventos.

El filtrado de eventos le permite configurar expresiones que filtran los eventos que se envían en un canal personalizado. Por ejemplo, podría crear un canal específico como UkLargeCustomerUpdates__chn que filtra las actualizaciones de la cuenta, donde el país de facturación es el Reino Unido y los ingresos anuales superan los 500k. El uso del filtrado de eventos ayuda a simplificar el código del lado del cliente, pero también ayuda a evitar los límites máximos de suscriptores simultáneos .

Los canales personalizados de Change Data Capture también otorgan la capacidad de declarar campos enriquecidos . Cuando se trabaja con eventos de cambio, solo se pasan los valores de campo actualizados en los datos del evento. Esta optimización puede ser problemática en ciertas situaciones, por ejemplo, cuando desea sincronizar con un sistema de terceros con una ID externa. En este caso, el ID externo no cambia, por lo que nunca forma parte de los datos del evento de cambio. Afortunadamente, el enriquecimiento de campos le permite declarar un canal personalizado en el que puede especificar campos que siempre se pasarán en el contexto de eventos de cambio.

Relevo de eventos

Event Relay le permite integrar perfectamente los eventos en tiempo real de Salesforce con Amazon Web Services (AWS). Gracias a Event Relay, los eventos de la plataforma y los eventos de Change Data Capture se envían a Amazon EventBridge a través de canales y los componentes de AWS pueden consumirlos directamente. Los componentes de AWS también pueden publicar eventos de plataforma de forma nativa.

Consulte esta publicación de Event Relay para obtener más información.

Antes del lanzamiento de Summer '23, Event Relay solo se podía configurar a través de las API. Ahora, hay una interfaz de usuario dedicada en Configuración. La única pieza que aún necesita crear a través de la API de herramientas o la API de metadatos son los canales personalizados.

Actualizaciones de Salesforce Event Platform para la colección Postman

En junio, actualizamos la colección de API de Salesforce Platform para Postman para incluir solicitudes para interactuar con Event Platform . Si no está familiarizado con Postman o la colección de API de plataforma, eche un vistazo al proyecto Quick Start: Connect Postman to Salesforce Trailhead para comenzar.

Canales personalizados

Nuestras nuevas solicitudes de Postman son un gran ahorro de tiempo ya que, a partir del lanzamiento de Summer '23, los canales personalizados solo se pueden configurar a través de metadatos o llamadas a la API de herramientas y no se pueden modificar directamente en la configuración de Salesforce.

Hemos introducido una serie de solicitudes para realizar operaciones de creación, lectura, actualización y eliminación (CRUD) en canales personalizados y los dos tipos de metadatos relacionados: PlatformEventChannel (consulte los documentos ) y PlatformEventChannelMember (consulte los documentos ).

A pesar de sus nombres, estos tipos de metadatos funcionan tanto para eventos de plataforma como para canales personalizados de eventos de cambio. Las únicas diferencias son que el valor del atributo ChannelType debe establecerse en event para eventos de plataforma o data para eventos de cambio, y que el atributo EnrichedFields solo está disponible para canales personalizados de eventos de cambio.

Publicar eventos de la plataforma

Hemos agregado una serie de ejemplos para eventos de plataforma de publicación. Movimos la solicitud de la API REST existente a la nueva subcarpeta Publicar eventos de la plataforma y agregamos dos ejemplos para publicar varios eventos en una sola solicitud con la API compuesta y la API SOAP.

Configuración de retransmisión de eventos

La carpeta Configuración de retransmisión de eventos es donde se encuentran la mayoría de las solicitudes nuevas. Estas nuevas solicitudes son fundamentales para configurar un relevo de eventos:

  • Operaciones CRUD en Credenciales con nombre que se introdujeron en Summer '23
  • Operaciones CRUD en la configuración de Event Relay
  • Comentarios de retransmisión de eventos de consultoría

esquema de eventos

Agregamos dos nuevas solicitudes para recuperar el esquema de un evento de plataforma, ya sea desde su ID o desde su nombre . Estas solicitudes son útiles para recuperar los campos de los eventos.

Lo que nos depara la colección Postman

Invertimos continuamente en nuestra colección de API de plataforma y buscamos agregar soporte para la suscripción a eventos de la API Pub Sub. CometD no será compatible, ya que es una biblioteca que requiere un servidor de aplicaciones, pero estamos considerando conectarnos con la API Pub/Sub basada en gRPC .

Postman ha lanzado una serie de funciones para interactuar con las API de gRPC desde el año pasado. Gracias a esto, podemos conectarnos a la API de Pub/Sub, suscribirnos a eventos y recibirlos. Sin embargo, lamentablemente no podemos decodificar su carga útil, ya que está comprimida por la plataforma de Salesforce por motivos de rendimiento. Estamos esperando una nueva característica de Postman que nos permita cargar una biblioteca (Apache Avro) para decodificar las cargas útiles de eventos cuando se reciben.

palabras de cierre

Eso es todo para nuestra breve descripción general de Event Platform y las últimas incorporaciones a la colección de API de Salesforce Platform. Gracias al crecimiento de esta caja de herramientas, puede comenzar rápidamente a explorar y configurar Event Platform.

Si disfruta de nuestro contenido de Postman, háganoslo saber. También puede echar un vistazo a nuestras otras colecciones de código abierto y contribuir .

Recursos

Sobre el Autor

Philippe Ozil es un defensor principal de desarrolladores en Salesforce, donde se enfoca en la plataforma de Salesforce. Escribe contenido técnico y habla con frecuencia en conferencias. Es un desarrollador full-stack y disfruta trabajar en proyectos DevOps, robótica y VR. Sígalo en Twitter @PhilippeOzil o consulte sus proyectos de GitHub @pozil .

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Comenzando con Acciones Externas ☁️

Comenzando con Acciones Externas ☁️

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 las acciones externas | Blog de desarrolladores de Salesforce

Tuve excelentes conversaciones con clientes y socios en Connections este año, así como a través de la comunidad Trailblazer de MC Account Engagement , con respecto a las acciones externas de Account Engagement . Seguía surgiendo una pregunta: "¿Cómo empiezo con las acciones externas?" En esta publicación, aprenderá qué son las acciones externas, cómo configurarlas y cómo probarlas. Además, sintonice una próxima sesión de codeLive el 20 de julio a las 10 a. m. PT , donde realizaré una demostración de codificación en vivo para mostrarle cómo crear una acción externa y responder sus preguntas.

¿Qué son las Acciones Externas?

Las acciones externas son una parte clave deMarketing App Extensions , ya que proporcionan una forma de desencadenar una acción en un sistema externo. El otro componente es Actividades externas, que proporciona una forma de activar la automatización de la participación de la cuenta en función de un evento de participación que ocurre en un sistema externo. Piense en ello como las dos caras de una moneda, las acciones se activan, las actividades se activan. Combinadas, forman una aplicación de extensibilidad de automatización para un servicio, por lo que puede tener una extensión de aplicación de marketing por SMS, por ejemplo.

Por este motivo, las acciones externas se empaquetan en una extensión de aplicación de marketing. En el momento de escribir este artículo, las actividades externas aún no se pueden empaquetar, pero eventualmente también se empaquetarán en la extensión de la aplicación de marketing.

Si desea conectar una aplicación de terceros para automatizar la ejecución de una acción de prospecto en ese sistema, entonces esta es definitivamente la función para usted. En esta publicación, profundizaremos en el lado de la acción externa de las extensiones de aplicaciones de marketing.

¿Cuáles son algunos buenos casos de uso para las acciones externas?

Bueno, si me preguntan, ¡diría absolutamente todo! Puede que estés pensando: “¡Claro, todo el mundo dice eso!”. Sin embargo, las posibilidades que desbloquean las acciones externas son realmente amplias. Si alguna vez ha dicho: "Me gustaría que cuando un prospecto llegue a este paso, yo pudiera <insertar deseo aquí>", entonces deseaba una acción externa.

Puede usar una acción externa para registrarse en un seminario web de Zoom desde Account Engagement (consulte el ejemplo en GitHub ). También puede usar una acción externa para enviar un mensaje SMS a través de Twilio, que presentamos en una publicación de blog anterior . Incluso puedes usar acciones externas con webhooks; Usé la función de captura de webhook de Zapier para crear una acción externa que usaba un cliente potencial como desencadenante de un Zap.

¿Qué constituye una acción externa?

Una acción externa consta de una acción invocable de Apex, metadatos de la extensión de la aplicación de marketing, metadatos de una acción externa y una forma de gestionar la autenticación. Los metadatos para las extensiones de la aplicación de marketing y las actividades externas conectan la acción invocable con la participación de la cuenta. Los componentes que se usarán para la autenticación pueden variar según el tipo de autenticación que admita el servicio. Como OAUTH 2.0 es bastante común, el componente que uso más es un proveedor de autorización y Credenciales con nombre . Las credenciales con nombre también facilitan la administración de la autenticación en mi código, y el sistema hace la mayor parte del trabajo.

¿Qué habilidades necesito para trabajar con Acciones Externas?

Con una gran flexibilidad viene la complejidad, por lo que necesitará algunas habilidades en ciertas áreas para construir con éxito una acción externa. Los siguientes son temas clave de los que necesitará una comprensión básica antes de abordar su propia acción externa.

SLDC de Salesforce

Comprender el ciclo de vida del desarrollo de Salesforce es muy importante para tener éxito en general. Recomiendo aprender Visual Studio y el proceso de implementación de la CLI. No se necesita maestría, solo lo básico para poder empezar. Trailhead ofrece una ruta para ayudarlo a configurar su espacio de trabajo .

Documentación de la API REST

El patrón del que hablamos en este artículo se basa en las API REST JSON. Para comprender lo que es posible y recopilar las entradas pertinentes para una acción externa, debe poder leer una especificación API. Consulte las especificaciones de la API de Account Engagement y Twilio .

Implementación de Apex y Apex

Apex Invocable Actions es mi forma preferida de codificar mis acciones externas, ya que me permite la mayor flexibilidad y control. Recomendaría, como mínimo, familiarizarse con la compilación y la implementación de código Apex mediante el proyecto Quick Start: Apex de Trailhead. Para obtener más información, encontré útil el trailmix de Apex Basics . No necesita convertirse en un experto, pero al menos debe estar lo suficientemente informado como para poder leer el código de la aplicación de referencia .

Flujo de Salesforce (opcional)

No necesita conocer Salesforce Flow para aprender Acciones externas. Sin embargo, es una herramienta de prueba muy poderosa para sus acciones externas, lo que facilita la creación de una interfaz de usuario para controlar las entradas durante la prueba. Si está familiarizado con Engagement Studio, Flow será bastante fácil ya que tiene muchos de los mismos conceptos. Utilicé la ruta Crear flujos con Flow Builder para ponerme al día. Otro beneficio de aprender Salesforce Flow es que abre la puerta a la creación de todo tipo de automatización de procesos comerciales.

¿Cómo debo configurar mi entorno de desarrollador?

Es importante configurar sus entornos de desarrollador y contar con las herramientas adecuadas antes de comenzar con las acciones externas. Yo uso las siguientes herramientas.

  • Postman : utilizo Postman para explorar una nueva API, por lo que puedo aprender a realizar una solicitud y responder de forma sencilla. Postman también proporciona una manera fácil de generar ejemplos.
  • CLI de Visual Studio + Salesforce — Uso Visual Studio para codificar mi acción invocable y la implemento en mi organización de desarrollador. La mayoría de las veces, es simplemente copiar y pegar un ejemplo anterior y editarlo para mi nuevo caso de uso.
  • Entorno de desarrollador/sandbox : este es un entorno seguro para construir, desarrollar y empaquetar sus acciones externas. Tenga en cuenta que, en el momento de escribir este artículo, solo admitimos paquetes de primera generación (1GP) , por lo tanto, no configure su organización de desarrollador como Dev Hub.
  • Salesforce Flow : personalmente me gusta usar ScreenFlows para probar una acción invocable. Es bueno poder controlar completamente la entrada antes de conectarla a acciones externas y programas ES.
  • Consola de desarrollador de Salesforce : esto le permite ver rápidamente el código o ver los registros de sus pruebas de flujo de pantalla.

Patrón básico para llamadas API REST con acciones externas

Si bien puede codificar acciones externas de muchas maneras, existe un patrón básico que recomiendo al realizar llamadas a la API REST.

Las dos etiquetas que debe recordar son InvocableVariable , que define las entradas y salidas de la acción invocable, e InvocableMethod , que es el método a llamar al ejecutar la acción invocable. Puede ver cómo se aplican en el siguiente código de ejemplo.

Normalmente creo dos clases, una para la entrada y otra para la solicitud de API. Separar mi código en dos clases facilita jsonificar la carga útil. Mi clase de entrada contiene todos los campos de variables invocables que la acción invocable necesita en la entrada. Mi solicitud de API contiene los campos de la solicitud JSON.

InvocableMethod construirá la carga útil a partir de la entrada, la convertirá a JSON y luego la agregará a la solicitud HTTP. A continuación, configura el resto de la solicitud HTTP agregando la URL, los encabezados y el método. Finalmente, realiza la llamada a la API y comprueba si el resultado es correcto o, de lo contrario, genera un error útil para diagnosticar un problema.

Consideración importante: el marco de acción externa espera que se devuelva un error si hay una falla en lugar de detectar el error y luego devolver el éxito. Si se devuelve un error, se informará en la tabla de errores.

Poniendo a prueba tus acciones externas

De vez en cuando, mientras crea una acción externa, encontrará errores. Cuanto más pueda probar sobre la marcha, más fácil será descubrir dónde radica el problema. Es por eso que recomiendo agregar un paso de prueba para probar en Salesforce Flow antes de probar en Engagement Studio. Elimina la configuración de la acción externa de la imagen, por lo que si la verifica aquí, pero no funciona en Engagement Studio, sabrá que el problema radica en la configuración de la acción externa.

Las pruebas lo ayudan a identificar errores, pero determinar la causa raíz y corregirlos es otra cosa. A continuación se presentan algunas de las técnicas que utilizo para diagnosticar las causas fundamentales.

  • Consola de desarrollador de Salesforce : utilizo la consola de desarrollo para ejecutar mis casos de prueba y confirmar la cobertura de mi código. Durante las pruebas exploratorias en Flow, mantengo abierta mi consola de desarrollo, por lo que genera registros para usar en la investigación de errores.
  • Rastreos de registro de Salesforce : si el error ocurre durante mi prueba de Engagement Studio, coloco un rastreo de usuario en el usuario de integración B2BMA, para poder ver mis registros de Apex y diagnosticar el problema más a fondo. Tenga cuidado, podría terminar con una gran cantidad de datos. El Usuario de Integración B2BMA es el usuario que ejecuta acciones externas.
  • Errores de acción externa de compromiso de cuenta : la tabla proporciona cualquier error devuelto por la acción externa que resultó en una falla. Es útil ver lo que sucedió durante una ejecución de ES.

SUGERENCIA: si tiene una cuenta de Gmail, puede usar un "+" para crear varios registros con su dirección de correo electrónico. Por ejemplo, puedo registrar tanto "ejemplo@ejemplo.com" como "ejemplo+usuario2@ejemplo.com" como prospecto, y cualquier correo enviado a esas direcciones iría al buzón de correo de ejemplo@ejemplo.com. Por ejemplo, usé esto para probar el ejemplo de registro de Zoom porque no quería que el correo electrónico registrado rebotara.

Errores comunes

Los errores van a suceder, así es la vida. Me he encontrado con algunos escenarios que me han hecho casi tirarme de los pelos.

El primero es garantizar que la acción exterior sea activa. Si la acción no aparece en Engagement Studio, es probable que esta sea la causa. Recuerde, debe activar tanto la extensión de la aplicación de marketing como la acción externa, además de asignarla a esa unidad comercial.

El siguiente es asegurarse de que su clase de Apex esté activa. La mayoría de las veces ya estará marcado como activo, es el estado predeterminado cuando creas una nueva clase. Es exactamente por eso que es fácil pasarlo por alto.

Otro es buscar extensiones de aplicaciones de marketing al empaquetar. No puedo decirte cuántas veces busco acciones externas, solo para tener un momento de confusión antes de recordar.

Finalmente, si su acción externa no funciona, pero no ve errores, verifique que la acción invocable fue diseñada para generar un error en caso de falla.

Lo anterior no es de ninguna manera exhaustivo, y es probable que encuentre sus propias alegrías. Sin embargo, recomiendo compartirlos con la comunidad si encuentra algunos buenos.

¿Que estas esperando? ¡Empiece hoy!

Ahora sabe casi todo lo que hago sobre las acciones externas, desde cómo funciona la función hasta los errores comunes. Recuerde que Acciones externas es su herramienta siempre que se encuentre diciendo: "Me gustaría hacer algo cuando el cliente potencial haga esto", y lo ayudará a automatizar esa acción.

Entonces, configure su entorno de desarrollador, revise la aplicación de referencia y comience a construir su acción externa hoy. El 20 de julio a las 10 a. m. (hora del Pacífico) , realizaremos una sesión de CodeLive en nuestro canal de YouTube para desarrolladores de Salesforce , así que únase y síganos mientras construimos una extensión de la aplicación de marketing de Twilio.

Recursos

Sobre el Autor

Christopher Cornett es gerente sénior de productos en Salesforce, responsable de la experiencia del desarrollador de Account Engagement. Ha trabajado para Salesforce durante más de cuatro años y tiene más de 13 años de experiencia en gestión de productos, trabajando principalmente en plataformas que van desde la atribución de big data hasta el fraude. Christopher ha ayudado a ofrecer API V5 y extensiones de aplicaciones de marketing, ayudando a los clientes a crear integraciones personalizadas para que su pila de marketing funcione para ellos. Le apasiona la experiencia del desarrollador y le encanta jugar con todas las excelentes funciones para ver qué es posible.

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Anypoint MQ ya está disponible en MuleSoft Government Cloud ☁️

Anypoint MQ ya está disponible en MuleSoft Government Cloud ☁️

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.

Anypoint MQ ya está disponible en MuleSoft Government Cloud | Blog de desarrolladores de Salesforce

Anypoint MQ es un servicio de mensajería en la nube empresarial y multiusuario que proporciona una solución de mensajería asincrónica avanzada para aplicaciones.

Los clientes utilizan Anypoint MQ en los entornos MuleSoft US Cloud y EU Cloud para ejecutar aplicaciones de misión crítica, como el procesamiento de pedidos, la gestión de atención al cliente y la gestión de quioscos de aerolíneas. Un proveedor de comercio electrónico que recibe pedidos a través de varios canales, como web, dispositivos móviles y socios, puede procesar los pedidos en el pedido recibido y, al mismo tiempo, escalar a varias unidades de procesamiento.

Nuestros clientes del sector público han solicitado un servicio de mensajería basado en la nube que pueda integrar tanto sus aplicaciones locales como las basadas en la nube, lo que les permite ofrecer servicios automatizados para los ciudadanos. Con el lanzamiento de Anypoint MQ en MuleSoft Government Cloud, nos complace ayudar a nuestros clientes a lograr su visión.

Funciones de Anypoint MQ

Anypoint MQ admite una amplia gama de casos de uso de mensajería, como patrones de mensajería empresarial, comunicaciones asincrónicas entre microservicios e IoT. Anypoint MQ también proporciona una API REST para publicar o consumir mensajes utilizando marcos, como scripts bash de Node.js, Java, Go y DevOps.

Anypoint MQ incluye las siguientes funciones:

Colas e intercambios de mensajes

Las colas de mensajes proporcionan almacenamiento temporal que permite que las aplicaciones se comuniquen de manera escalable y confiable. Los editores pueden publicar mensajes en las colas y los suscriptores pueden recibir mensajes de las colas. Los intercambios de mensajes le permiten distribuir un solo mensaje a múltiples consumidores. Todas las colas y los intercambios de mensajes están cifrados de forma predeterminada.

Colas de retraso

Las colas de retraso le permiten posponer la entrega de nuevos mensajes a una cola durante un período específico. Los consumidores no pueden ver los mensajes enviados a una cola de demora durante el período de demora. El retraso máximo de una cola es de 15 minutos.

Consola de administración

Con la consola de administración, puede monitorear las estadísticas de las colas, purgarlas y ver cuántos mensajes están en tránsito.

Conector MQ de cualquier punto

Anypoint Connector para Anypoint MQ (Anypoint MQ Connector) proporciona mensajes de publicación y suscripción a aplicaciones Mule. Tenga en cuenta que solo Anypoint MQ Connector 4.x y versiones posteriores son compatibles con el entorno MuleSoft Government Cloud.

API REST

Puede usar la API REST para comunicarse fácilmente con aplicaciones que no son Mule.

Entornos y control de acceso basado en roles

Anypoint MQ está completamente integrado con Anypoint Access Management, lo que le permite especificar diferentes entornos para sus colas, quién puede acceder a cada entorno y qué pueden hacer dentro de cada entorno.

Grandes cargas útiles

Anypoint MQ admite cargas útiles de hasta 10 MB.

Recuperación de desastres

Los servicios de Anypoint MQ se implementan en varias zonas de disponibilidad (AZ) dentro de una región para proporcionar alta disponibilidad (HA). Si el servicio en una zona de disponibilidad deja de funcionar, el servicio Anypoint MQ funciona normalmente en esa región. Si todas las zonas de disponibilidad se desactivan en una región, el servicio Anypoint MQ no estará disponible en esa región hasta que al menos una de las zonas de disponibilidad vuelva a funcionar. Debido a que la solución de almacenamiento para Anypoint MQ es duradera, se retienen los mensajes que ya estaban en el sistema Anypoint MQ antes de que se interrumpiera el servicio.

Conclusión

¡Esperamos que esté tan entusiasmado como nosotros con estas características! Para comenzar a acceder a Anypoint MQ en Government Cloud, visite nuestro tutorial .

Más recursos

Sobre el Autor

Gouthami Kondakindi es un ingeniero líder en Salesforce que trabaja en la creación de servicios que potencian la plataforma MuleSoft Anypoint.

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Integración de API de zona horaria de Salesforce y Google: traducción de coordenadas a información de zona horaria

Integración de API de zona horaria de Salesforce y Google: traducción de coordenadas a información de zona horaria

Última actualización el 29 de junio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo puede aprovechar la API de zona horaria de Google para actualizar automáticamente la información de zona horaria de un cliente potencial en función de sus coordenadas geográficas?

Objetivos:

Después de leer este blog, podrá:

Jestilla Zetkin se desempeña actualmente como arquitecta de Salesforce en Gurukul On Cloud (GoC). El Director Comercial le ha confiado a Jestilla un desafío único. El objetivo es asegurarse de que, en el momento de la creación, los prospectos de Salesforce (creados a través de Web-to-lead) reciban los detalles exactos de la zona horaria, que se determinan en función de sus respectivas coordenadas geográficas.

  1. El caso de uso comercial requiere que usemos la API de zona horaria de Google para actualizar automáticamente cuatro campos específicos en los clientes potenciales:
    1. dstOffset (la compensación del horario de verano en segundos)
    2. rawOffset (el desplazamiento de la hora universal coordinada para la zona horaria de la ubicación dada)
    3. timeZoneId (una cadena que identifica de forma única la zona horaria)
    4. y timeZoneName (el nombre largo de la zona horaria)
  2. En caso de una respuesta fallida, instituya una acción de contingencia para crear una tarea para el propietario designado del cliente potencial.

¿Qué es la API de zona horaria de Google?

Hay muchas posibilidades de que su base de clientes esté repartida en varias zonas horarias. Este factor puede influir en gran medida en sus interacciones con ellos, especialmente al programar llamadas, reuniones o enviar mensajes automáticos. La plataforma de Salesforce ofrece un entorno altamente adaptable para almacenar y administrar datos de clientes, pero de forma predeterminada, no proporciona una forma de registrar automáticamente la zona horaria del cliente potencial en función de sus coordenadas geográficas.

La API de zona horaria de Google es un servicio ofrecido por Google como parte de su plataforma Google Maps. La API proporciona datos de zona horaria para cualquier ubicación en todo el mundo en función de las coordenadas de latitud y longitud. Este servicio puede ser particularmente útil para los desarrolladores que necesitan ajustar la comunicación de acuerdo con la ubicación geográfica de un cliente potencial o contacto o para empresas que operan en diferentes zonas horarias.

La API de zona horaria proporciona la siguiente información:

  • El ID de la zona horaria , según lo define la base de datos de zonas horarias de la IANA (por ejemplo, America/New_York ).
  • El nombre de la zona horaria (por ejemplo, hora de verano del este ).
  • La diferencia horaria con respecto a la hora universal coordinada (UTC) sin tener en cuenta el horario de verano (rawOffset).
  • El desfase horario debido al horario de verano (dstOffset).

Tenga en cuenta que la API de zona horaria de Google está sujeta a cargos, por lo que es importante comprender las implicaciones de costos antes de implementarla.

¿ Cómo funciona la API de zona horaria de Google?

La API de zona horaria de Google funciona tomando coordenadas de latitud y longitud y devolviendo datos de zona horaria en formato JSON. Aquí hay un ejemplo básico de cómo usarlo.

La siguiente solicitud HTTP GET obtiene información de zona horaria para una ubicación en la latitud 40.712776 y longitud -74.005974 (ciudad de Nueva York), y asume que está realizando la solicitud en una determinada marca de tiempo (marca de tiempo UNIX).

 https://maps.googleapis.com/maps/api/timezone/json?location=40.712776,-74.005974&timestamp=1458000000&key=YOUR_API_KEY

En la URL de solicitud anterior, reemplace YOUR_API_KEY con su clave API real.

Aquí hay una respuesta de muestra en formato JSON que la API podría devolver:


{ "dstOffset": 3600, "compensación sin procesar": -18000, "estado": "OK", "timeZoneId": "América/Nueva_York", "timeZoneName" : "Hora de verano del Este"
}

La respuesta incluye la siguiente información:

  1. dstOffset : La compensación del horario de verano en segundos. Será cero si la zona horaria no está en el horario de verano durante la marca de tiempo especificada.
  2. rawOffset : el desplazamiento de UTC (sin contar el horario de verano) en segundos.
  3. estado : una cadena que indica el estado de la solicitud. “OK” significa que la solicitud fue exitosa.
  4. timeZoneId : una cadena que contiene el ID "tz" de la zona horaria (por ejemplo, "América/Nueva_York").
  5. timeZoneName : una cadena que contiene el nombre de forma larga de la zona horaria (por ejemplo, "hora de verano del este").

Recuerde, en la URL de solicitud, se requiere el parámetro de marca de tiempo y el parámetro de ubicación espera coordenadas de latitud y longitud.

  1. Marca de tiempo : el tiempo deseado en segundos desde la medianoche del 1 de enero de 1970 UTC. La API de zona horaria utiliza la marca de tiempo para determinar si se debe aplicar o no el horario de verano, según la zona horaria de la ubicación.
  2. Ubicación : una tupla de latitud, longitud separada por comas, ubicación = 40.712776, -74.005974, que representa la ubicación para buscar.

Además, no olvide incluir su clave API.

Beneficios de usar la API de zona horaria de Google

La API de zona horaria de Google ofrece una serie de beneficios significativos, especialmente para desarrolladores y empresas que necesitan operar en diferentes zonas horarias. Estos son algunos de los beneficios clave:

  1. Precisión : la API de zona horaria de Google proporciona datos de zona horaria precisos para cualquier ubicación en todo el mundo. Tiene en cuenta tanto la zona horaria 'sin procesar' como el horario de verano, lo que garantiza que siempre tenga la hora local correcta.
  2. Facilidad de uso : la API es fácil de usar y solo requiere la latitud y la longitud como entradas. Devuelve datos en un formato JSON estructurado, que es fácil de analizar y usar en varias aplicaciones.
  3. Cobertura global : la API proporciona datos de zona horaria para ubicaciones en todo el mundo, lo que la hace útil para empresas globales y aplicaciones con bases de usuarios internacionales.
  4. Confiabilidad : como servicio proporcionado por Google, es altamente confiable, lo que garantiza que tenga acceso constante a los datos de la zona horaria cuando los necesite.
  5. Integración : se puede integrar en una variedad de aplicaciones y plataformas, incluidas aplicaciones móviles, servicios web y plataformas de CRM como Salesforce. Esto permite funcionalidades como la programación de comunicaciones en diferentes franjas horarias, etc.
  6. Información actualizada : Google actualiza continuamente sus bases de datos, lo que garantiza que los datos devueltos por la API de zona horaria, como los cambios de horario de verano, estén siempre actualizados.

Al aprovechar estos beneficios, las empresas pueden mejorar la experiencia del cliente, aumentar la eficiencia operativa y garantizar un registro de datos preciso, entre otras ventajas.

Antes de comenzar a usar la API de zona horaria, necesita un proyecto con una cuenta de facturación y la API de zona horaria habilitada. Aquí hay una guía paso a paso para configurar su proyecto de Google Cloud y habilitar la API de zona horaria:

Paso 1: crea o selecciona tu proyecto

  1. Navegue a Google Cloud Console .
  2. Si ha creado un proyecto anteriormente, puede seleccionarlo de la lista desplegable en la parte superior. De lo contrario, haga clic en Nuevo proyecto en la parte superior derecha.
  3. Asigne un nombre a su proyecto y, opcionalmente, también puede editar el ID del proyecto.
  4. Haga clic en Crear para crear el proyecto.

Paso 2: configurar una cuenta de facturación

Debe vincular una cuenta de facturación a su proyecto para usar la API de zona horaria de Google. Así es cómo:

  1. En Google Cloud Console, abra el menú del lado izquierdo de la consola y haga clic en Facturación .
  2. Si tiene una o más cuentas de facturación, elija una cuenta y asóciela con su proyecto. De lo contrario, haga clic en Crear cuenta , complete el formulario para crear una nueva cuenta de facturación y luego asóciela con su proyecto.

Paso 3: habilite la API de zona horaria

Una vez que haya configurado su proyecto y su cuenta de facturación, puede habilitar la API de zona horaria.

  1. En Google Cloud Console, abra el menú del lado izquierdo de la consola y vaya a API y servicios | biblioteca
  2. En la biblioteca de API, busque API de zona horaria y selecciónela.
  3. En la página de la API de zona horaria, haga clic en Habilitar .

Paso 4: Genere su clave API

Finalmente, necesita una clave de API para autenticar sus solicitudes en la API de zona horaria.

  1. En Google Cloud Console, abra el menú del lado izquierdo de la consola y vaya a API y servicios | Cartas credenciales.
  2. Haga clic en el botón + CREAR CREDENCIALES en la parte superior y seleccione Clave API .
  3. Su nueva clave de API se creará y se mostrará. Cópielo y guárdelo de forma segura. Necesitará esta clave para realizar solicitudes a la API de zona horaria.

Ahora, su proyecto de Google Cloud está todo configurado y puede comenzar a usar la API de zona horaria de Google.

👉 Si bien la API de zona horaria es compatible con OAuth 2.0 y la cuenta de servicio para la autenticación, esta guía se enfoca en el método de clave de API más simple por razones de brevedad. Si necesita un método de autenticación más seguro o complejo, consulte la documentación de autenticación oficial de Google.

Enfoque de Campeón de Automatización (I-do):

Si bien esto se puede resolver utilizando varias herramientas de automatización como Apex Trigger y otras, utilizaremos Salesforce Flow y la función de flujo HTTP Callout (GET) recientemente introducida .

HTTP Callout extrae o envía datos entre la base de datos de Salesforce y un sistema externo a través de Flow Builder sin usar código. Puede configurar integraciones directas según sea necesario sin tener que trabajar con un desarrollador o llamar a una herramienta de middleware, como Mulesoft. Después de configurar la acción de llamada HTTP en un flujo, Flow Builder genera automáticamente un registro de servicio externo , una acción invocable y una clase de Apex que puede usar para crear un recurso definido por Apex para flujos. A continuación, puede utilizar la salida de datos de la solicitud de la API como entrada en Flow Builder y en Salesforce.

Puede usar HTTP Callout para conectar un flujo a una variedad de API.

  • Obtener información de direcciones usando una API de mapa
  • Obtén las condiciones meteorológicas con una API de servicios meteorológicos
  • Genere el código de barras con una API de servicio de código de barras
  • Obtenga información de autorización de pago con una API de procesamiento de pagos
  • y mucho más

Antes de discutir la solución, permítame mostrarle un diagrama del proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo para comprenderlo.

Comencemos a construir este proceso de automatización.

Práctica guiada (nosotros hacemos):

Hay 3 pasos para resolver el requisito empresarial de Jestilla mediante Record-Triggered After-Save Flow . Debemos:

  1. Cree campos personalizados en el cliente potencial para almacenar la respuesta
  2. Crear una credencial con nombre
  3. Flujo de fuerza de ventas
    1. Definir propiedades de flujo para el flujo desencadenado por registro
    2. Agregue una fórmula para calcular la marca de tiempo
    3. Configurar una llamada HTTP GET para la API de zona horaria
    4. Agregue un elemento de decisión para verificar el código de respuesta
    5. Agregue un elemento Actualizar registros para actualizar el prospecto
    6. Agregue un elemento Crear registros para crear una tarea para que el propietario del cliente potencial maneje la respuesta de error

Paso 1: Cree campos personalizados en el objeto principal para almacenar la respuesta

En este paso, hemos establecido campos personalizados dentro del objeto principal. Estos servirán como repositorios para los datos de respuesta de la API de zona horaria de Google.

Etiqueta de campo Nombre de API de campo Tipo de datos
dstOffset dstOffset __c Número (18,0)
rawOffset rawOffset__c Número (18,0)
Posición actual Posición_actual__c Geolocalización
Identificación de zona horaria Time_Zone_Id__c Texto (255)
Nombre de zona horaria
Nombre_de_la_zona_horaria__c Texto (255)

Paso 2: crear una credencial con nombre

  1. Haga clic en Configuración .
  2. En el cuadro Búsqueda rápida, ingrese Credenciales con nombre y luego seleccione Credenciales con nombre .
  3. Haga clic en Nuevo legado .
  4. Rellene la página con la URL y los parámetros de autenticación del extremo de la llamada.
  5. Haga clic en Guardar .

Paso 3.1: Definir propiedades de flujo

  1. Haga clic en Configuración .
  2. En el cuadro Búsqueda rápida, escriba Flujos .
  3. Seleccione Flujos , luego haga clic en Nuevo flujo .
  4. Seleccione la opción Flujo activado por registro , haga clic en Crear
    1. Objeto: Plomo
    2. Activar el flujo cuando: se crea un registro
    3. Establecer condiciones de entrada: se cumplen todas las condiciones (Y)
    4. Fila 1:
      1. Campo : Posición_Actual__Latitud__s
      2. Operador : es nulo
      3. Valor : {!$ConstanteGlobal.Falso}
    5. Haga clic en + Agregar condición
    6. Fila 2:
      1. Campo : Posición_Actual__Longitud__s
      2. Operador : es nulo
      3. Valor : {!$ConstanteGlobal.Falso}
    7. Optimizar el flujo para : acción y registros relacionados
    8. Elija la opción para incluir una ruta de ejecución asíncrona para acceder a un sistema externo después de que la transacción original para el registro de activación se confirme con éxito .
  5. Haga clic en Listo.

Paso 3.2: fórmula para calcular la marca de tiempo

  1. En Caja de herramientas , seleccione Administrador y luego haga clic en Nuevo recurso para calcular los segundos desde la época de Unix (1 de enero de 1970, 00:00:00).
  2. Ingrese la siguiente información :
    1. Tipo de recurso : Fórmula
    2. Nombre de API : forN_Timestamp
    3. Tipo de datos : Número
    4. Lugares decimales : 0
    5. Fórmula : RONDA((AHORA() – FECHAHORAVALUE(“1970-01-01 00:00:00”)) * 24 * 60 * 60, 0)
  3. Haga clic en Listo.

Paso 3.3: configurar una acción de llamada HTTP GET

HTTP Callout lo guía a través de la introducción de los detalles sobre el servicio HTTP basado en web o el punto final de la API REST al que se está conectando. Después de completar la configuración, invoca la acción en un flujo.

  1. En el nodo Ejecutar asincrónicamente , seleccione Acción .
  2. Haga clic en + Crear llamada HTTP .
  3. Configure el servicio externo que conecta Salesforce con la API basada en HTTP.
    1. Introduzca un Nombre para el servicio externo.
    2. Seleccione la credencial con nombre que creó en el paso 2 .
    3. Haga clic en Siguiente .
  4. El siguiente paso es configurar la acción invocable que puede usar en Flow Builder o en Salesforce.
    1. Para Etiqueta , ingrese la acción que realiza la llamada.
    2. Método : OBTENER
    3. Agregue el extremo de la URL para la solicitud.
      1. Ruta URL : /maps/api/timezone/json
    4. Agregue claves de parámetros de consulta si la API a la que está llamando las tiene. Cuando usa esta acción en un flujo, ingresa valores para las claves definidas.
      1. Haga clic en Agregar clave
        1. Clave : ubicación
        2. Tipo de datos : cadena
        3. Requerido : Verdadero
      2. Haga clic en Agregar clave
        1. Clave : marca de tiempo
        2. Tipo de datos : entero
        3. Requerido : Verdadero
      3. Haga clic en Agregar clave
        1. Clave: clave
        2. Tipo de datos : cadena
        3. Requerido : Verdadero
  5. Proporcione un cuerpo de respuesta de API de muestra. Salesforce genera una estructura de datos a partir de la respuesta de muestra.
    1. Vaya a la sección Proporcione una respuesta de muestra .
    2. Haga clic en Nuevo .
    3. Pegue una respuesta JSON de muestra .
       { "timeZoneName": "cadena de muestra", "compensación sin procesar": 1, "timeZoneId": "cadena de muestra", "errorMessage": "cadena de muestra", "dstOffset": 1, "estado": "cadena de muestra"
      }
Seguir leyendo

Presentamos las mejoras de la beta abierta de Anypoint Code Builder ☁️

Presentamos las mejoras de la beta abierta de Anypoint Code Builder ☁️

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.

Presentamos las mejoras de la versión beta abierta de Anypoint Code Builder | Blog de desarrolladores de Salesforce

¡Nos complace anunciar el lanzamiento en junio de la versión beta abierta de Anypoint Code Builder! Anypoint Code Builder es el IDE (Entorno de desarrollo integrado) de próxima generación de MuleSoft, para que los desarrolladores diseñen, desarrollen e implementen API e integraciones. Desde su lanzamiento Open Beta en febrero de 2023, el equipo ha estado agregando mejoras regularmente en una cadencia bimensual. Mientras que el lanzamiento de abril se centró en capacidades de IU adicionales, el lanzamiento de junio se centra en una mayor accesibilidad para los usuarios y la flexibilidad en la forma en que los usuarios pueden diseñar e implementar sus API.

Disponibilidad de Open Beta en el plano de control de la UE

Desde su lanzamiento, la versión beta abierta de Anypoint Code Builder solo ha estado disponible en el plano de control de EE. UU. Nos complace decir que esta restricción ya no existe. ¡La versión beta abierta de Anypoint Code Builder ahora está disponible para todos los usuarios en el plano de control de la UE! Esto significa que los usuarios de la UE ya no necesitarán crear nuevas cuentas de prueba en el plano de control de NA para acceder a una instancia de IDE en la nube y experimentar una latencia mucho menor a medida que diseñan y desarrollan. En el futuro, todas las versiones y mejoras futuras de Anypoint Code Builder estarán disponibles para los aviones de control de EE. UU. y la UE simultáneamente.

Entonces, ¿cómo pueden comenzar los usuarios de la UE? Simplemente haga que el administrador de su organización acepte los Términos y condiciones de la versión Beta y le otorgue permisos, luego diríjase a Anypoint Code Builder Central , donde puede crear una nueva instancia de su IDE en minutos. Y dado que es un IDE basado en la nube, seleccionaremos automáticamente el plano de control adecuado para su instancia. ¡Es fácil!

Diseño e implementación de API iterativas

Con Anypoint Code Builder, a los usuarios se les ofrecen tres recorridos principales para comenzar: diseñar especificaciones de API , implementar especificaciones de API y desarrollar integraciones . Tradicionalmente, la única forma de implementar una especificación de API era terminar por completo la fase de diseño y publicarla en nuestro mercado público, Anypoint Exchange . Sin embargo, no existe una regla que diga que el diseño y la implementación de la API deben estar aislados (después de todo, todos somos Trailblazers aquí, ¿no?). Es por eso que presentamos el diseño e implementación de API iterativas en Anypoint Code Builder. Esto le permite comenzar a diseñar la especificación de su API y luego saltar directamente a la fase de implementación para comenzar a agregar lógica empresarial antes de completar la fase de diseño. El resultado final es una experiencia optimizada que permite a los usuarios flexibilizarse entre las fases de diseño e implementación, abordando todo el proyecto en secciones en lugar de todo a la vez. Y para colmo, hemos hecho que toda esta experiencia sea perfecta al proporcionar una vista única para ambas fases directamente desde su navegador.

Se agregó soporte de interfaz de usuario para fragmentos

Cuando se lanzó por primera vez Open Beta para Anypoint Code Builder, la interfaz de usuario era de solo lectura. Los desarrolladores podían usarlo para visualizar su trabajo, pero no había forma de desarrollarlo activamente. Sin embargo, este siempre fue un plan temporal y el objetivo final es brindar a los usuarios dos opciones sólidas para la integración y el desarrollo de API: código bajo y código profesional. Durante los últimos seis meses, hemos estado trabajando para lograr esta visión agregando formas de interactuar con la interfaz de usuario. Por ejemplo, en nuestro lanzamiento de abril, introdujimos la capacidad de agregar nuevos componentes a sus flujos simplemente usando el símbolo "+".

En nuestro lanzamiento de junio, presentamos dos mejoras más en la interfaz de usuario para mejorar la experiencia de código bajo. La primera es la capacidad de seleccionar conectores directamente desde Anypoint Exchange mientras se agregan componentes. Esto proporciona a los desarrolladores una alternativa de interfaz de usuario a la paleta de comandos, al mismo tiempo que les brinda una forma más limpia de clasificar todas las versiones y operaciones del conector que están disponibles. El segundo es la capacidad de agregar fragmentos de la interfaz de usuario.

Los fragmentos son bloques de código preempaquetados que los desarrolladores pueden reutilizar en varios proyectos. Hay algunos que vienen preconstruidos con Anypoint Code Builder, pero los desarrolladores también pueden crearlos personalizados. Esto acelera el desarrollo al facilitar la replicación de tareas repetitivas. Por ejemplo, supongamos que con frecuencia necesita obtener información de contacto de una organización específica en Salesforce. La primera vez que haga esto, escribirá el XML con toda la configuración necesaria. Una vez escrito, puede empaquetar ese código en un fragmento. La próxima vez que necesite obtener información de contacto de esa organización, simplemente puede seleccionar ese fragmento de la interfaz de usuario en lugar de codificarlo todo nuevamente. A medida que los desarrolladores comienzan a crear bibliotecas de fragmentos, vemos que se trata de una herramienta increíblemente poderosa que ayudará a promover la reutilización en toda la organización.

Conclusión

El lanzamiento en junio de la versión beta abierta de Anypoint Code Builder es un hito fundamental en nuestro camino hacia la disponibilidad general. Con la expansión al plano de control de la UE, estamos entusiasmados de brindarles a más desarrolladores la oportunidad de tener en sus manos el producto. Y esperamos continuar introduciendo capacidades de interfaz de usuario adicionales junto con algunas funcionalidades de inteligencia artificial emocionantes a finales de este año. Si desea obtener una descripción general más detallada de las mejoras de junio, consulte la descripción general completa del video .

Más recursos

Sobre el Autor

Rohan Vettiankal es gerente de marketing de productos en MuleSoft, donde dirige su cartera de integración. A lo largo de su carrera, ayudó a llevar una variedad de productos al mercado, incluida una herramienta de visualización de datos basada en la web, una plataforma de infraestructura de datos local y un producto PaaS en la nube. En su tiempo libre, Rohan disfruta de actividades al aire libre como el senderismo, el snowboard y la escalada en roca. También le encanta la música y ha estado tocando el piano desde que tenía 12 años y recientemente ha estado aprendiendo guitarra. Siga a Rohan en LinkedIn .

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

4 formas en que su centro de contacto puede comenzar con IA generativa

4 formas en que su centro de contacto puede comenzar con IA generativa

El tema más candente en el servicio hoy en día es la IA generativa, especialmente en el centro de contacto. El 84 % de los líderes de TI que encuestamos en un estudio reciente dicen que la IA generativa ayudará a su organización a atender mejor a los clientes, y todos los días hablo con líderes de servicio que están entusiasmados con el potencial de la IA generativa del centro de contacto.

Sin embargo, solo el 24 % utiliza alguna forma de IA del centro de contacto. ¿Qué hay en el camino? El 66% dice que sus empleados no tienen las habilidades adecuadas para poner en uso con éxito la IA generativa. Así que echemos un vistazo a las cuatro formas en que puede usar la IA del centro de contacto, junto con ejemplos de casos de uso y consejos que lo ayudarán a comenzar.

Modernice su centro de contacto

La combinación correcta de canales de atención al cliente y herramientas de IA puede ayudarlo a ser más eficiente y mejorar la satisfacción del cliente. Nuestra guía revela cómo las organizaciones de servicio de alto rendimiento lo hacen posible.

1. Generar respuestas de servicio a los clientes

Su centro de contacto ofrece múltiples formas para que los clientes se comuniquen con su empresa, desde teléfono hasta correo electrónico, chat y SMS. Si bien muchos clientes todavía usan el teléfono, el 57% ahora prefiere usar canales digitales. Sus agentes que trabajan en estos canales digitales deben brindar información precisa y relevante, responder de manera oportuna y resolver el problema del cliente rápidamente.

Entonces, ¿cómo puede ayudar la IA generativa ? Los grandes modelos de lenguaje que impulsan la IA generativa pueden generar automáticamente una respuesta similar a la humana a cualquier pregunta. Cuando se basa en los datos y la base de conocimientos de sus clientes, puede personalizar estas respuestas generadas, haciéndolas más confiables. Los agentes pueden revisar las sugerencias del modelo y enviarlas fácilmente. Para los agentes que trabajan en varios casos a la vez, la IA del centro de contacto puede ser un verdadero ahorro de tiempo.

Veamos un ejemplo de una compañía ficticia de Internet que llamaremos Nation-Wide Web.

Jane es cliente de Nation-Wide Web y nota un cargo inusual en su factura. Jane abre un mensaje de chat en el sitio web de la empresa y pronto se conecta con una agente, Katie.

Katie tiene abiertas algunas ventanas de mensajes de clientes, una de ellas es Jane. Jane comparte sus preocupaciones sobre su factura. Aparentemente, Jane revisó su paquete de datos del mes. La herramienta de inteligencia artificial del centro de contacto usa la pregunta de Jane y el contexto del estado de su cuenta para generar un mensaje personalizado que explica este cargo en un tono empático, pero también que está dentro de la política de la empresa renunciar a la tarifa dadas las circunstancias.

Katie revisa el mensaje y confirma la política, luego envía el mensaje y elimina el cargo de la cuenta de Jane. Jane está contenta de haber obtenido una solución rápida y sencilla y Katie puede centrar su atención en los clientes con problemas más complejos.

Consejo: Tomarse el tiempo para revisar la precisión y el tono de cualquier comunicación con el cliente ayuda a evitar malentendidos.

2. Generación de resúmenes de casos

Para brindarle a su cliente una gran experiencia, necesita datos precisos para rastrear y optimizar las interacciones de servicio de su empresa. Esto hace que el resumen de recapitulación que hacen sus agentes después de que se cierra un caso sea uno de los datos de servicio más cruciales que su empresa puede recopilar.

¿El reto? Esta es una tarea que requiere mucho tiempo y evita que sus agentes ayuden a otros clientes.

Pero la IA del centro de contacto puede tomar las conversaciones de chat y correo electrónico más complejas y generar un resumen propuesto. Su agente solo necesita revisar estos resúmenes antes de que se guarden en el registro de casos. Esto ahorra a los agentes una tonelada de tiempo y esfuerzo en la entrada de datos.

Volvamos a nuestro ejemplo de Nation-Wide Web.

Si recuerda, la herramienta de inteligencia artificial de Katie generó una respuesta para Jane y todo lo que Katie tuvo que hacer fue revisar el mensaje, presionar enviar y cancelar la tarifa de la cuenta de Jane. Mientras tanto, la IA está utilizando los datos del hilo de mensajes y las acciones que Katie realizó en la cuenta de Jane para generar un resumen del caso.

Una vez completada la conversación con Jane, Katie puede leer este resumen propuesto, ajustar algunos detalles y guardarlo en el expediente del caso. Reducir el trabajo posterior a la llamada ayuda a Katie a ayudar a otros clientes más rápido.

Sugerencia: Cree una plantilla para los resúmenes de sus casos para que la herramienta de inteligencia artificial de su centro de contacto pueda extraer fácilmente los datos de la conversación en el CRM sin perder detalles importantes.

3. Generación de artículos de conocimiento

La investigación de Salesforce muestra que el 59% de los clientes prefieren herramientas de autoservicio para problemas de servicio simples. Sin embargo, para hacer eso, una empresa necesita una gran base de conocimientos en la que los clientes puedan buscar para encontrar una solución.

Los agentes de servicio a menudo tienen la tarea de publicar artículos de conocimiento después de resolver un caso. Pero lleva tiempo que los agentes creen, revisen y publiquen manualmente un artículo, lo que les impide ayudar a los clientes que lo necesitan.

La IA del centro de contacto puede generar automáticamente un artículo de la base de conocimientos después de que se cierra un caso de soporte extrayendo notas del caso, historial de mensajes y datos de otras herramientas de servicio. A partir de ahí, su agente solo necesita revisar el artículo para garantizar la precisión y agregarlo a la cola para su aprobación. Esto elimina la presión de los agentes para escribir artículos desde cero.

Volviendo a nuestro ejemplo de Nation-Wide Web, Austin tiene Internet lento y llamadas para solucionar problemas. Está conectado con Tawni, quien le pide los detalles de su enrutador y módem. Tawni analiza algunos escenarios comunes basados en casos similares, pero ninguno funciona para la configuración de Austin.

Tawni decide probar algo nuevo. Le pide a Austin que reinicie todo el sistema a través de la aplicación móvil Nation-Wide Web. Una vez que esto termina, las velocidades de Internet de Austin vuelven a la normalidad y el caso se cierra. Tawni registra toda esta información en la consola de servicio de la empresa, incluida la configuración de su enrutador y módem, y cómo resolvió este problema con un reinicio.

Debido a que este fue un caso único, la herramienta de inteligencia artificial del centro de contacto utiliza los detalles de la conversación de Tawni con Austin y el contexto del problema de Austin para generar un nuevo artículo de base de conocimiento. Tawni agrega algunos detalles adicionales y los empuja a la cola de aprobación.

Sugerencia: incluya tantos detalles como sea posible en los artículos de su base de conocimiento para que los clientes tengan toda la información que necesitan para resolver sus problemas.

4. Generar respuestas

Cuando sus agentes están en medio de una interacción de servicio, no tienen tiempo para leer páginas de documentación o cada detalle de un artículo de la base de conocimiento. Pero aún necesitan encontrar la información correcta para resolver la consulta de su cliente.

Lo mismo ocurre con el autoservicio . Leer artículo tras artículo para encontrar la información que necesita no es una buena experiencia para el cliente.

La IA generativa puede ayudar a los agentes y clientes a obtener las respuestas que necesitan de forma más rápida y sencilla. En lugar de obtener una lista de páginas que pueden (o no) tener la respuesta, AI puede extraer los detalles relevantes de un artículo de conocimiento y responder una pregunta directamente como texto sin formato.

Para nuestro ejemplo final, volveremos a nuestro cliente de Nation-Wide Web, Austin.

Unos meses después de su interacción con Tawni, su Internet vuelve a ser lento. Recuerda que usaron la aplicación móvil para solucionar el problema la última vez, pero ahora no puede acceder a la aplicación móvil. Pero en lugar de pedir ayuda, echa un vistazo al Centro de ayuda de la empresa. Austin usa la función de búsqueda para hacer la siguiente pregunta: "¿Cómo soluciono una conexión a Internet lenta cuando no puedo acceder a mi aplicación móvil?"

Antes, Austin primero habría tenido que encontrar el artículo sobre cómo restablecer su contraseña y luego encontrar el artículo sobre el uso de la aplicación para realizar un reinicio completo del sistema. Ahora, la herramienta de inteligencia artificial del centro de contacto genera una respuesta personalizada a la pregunta de Austin, reuniendo información de varios artículos. “Primero, haga clic aquí para solicitar una nueva contraseña para su aplicación móvil. Una vez que haya iniciado sesión, aquí se explica cómo usar la aplicación para realizar un reinicio completo del sistema…”

Austin resolvió su problema sin interactuar con un agente y aun así obtuvo una experiencia personalizada. Si un agente fuera el que necesitara encontrar información específica dentro del centro de conocimiento, tendría la misma experiencia.

Sugerencia: hacer que su contenido de autoservicio sea fácil de encontrar y navegar genera confianza en el cliente.

Al agregar IA generativa a su centro de contacto , está ayudando a todos a aprovechar al máximo cada interacción de servicio. Sus agentes hacen más con menos trabajo y sus clientes obtienen una resolución rápida y fácil a sus problemas mientras disfrutan de una experiencia personalizada.

¿Cuál es la mejor manera de prepararse para el éxito con la IA generativa? Comience lentamente y desarrolle su programa de IA para el centro de contacto a medida que aumenta sus habilidades comerciales en IA. Por ejemplo, haga que sus agentes tomen Recomendaciones de respuesta de Einstein para el servicio en Trailhead y luego practiquen lo que aprenden entre ellos. Una vez que se sientan cómodos, vea cómo puede aplicar IA generativa en su centro de contacto .

Potencie su servicio al cliente con IA generativa

Puede escalar su servicio al cliente con el poder de la IA generativa junto con los datos de su cliente y CRM. Vea cómo esta tecnología mejora la eficiencia en el centro de contacto y aumenta la lealtad del cliente.

Seguir leyendo

5 pasos para la IA generativa confiable para desarrolladores de Salesforce ☁️

5 pasos para la IA generativa confiable para desarrolladores de Salesforce ☁️

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.

5 pasos para la IA generativa confiable para desarrolladores de Salesforce | Blog de desarrolladores de Salesforce

La IA generativa se ha convertido en el factor de cambio para las empresas innovadoras y orientadas al cliente. Impulsada por algoritmos avanzados y aprendizaje automático, la IA generativa puede impulsar la innovación, optimizar los procesos y acelerar las empresas en todas partes al proporcionar experiencias y soluciones personalizadas adaptadas a las necesidades únicas de los clientes.

Igualmente importante para las experiencias poderosas dirigidas por el cliente es la protección de los datos críticos para el negocio. Los sistemas de IA procesan y generan contenido basado en grandes conjuntos de datos y, lamentablemente, los modelos de lenguaje extenso (LLM) no están poniendo su negocio en primer lugar. Mientras se prepara para implementar capacidades de IA generativa, es fundamental priorizar la privacidad de los datos. Al implementar medidas sólidas de protección de datos, no solo mantiene el cumplimiento de las regulaciones pertinentes, sino que también mantiene la confianza del cliente, su activo más valioso.

Con los cinco pasos que se describen a continuación, puede innovar rápidamente, aumentar la productividad y mejorar las experiencias personalizadas, al mismo tiempo que garantiza la seguridad y la privacidad de los datos de sus clientes.

Paso 1: comprender y auditar sus datos

Para asegurarse de tener las protecciones de seguridad, privacidad y gobernanza correctas, querrá comprender qué datos usará para crear avisos, plantillas y modelos de capacitación. Comprender los datos a los que permite que accedan los modelos de IA ayudará a evitar que se compartan inadvertidamente los datos personales o confidenciales de los clientes.

Entonces, ¿cómo empezar? Primero, anonimice y agregue los datos de los clientes antes de usarlos con fines de IA generativa. Elimine la información de identificación personal (PII) y cualquier otro dato confidencial que pueda identificar a las personas.

Una manera fácil de hacer esto en Salesforce es usar Data Detect , un producto que le permite revisar objetos y campos antes de permitir que los procesos de IA accedan a ellos para recibir indicaciones y capacitación. Una vez que los datos se han escaneado a través de Data Detect, puede confirmar que no hay sorpresas en esos datos, como números de tarjetas de crédito o direcciones de correo electrónico en campos donde ese tipo de datos no debería existir.

Data Detect también puede ayudar a recomendar un nivel de clasificación, como "Confidencial" o "PII" para datos personales, y proporcionar detalles sobre el contenido de un objeto, así como encontrar datos confidenciales generados por chatbots, casos y transcripciones de llamadas registradas automáticamente. por IA.

Paso 2: configure la protección de la privacidad de los datos para sus procesos generativos de IA

Respetar la privacidad del cliente y proteger los datos a lo largo de sus procesos de IA es crucial para establecer y mantener la confianza. A medida que confía más en la IA para comprender y tomar decisiones a partir de sus datos, ¿cómo protege también esos datos, especialmente la PII?

Para los procesos de IA que usan datos personales, como aumentar los registros de contacto u orquestar ofertas de marketing dinámicas 1:1, querrá desarrollar políticas de uso de datos claras y transparentes que describan cómo se manejarán los datos de los clientes, incluido su uso en sistemas de IA generativos. . Comunique estas políticas a sus clientes y bríndeles la oportunidad de optar por no participar o elegir el nivel adecuado de uso de datos. Además, cree una política para eliminar y ofuscar los datos que ya no son útiles o relevantes, para que sus clientes permanezcan protegidos y sus procesos de IA generativa permanezcan precisos.

Centro de privacidad puede ayudar a verificar que sus procesos de IA estén autorizados para su uso en capacitación y avisos. El Centro de privacidad también puede ayudarlo a crear políticas de retención para administrar el ciclo de vida de los datos utilizados y generados por la IA, incluidas las transcripciones de llamadas, los chatbots y los casos registrados automáticamente por la IA.

Paso 3: configure su organización para administrar la IA generativa

Tanto para proteger los datos utilizados en los procesos de IA como para confirmar que sus integraciones se mantienen dentro de los límites de los datos que desea utilizar, deberá implementar controles para proteger los datos de los clientes frente a accesos no autorizados o infracciones.

Los controles de acceso le permiten restringir el acceso a los datos del cliente solo al personal autorizado. Al otorgar acceso según sea necesario, reduce el riesgo de que los modelos de IA y las personas no autorizadas accedan a datos confidenciales. Esto protege contra el posible uso indebido de esos datos al tiempo que garantiza la privacidad del cliente.

Security Center puede ayudarlo a administrar de manera centralizada los permisos de usuario y las configuraciones de la organización para los datos que se usan y se obtienen de los procesos de IA.

Ahora preparémonos para implementar la IA de manera segura en toda su organización.

Paso 4: pruebe sus procesos para la implementación

Las pruebas en un entorno de espacio aislado son primordiales cuando se trata de IA generativa. Esto tiene dos propósitos fundamentales: probar los procesos de IA y capacitar a los empleados sobre el uso seguro y responsable de la IA generativa. Al realizar pruebas exhaustivas en un entorno de espacio aislado controlado, las organizaciones pueden evaluar y refinar el rendimiento y el comportamiento de sus modelos generativos de IA antes de implementarlos en escenarios del mundo real. Las pruebas permiten la identificación y mitigación de posibles problemas, como sesgos, errores o consecuencias no deseadas que pueden surgir durante un proceso de IA generativa.

Además, un entorno de sandbox proporciona un espacio seguro para que los empleados adquieran experiencia práctica y capacitación en el uso de herramientas y sistemas de IA generativa. Les permite explorar capacidades e identificar consideraciones éticas mientras toman decisiones informadas al usar la tecnología de manera responsable en sus operaciones diarias. Al aprovechar las pruebas de sandbox, las organizaciones pueden garantizar la confiabilidad, la eficacia y la aplicación ética de la IA generativa al tiempo que capacitan a su fuerza laboral para adoptar y utilizar esta tecnología transformadora con confianza.

Asegúrese de que, cuando utilice un espacio aislado para el entrenamiento de IA, haya eliminado todos los datos personales para crear sus indicaciones o entrenar un modelo de IA; puede eliminar u ofuscar fácilmente cualquier dato que no deba incluirse con Data Mask .

Paso 5: Supervise y proteja sus procesos de IA

Garantizar que la integración de IA no acceda a los datos ni modifique los sistemas más allá del alcance previsto es crucial para mantener la seguridad de los datos y la integridad del sistema. Como describimos anteriormente, los controles de acceso y los permisos de los usuarios deben definirse cuidadosamente, otorgando a los sistemas de IA solo los privilegios necesarios y limitando su acceso a fuentes o sistemas de datos específicos. Además, se deben realizar pruebas y validaciones exhaustivas de la integración de la IA para verificar que funcione según lo previsto y que no tenga consecuencias ni vulnerabilidades no deseadas.

Finalmente, implementar mecanismos de monitoreo robustos puede ayudar a detectar y alertar cualquier intento de acceso no autorizado o comportamiento anormal por parte del sistema de IA. Las auditorías y revisiones periódicas de los procesos de integración de IA y los registros de acceso pueden ayudar a identificar cualquier desviación o posibles riesgos de seguridad.

Event Monitoring ayuda a que el proceso de monitoreo y detección sea más fácil al permitir la configuración de capacidades, como la seguridad de transacciones, para enviar alertas o bloquear acciones más allá de lo que se pretendía inicialmente para su proceso de IA.

Finalmente, a medida que se adentra más en su viaje de IA, es fundamental que sus datos estén respaldados y puedan restaurarse hasta el nivel de registro en el caso poco probable de que los datos utilizados y aumentados por IA estén mal configurados o sincronizados incorrectamente. Haga una copia de seguridad de sus datos para ver cada versión de los registros utilizados y tocados por AI, y restaure cualquier error.

Conclusión

Al adoptar un enfoque que prioriza la privacidad e implementar medidas sólidas de protección de datos, puede crear una base confiable para prácticas de IA generativas responsables, sostenibles y éticas, todo mientras impulsa una innovación más eficiente y efectiva e interacciones más personalizadas con los clientes. Para obtener más información sobre cómo comenzar con la IA generativa, consulte nuestra Guía de introducción a la IA.

Recursos

Sobre el Autor

Marla Hay Vicepresidenta de Seguridad, Privacidad y Gestión de Datos en Salesforce y dirige la organización de productos de Servicios de confianza. Se unió a Salesforce en 2017 después de liderar productos en una empresa de gestión de identidad de consumidores. Marla tiene una licenciatura en Ciencias de la Computación de la Universidad de Cornell y una maestría en Ciencias de la Computación de la Universidad Johns Hopkins.

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Uso de FileEvents para fortalecer la seguridad de los archivos ☁️

Uso de FileEvents para fortalecer la seguridad de los archivos ☁️

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.

Uso de FileEvents para fortalecer la seguridad de los archivos | Blog de desarrolladores de Salesforce

Siempre que un usuario de Salesforce intente cargar, obtener una vista previa o descargar un archivo a través de la interfaz de usuario o la API, se producirá un FileEvent en el backend. Este evento está incluido en la función Supervisión de eventos en tiempo real de Salesforce, y los desarrolladores de Salesforce pueden optar por habilitar la transmisión o el almacenamiento para FileEvents como cualquier otro evento asociado con la Supervisión de eventos en tiempo real. Además, los desarrolladores pueden configurar una política de seguridad de transacciones para FileEvents, lo que les permite realizar un seguimiento y tomar medidas en función de las acciones del usuario en los archivos.

Estamos emocionados de ver que FileEvents se convierte en GA en el lanzamiento de Summer '23 . En esta publicación, le mostraremos cómo puede crear una política de seguridad de transacciones sobre un FileEvent y fortalecer la seguridad de los archivos.

Nota: FileEvents está disponible para los clientes que compraron suscripciones complementarias de Salesforce Shield o Salesforce Event Monitoring.

¿Por qué es importante la seguridad de archivos de Salesforce?

Para comprender FileEvents, es importante comprender primero la importancia de la seguridad de archivos en la organización de Salesforce. Salesforce almacena una amplia gama de información como archivos, incluidos los datos de contacto del cliente, los datos de ventas, las notas de las interacciones con los clientes y las solicitudes de servicio, así como documentos internos como contratos, materiales de marketing y especificaciones de productos. Además, el sistema puede almacenar archivos relacionados con transacciones financieras como facturas u órdenes de compra.

El propósito de Salesforce Files es mantener todos estos datos en una ubicación central, para que varios usuarios puedan acceder a ellos fácilmente a la vez, mejorando así la colaboración y la productividad. Es fundamental priorizar la protección de estos archivos para garantizar la seguridad de la información confidencial en su organización de Salesforce. Esto no puede ser enfatizado suficientemente.

¿Qué puede hacer FileEvents?

Cuando los empleados renuncian a su trabajo, normalmente continúan trabajando durante un breve período de tiempo antes de abandonar la empresa. En esta situación, muchas empresas restringen el acceso a archivos confidenciales durante este período previo a la salida. Se puede implementar una política de seguridad de transacciones utilizando FileEvents para evitar que los empleados descarguen archivos etiquetados como "legales" con fines de cumplimiento.

Suposición

  • Su organización tiene una licencia complementaria de Salesforce Shield o Event Monitoring
  • Los archivos que los usuarios intentan descargar tienen una etiqueta legal

Veamos cómo puede implementar una política de seguridad de transacciones utilizando eventos de archivo.

  • Configuración → Políticas de seguridad de transacciones
  • Haga clic en Nuevo y seleccione Apex

En el menú desplegable "Evento", seleccione FileEvent . Y en el menú desplegable Clase de Apex, seleccione Nueva clase de Apex vacía y luego haga clic en el botón Siguiente .

En la selección Acciones , podemos elegir Mensaje predeterminado o Mensaje de bloqueo personalizado. Lo mismo se aplica al contenido de las notificaciones por correo electrónico. Asegúrese de que el estado de la política esté habilitado.

Ahora, la clase estándar de Apex se ha creado automáticamente.

El fragmento de código siguiente incluye lógica para satisfacer las necesidades de cumplimiento. Actualice la clase con este fragmento de código.

¡Gran trabajo! Veámoslo todo en acción

Inicie sesión como usuario e intente descargar el archivo que está etiquetado como "Legal".

La capacidad de descargar los archivos se ha restringido debido a la política que creamos.

Conclusión

Ahora que FileEvents está disponible en general, es más fácil que nunca configurar políticas de seguridad de transacciones para administrar archivos. Al aprovechar estos eventos, puede monitorear y responder a la actividad en tiempo real, detectar comportamientos sospechosos rápidamente e identificar con precisión amenazas potenciales antes de que se conviertan en un problema.

Además, aprovechar las capacidades de automatización, como alertas o notificaciones automáticas cuando ocurren ciertas actividades en archivos dentro de su organización, ayudará a garantizar que cualquier actividad maliciosa se identifique de inmediato para que se puedan tomar las contramedidas adecuadas de inmediato.

Está claro por qué mantener seguros los documentos confidenciales dentro de un sistema de archivo seguro debe ser una prioridad para cualquier empresa que utilice una plataforma de CRM como Salesforce. En conclusión, comprender FileEvents es esencial para mejorar la seguridad de su organización de Salesforce.

Sobre el Autor

Jagan Padmanabhan es Arquitecto Técnico (Grupo de Éxito del Cliente) en Salesforce con un enfoque especial en la creación de aplicaciones seguras a gran escala. Le apasiona desarrollar aplicaciones utilizando productos basados en la seguridad como Salesforce Shield y Event Monitoring. Además, contribuye activamente a la seguridad de la plataforma como investigador de seguridad. Síguelo en LinkedIn .

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Aspectos destacados de la versión para desarrolladores | Aprende Moar Verano '23 ☁️

Aspectos destacados de la versión para desarrolladores | Aprende Moar Verano '23 ☁️

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.

Aspectos destacados de la versión para desarrolladores | Aprende Moar Verano '23 | Blog de desarrolladores de Salesforce

¡Haz un gran revuelo con el lanzamiento de Summer '23!

Sabemos que cada versión trae consigo muchas funciones nuevas y sorprendentes, y puede haber mucho que digerir. Con Learn MOAR, empaquetamos el lanzamiento y se lo ofrecemos en un formato fácil de digerir con blogs, videos y más.

¡Es fácil empezar!

  • ¡Explore los trailmixes de Trailhead con aspectos destacados de lanzamiento clave para desarrolladores o administradores, o ambos!
  • ¡Únase a nosotros para Release Readiness Live ! Los expertos en productos y los defensores de los desarrolladores analizarán y demostrarán las nuevas funciones en el lanzamiento de Summer '23 y, al final de nuestra transmisión, responderemos sus preguntas. Sintonice a las 9 am PT el 19 de mayo para la sesión de desarrolladores. ¿No puedes unirte a nosotros en vivo? La grabación se publicará unas horas después de que finalice la transmisión.

Siga y complete un trailmix de Learn MOAR Summer '23 para administradores o desarrolladores para obtener una insignia exclusiva de la comunidad.

Introducción

¡El lanzamiento de Summer '23 está aquí y está repleto de funciones para desarrolladores! En esta publicación de blog, resumiremos los aspectos más destacados, para que pueda obtener una descripción general de las novedades y decidir qué es lo más interesante para usted. En publicaciones posteriores de Learn MOAR, profundizaremos en algunos de estos aspectos destacados, para que pueda explorarlos con mayor detalle. Mantenerse actualizado con las últimas innovaciones lo ayudará a aumentar su experiencia y convertirse en un desarrollador más exitoso.

Componentes web Lightning

Comencemos hablando de Lightning Web Components, que presentará una gran cantidad de nuevas funciones en Summer '23.

Un par de funciones que estaban en Beta ahora estarán disponibles de forma general (GA). Esto incluye DOM ligero , que permite integraciones de terceros y estilo global, Lightning Web Security para LWC y Aura , que facilita el uso de bibliotecas de JavaScript de terceros en LWC. La API RefreshView , que le permite actualizar la vista de un componente, también será GA. Además, el adaptador de cable GraphQL se está moviendo a Beta, lo que significa que puede probarlo de inmediato, sin tener que registrarse para el programa piloto. Esto cambiará las reglas del juego sobre cómo se leen los datos en Lightning Web Components.

Hay varias mejoras en la sintaxis de LWC que facilitarán la escritura de sus componentes. Se está lanzando una nueva directiva de plantilla lwc:spread (consulte los documentos ), que le permite distribuir propiedades de objetos a un componente secundario, lo que reduce significativamente la cantidad de código que necesita escribir. A partir de Summer '23, podrá establecer un valor dinámico para el atributo de ranura de un elemento HTML. Además, se habilitará la inyección programática de hojas de estilo, lo que le permitirá establecer la propiedad estática de las hojas de estilo para un componente.

¿Ha comenzado a escribir pruebas de extremo a extremo con UTAM? Esta versión también trae mejoras a las capacidades de manejo de errores de UTAM y una extensión de Chrome para identificar objetos de página de UTAM (en Beta).

Móvil sin conexión

Salesforce Mobile App Plus (Salesforce App+) es una versión de la aplicación Salesforce Mobile que habilita LWC Offline. LWC Offline es un entorno de tiempo de ejecución avanzado para componentes web Lightning que aumenta el tiempo de ejecución estándar con funciones diseñadas específicamente para uso móvil y sin conexión. Si bien LWC Offline anteriormente solo estaba disponible en la aplicación móvil Salesforce Field Service, Salesforce App+ le permite usarlo en un contexto más genérico. Salesforce App+ se cerró en Beta en Spring '23 y se trasladará a GA en Summer '23. Salesforce App+ está disponible bajo la licencia Salesforce Mobile Plus.

Integración de plataforma

Tener una plataforma robusta es tan importante como tener capacidades de integración sólidas. Es por eso que la versión Summer '23 trae muchas funciones de integración nuevas.

En esta versión, ampliamos la API REST de Salesforce para admitir la recuperación de elementos secundarios mediante la definición de hasta cinco niveles de consultas SOQL anidadas . También ampliamos la API REST de Connect y la API de Connect (Connect in Apex) para permitir que los desarrolladores creen y administren credenciales con nombre mediante programación. Además, la API GraphQL, que se hizo GA en Spring, ahora admitirá consultas con funciones agregadas y mejorará sus capacidades de manejo de errores . Los eventos de la plataforma también incluyen nuevas funciones, como la capacidad de agregar una clase de devolución de llamada a su código de publicación de Apex , que proporcionará una confirmación cuando el evento de la plataforma se publique correctamente. Además, podrá obtener métricas de uso de eventos de la plataforma consultando el objeto PlatformEventUsageMetric .

También se están mejorando las capacidades de integración en Flow. Flow Builders ahora podrá configurar llamadas HTTP GET a sistemas externos que no tienen una especificación de API abierta a través de la función Servicios externos. Las llamadas HTTP POST están en Beta. Si es un Muley , puede leer más sobre las innovaciones de Flow plus MuleSoft en la siguiente sección.

Además de todo esto, el adaptador GraphQL de Salesforce Connect que anunciamos en febrero se mudará a GA, y Event Relay ahora admitirá Shield Platform Encryption y tendrá una nueva interfaz de usuario de configuración fácil de usar.

Innovaciones entre nubes

Aunque MuleSoft, Tableau y Slack siguen sus propios ciclos de lanzamiento, son partes integrales del ecosistema de Salesforce y de vital importancia para los desarrolladores.

Mula Suave

Una de las innovaciones más recientes de MuleSoft es Anypoint Code Builder (Beta), el IDE de próxima generación de MuleSoft para diseñar, desarrollar e implementar API, integraciones y automatización desde un solo entorno. ¡Compruébalo si aún no lo has hecho!

Si leyó la sección "Integración de la plataforma" anterior, es posible que haya recibido un spoiler: MuleSoft se está integrando en Flow más que nunca. En Summer '23, habrá una nueva sección en la interfaz de usuario de configuración de Salesforce Platform, desde la cual podrá configurar y administrar los servicios de MuleSoft , que luego se pueden usar en Flow Builder. Además, el soporte de MuleSoft se está agregando a Flow Orchestrator , lo que facilita la creación de procesos comerciales automatizados de varios pasos que utilizan los servicios de MuleSoft.

Por último, se lanzará Anypoint Experience Hub . Es la próxima evolución de Anypoint API Community Manager y permite a los clientes crear portales de API en minutos para una mejor participación de API.

Cuadro

Si trabaja con API, es posible que esté familiarizado con la colección Postman de API de Salesforce . Esta colección se ha vuelto muy popular y es ampliamente adoptada en el ecosistema de Salesforce, con actualmente más de 500 bifurcaciones y más de 800 estrellas. Tableau recientemente se subió al carro al agregar sus propias muestras de la API REST de Tableau a la colección. Para obtener más información, lea nuestra entrada de blog .

Si le gustó la colección, le encantará la innovación más reciente de Tableau, cuya vista previa pública se anunció en la Conferencia de Tableau (TC) 2023 del 9 al 11 de mayo. El nuevo Tableau Embedding Playground ofrece a los desarrolladores un entorno de aprendizaje interactivo para desarrollar rápidamente soluciones de análisis integradas. Integre visualizaciones de Tableau y agregue rápidamente interacciones que establezcan filtros y parámetros, obtengan marcas y datos seleccionados, utilizando los componentes básicos de los métodos y las propiedades de la API de incorporación. En el futuro, use sus propias visualizaciones en Tableau Cloud, Tableau Server o Tableau Public para desarrollar sus aplicaciones personalizadas con código que puede exportar y ejecutar en cualquier lugar.

La diversión no se detiene ahí. Para admitir análisis integrados personalizados y seguros, Tableau introdujo recientemente dos nuevas funciones de usuario que permiten a los desarrolladores y administradores pasar cualquier atributo de usuario en tiempo de ejecución dentro del flujo de autenticación integrado. Para obtener más información, leanuestra entrada de blog .

Flojo

Finalmente, nos complace compartir que Slack acaba de anunciar la disponibilidad general de su plataforma Slack de próxima generación. En la nueva plataforma, puede crear aplicaciones modulares mediante el desarrollo de componentes básicos, como funciones, flujos de trabajo y activadores, mediante TypeScript y Deno . Ahora puede implementar en la infraestructura administrada por Slack, ahorrando tiempo y aumentando la eficiencia. En el futuro, los usuarios de Slack podrán aprovechar cada capacidad que ofrece y combinarlas con otras funciones, servicios y proveedores de software para crear automatizaciones potentes y personalizadas. La plataforma también incluye una CLI, que puede usar para desarrollar, probar e implementar sus funciones y flujos de trabajo. Para obtener más información al respecto y obtener experiencia práctica, diríjase a la guía de inicio rápido .

Aprende MOAR

Nuestros gerentes de producto y defensores de desarrolladores están de vuelta para compartir las últimas características y funcionalidades que llegarán en Summer '23. Para ayudarlo a desarrollarse más rápido, hay una gran cantidad de contenido nuevo del equipo de relaciones con desarrolladores que cubre sus nuevas características favoritas. ¡Asegúrese de consultar Release Readiness Live el viernes 19 de mayo a las 9:00 a. m. PST, y lea lo último en el blog de desarrolladores de Salesforce para conocer más innovaciones relacionadas con desarrolladores en el lanzamiento de Summer '23!

Sobre el Autor

Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Actualmente se enfoca en el desarrollo de Lightning Web Components y Slack. Puedes seguirla en Twitter o Linkedin .

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Sube de nivel tus habilidades Apex ☁️

Sube de nivel tus habilidades Apex ☁️

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.

Subiendo de nivel tus habilidades de Apex | Blog de desarrolladores de Salesforce

Apex es una habilidad única que los desarrolladores deben dominar al crear soluciones personalizadas con Salesforce. Hay algunos conceptos básicos que son esenciales. Ciertas cosas, como la sintaxis y el flujo de control, son como aprender cualquier otro idioma. Otras cosas, como operaciones masivas, límites reguladores y disparadores, son particulares de Apex y cómo se implementa en la Plataforma de Salesforce. Una vez que tenga una idea de estas características y modismos clave, ¿a dónde va después?

En esta publicación, aprenderá sobre algunas características de Apex que son críticas para cualquier desarrollador de Apex que busque mejorar más allá de lo básico, junto con dónde puede ir para aprender sobre ellas.

Nota: Siempre que sea posible, los ejemplos de código en esta publicación se toman directamente o se adaptan de la aplicación de muestra Recetas de Apex o la Guía para desarrolladores de Apex. Ver las referencias al final del artículo.

En estos días, si desea un proceso automatizado o una interfaz de usuario similar a un asistente, Flow siempre debe ser una opción que considere. El alcance, la flexibilidad y la madurez de Flow han crecido enormemente. Aún así, es raro que los problemas comerciales complejos se puedan resolver sin ningún tipo de código.

Introduzca Apex invocable.

La anotación @InvocableMethod se usa para definir métodos llamados por Flow. Y @InvocableVariable muestra los parámetros para que Flow pase datos a su código Apex. ¿Por qué llamaría a Apex desde Flow? Quizás la lógica de su flujo se está volviendo demasiado compleja. Tal vez su automatización necesite realizar una operación que no sea accesible para Flow. En casos como estos, Apex puede ser su amigo.

Aquí hay una ilustración básica del uso de la anotación @InvocableMethod :

<dx-code-block title language="java" code-block="public class AccountQueryAction {   @InvocableMethod(label='Get Account Names' description='Returns the list of account names corresponding to the specified account IDs.' category='Account')   public static List getAccountNames(List ids) {     List accountNames = new List();     List accounts = [SELECT Name FROM Account WHERE Id in :ids];     for (Account account : accounts) {       accountNames.add(account.Name);     }     return accountNames;   } }»>

Este ejemplo de la Guía para desarrolladores de Apex ilustra cómo la anotación marca esto como un método que Flow puede invocar. Tenga en cuenta que la anotación también define detalles como una etiqueta y una descripción que determinan lo que se muestra al usuario de Flow Builder.

Un efecto secundario importante de las anotaciones de @Invocable… del que pocas personas hablan es que esto muestra automáticamente su Apex al punto final de la API <INSTANCEURL>/data/<VERSION>/actions/custom/apex .

Otra cosa útil que puede hacer al invocar Apex desde su flujo es acceder a los diferentes tipos de Apex asíncrono. Lo que trae a colación la siguiente característica de Apex que se debe abordar.

La ejecución asíncrona desacopla una acción que queremos realizar del contexto de ejecución actual. Siguiendo las mejores prácticas actuales, existen tres formas de ejecutar Apex de forma asincrónica: en cola, programable y por lotes. Aunque técnicamente el bus de eventos es asíncrono, lo omitiremos por el momento.

Si solo necesita activar un poco de código para ejecutarlo de forma asincrónica, la opción en cola es la herramienta de referencia. Si tiene varias tareas asincrónicas, queueable las ejecuta de manera determinista en orden. Debido a que están en cola en orden, también puede encadenar una llamada asíncrona de otra. Y Apex en cola admite entradas de objetos o tipos primitivos.

Apex programado funciona tal como lo esperaría: ejecute algún código de Apex en un horario. Batch Apex está optimizado para trabajar con conjuntos de datos muy grandes. Para utilizar Apex asíncrono, debe crear una clase de Apex que implemente una interfaz específica: Queueable , Schedulable o Batchable , respectivamente.

Nota: algunos desarrolladores pueden estar familiarizados con la anotación @Future para hacer que un solo método sea asincrónico, también conocido como "métodos futuros". Los métodos futuros, aunque rápidos y fáciles, tienen limitaciones que los hacen menos útiles. No hay nada que pueda hacer con un método futuro que no se pueda hacer mejor con una clase en cola. Por este motivo, no recomendamos implementaciones de producción con métodos futuros.

Por lo tanto, echemos un vistazo a un ejemplo de una clase de Apex que se puede poner en cola.

<dx-code-block title language="Java" code-block="public with sharing class QueueableRecipes implements Queueable { public static void execute(QueueableContext qc) { List accounts = [ SELECT Id, Description FROM Account LIMIT 1000 ]; for (Account acct : accounts) { acct.Description += ‘ Edited by Queueable class’; } try { update accounts; } catch (DmlException dmle) { System.debug( LoggingLevel.INFO, ‘real life use cases should do more than just logging the error: ‘ + dmle.getMessage() ); } }
} «>

Todas las interfaces asíncronas de Apex tienen un método execute() que debe implementarse como se muestra arriba. Para ejecutar su clase Queueable , debe ponerla en cola.

Si bien no se muestra en este ejemplo de la aplicación de muestra Recetas de Apex, para pasar datos a su cola, anule el constructor con los parámetros que necesita.

El término "Apex dinámico" es un poco inapropiado. O, al menos, podría malinterpretarse como que Apex de alguna manera funciona como un lenguaje de programación dinámico. Esto no es a lo que se refiere (por ejemplo, no hay Apex
función eval !).

Dynamic Apex es un código que se adapta a diferentes tipos de SObject ( Account , Contact , My_Custom_Object__c , etc.) en tiempo de ejecución. Esto se hace abstrayendo referencias específicas de SObject. La clave es usar la superclase SObject cuando se trabaja con datos. También utilizará las funciones de "descripción" de Apex para detectar con qué objetos y campos está trabajando y qué puede hacer con ellos (por ejemplo, si este usuario puede consultar este objeto).

Esta es una habilidad esencial para los desarrolladores de ISV. A menudo, creará una aplicación que debe adaptarse al entorno local del cliente que instala su aplicación. Esto significa que su código necesita detectar, describir y adaptar su comportamiento dependiendo de datos conocidos o incluso desconocidos.

Aunque es esencial para un desarrollador de ISV, también es importante para cualquier persona que quiera escribir código más reutilizable.

Tome este ejemplo de consulta muy básico:

<dx-code-block title language="Java" code-block="List accts = [SELECT Id, Name, Website FROM Account];»>

Esto funcionará todo el día consultando los datos de la cuenta. Pero, ¿y si queremos construir una consulta para cualquier SObject?

Para convertir esto en un Apex "dinámico", necesitamos abstraer las referencias de campo y SObject específicas. Y tal vez lo incluiríamos en un método que permitiera a otro desarrollador pasarlos. También podríamos verificar para asegurarnos de que el usuario tenga los permisos de objeto para realizar la operación que estamos a punto de intentar.

<dx-code-block title language="Java" code-block="public static List executeDynamicQuery(Schema.DescribeSObjectResult obj, List fields){ // Create a result-set list List resultRecords; if (obj.isQueryable()){ // Set up a query string String queryTemplate = ‘SELECT {0} FROM {1}’; List queryDetails = new List{String.join(fields, ‘, ‘), obj.getName()}; String queryString = String.format(queryTemplate, queryDetails); // Run your query resultRecords = Database.query(queryString); } return resultRecords; } «>

Lo anterior construye una consulta para un SObject que se pasa al método y una lista arbitraria de campos. Utiliza el objeto DescribeSObjectResult para detectar la capacidad de consulta e inferir el nombre de la API de SObject al construir y ejecutar la consulta. A continuación, debe invocarlo.

Así es como podríamos hacer eso con los objetos Cuenta y Contacto, respectivamente:

<dx-code-block title language="Java" code-block="List accountRecords = DynamicApexClass.dynamicQuery(Account.SObjectType.getDescribe(), new List{‘Id’,’Name’,’Website’}); List contactRecords = DynamicApexClass.dynamicQuery(Contact.SObjectType.getDescribe(), new List{‘Id’,’FirstName’,’LastName’}); «>

Este ejemplo no aborda algunos riesgos de SOQL dinámico, como la inyección de SOQL. Por lo tanto, asegúrese de leer sobre Apex dinámico. Aprender a escribir Apex seguro hará que sea menos probable que implemente código vulnerable en su organización (o la de un cliente). El enlace de variables en sus consultas SOQL es una herramienta clave para proteger su Apex dinámico de ser explotado. El método escapeSingleQuotes() es otra herramienta más antigua que también puede encontrar. El modo de usuario también es clave para garantizar que cualquier acción realizada tenga que cumplir con todas y cada una de las restricciones del usuario que la ejecuta.

Para obtener un ejemplo más completo y seguro de Apex dinámico, consulte la receta de Apex del método invocable en la aplicación de ejemplo Recetas de Apex. Esa acción invocable funciona con el objeto Cuenta o Tarea.

Con Salesforce, hay algunas formas de realizar la integración sin código. Específicamente, si solo necesita una aplicación o servicio de cliente para obtener datos de Salesforce, hay muchas API que se muestran automáticamente sin ningún tipo de codificación en el lado de Salesforce. Incluso se ajustan a su esquema personalizado. Si está integrando su organización a un sistema externo compatible con OData, puede usar Salesforce Connect y objetos externos (nuevamente, no se requiere código).

Pero a veces, es posible que deba llamar desde su organización a un servicio externo. O tal vez desee mostrar un punto final personalizado que agrupe más complejidad que una de las API estándar. Nuevamente, Apex contiene funciones que admiten tanto la aparición de nuevas API personalizadas como la llamada a servicios web.

Al pensar en API personalizadas, en estos días, la mayoría de los desarrolladores pensarían en API REST. Puede crear una API REST personalizada en Salesforce Platform creando una clase de Apex que se anota con la anotación @RestResource . Parte del trabajo de la anotación es definir también el nombre del recurso. Todas las API REST personalizadas basadas en Apex se encuentran en <INSTANCEURL>/services/apexrest/ .

Para definir los comportamientos que necesita admitir, hay una serie de anotaciones de métodos que corresponden a verbos HTTP, como @HttpGet y @HttpPost . La clase RestContext contiene un conjunto de elementos de acceso para obtener el estado de la solicitud HTTP entrante y la respuesta saliente que devuelve. A continuación, se muestra un ejemplo de un extremo REST básico que aparece en el método HTTP GET. Tenga en cuenta cómo se utilizan las anotaciones.

<dx-code-block title language="Java" code-block="@RestResource(urlmapping='/integration-service/*')
global inherited sharing class CustomRestEndpointRecipes( … @HttpGet global static String getRecordsToReturn() { RestResponse response = RestContext.response; try { List accounts = [ SELECT Id, Name, Phone, Website FROM Account WITH USER_MODE ]; response.statusCode = 200; String serializedAccounts = JSON.serialize(accounts); return serializedAccounts; } catch (QueryException qe) { System.debug( LoggingLevel.INFO, ‘Failed to query a list of Accounts. Error is: ‘ + qe.getMessage() ); response.statusCode = 400; return qe.getMessage(); } }
} «>

Si su requisito es crear un servicio SOAP, también hay un conjunto de características para admitir ese protocolo.

Fuera del código real, necesitará una sesión autorizada para acceder a cualquier servicio web que cree. Pero si ya tiene un cliente autorizado, la solicitud es solo otra llamada al punto final personalizado que defina.

La llamada a un punto final REST externo se realiza a través de un conjunto de clases. La clase HttpRequest le permite definir los parámetros de cómo se comportará su solicitud (punto final, verbo HTTP, encabezados, etc.). La solicitud se realiza a través del método estático Http.request() . Esto devuelve un objeto HttpResponse que le proporciona los datos devueltos o el error si la solicitud falla.

Nota: Las clases HttpRequest y HttpResponse son las mismas para las llamadas REST y los servicios REST personalizados.

Se requiere cierta configuración para su texto destacado. Específicamente, deberá configurar una credencial con nombre en la mayoría de los casos. Esta configuración le permite descargar el protocolo de enlace de autenticación de su código. Aunque, si está llamando a un servicio anónimo no autenticado, también puede optar por usar una configuración de sitio remoto más simple.

= 200 && response.getStatusCode()

El ejemplo anterior hace una llamada simple a un punto final. Tenga en cuenta que no se utilizan las opciones para establecer encabezados ni usar una credencial con nombre, ya que esta solicitud es para una API simple que no requiere autenticación.

La transmisión de eventos es una herramienta valiosa para crear arquitecturas débilmente acopladas en aplicaciones complejas. La plataforma de Salesforce implementa la transmisión de eventos a través de dos características principales: eventos de plataforma y captura de datos modificados. La columna vertebral de estas funciones es el bus de eventos.

De la Guía para desarrolladores de eventos de plataforma, el bus de eventos es "Un servicio de entrega y almacenamiento de eventos de múltiples inquilinos y múltiples nubes basado en un modelo de publicación-suscripción". Tanto su organización como los sistemas externos pueden publicar y suscribirse a eventos. Por supuesto, es clave que si publicas un mensaje, algo debe haberse suscrito para que suceda cualquier otra cosa.

Los eventos de plataforma representan los datos que pasan a través del bus de eventos. Los eventos se procesan en el orden en que se reciben. Una forma de pensar en ellos es como un SObject efímero que se almacena temporalmente en el bus de eventos en su camino hacia su destino. De hecho, los metadatos de un evento se almacenan en el mismo lugar de su proyecto que sus SObjects. Puede distinguir los eventos de plataforma personalizados de los SObjects por su sufijo __e (por ejemplo Order_Complete__e ).

Una vez que completa un evento con sus datos, el método EventBus.publish() es similar a una llamada DML en su SObject normal. Tenga en cuenta el código a continuación que publica un evento.

En Apex, se suscribe a un evento creando un disparador asíncrono para él. Pero los disparadores asíncronos son diferentes de la operación DML transaccional estándar de un disparador normal. Por esta razón, debe tener en cuenta algunas diferencias. Con disparadores asíncronos, el tamaño del lote es diferente. Necesitas configurar tu usuario de ejecución. Las operaciones de activación de eventos también se pueden volver a intentar. Asegúrese de conocer estas diferencias a medida que comience a implementar activadores de eventos de plataforma. Tenga en cuenta el disparador a continuación.

A diferencia de los disparadores DML típicos, los disparadores de eventos de plataforma solo admiten el contexto after insert . Tampoco existe una acción explícita para suscribir un disparador a un evento de plataforma. Una vez que el activador se implementa en su organización, se suscribe automáticamente.

Además de Apex, los eventos de la plataforma pueden activarse y suscribirse mediante sistemas externos y Flow. Son clave en las integraciones débilmente acopladas. Como tal, es raro que Apex active y se suscriba al mismo evento.

Hemos cubierto mucho. Pero de ninguna manera esto es todo lo que necesita saber como desarrollador de Apex. Los elementos cubiertos se basan en algunas características bastante comunes. Pero es posible que deba aprender otras funciones de Apex según los requisitos de su proyecto. Aquí hay algunos otros elementos que debe tener en cuenta.

Caché de plataforma : si proviene de otras plataformas de programación, estará familiarizado con la noción de una variable estática o global persistente en todas las transacciones. Pero en Apex, las estáticas se limitan a la transacción. La memoria caché de la plataforma es una característica de Apex que permite la persistencia de datos en memoria entre transacciones. Si encuentra un retraso en el rendimiento relacionado con la recuperación de datos, la memoria caché de la plataforma puede ayudar.

Marcos de activación : no es una característica del lenguaje, sino bibliotecas que facilitan el uso de activadores. Estos proyectos creados por la comunidad abstraen el código de activación repetitivo que a menudo necesita escribir. Al usar un marco de activación, debería permitirle concentrarse solo en la lógica que debe abordarse. Para algo más que un disparador trivial, se recomienda encarecidamente adoptar un marco. Y conozco a algunos que argumentarían que debería considerar un marco incluso para ese disparador trivial. Pero este no es el lugar para debatir el tiempo de valor frente a la optimización prematura. Hay una implementación muy simple de esto en la aplicación Apex Recipes .

SOSL : el lenguaje de búsqueda de objetos de Salesforce ( SOSL ) es el primo subestimado de SOQL. SOSL permite consultas basadas en texto no deterministas. Es muy eficiente para encontrar datos de texto en comparación con la búsqueda de campos de texto con SOQL y comodines. Admite la búsqueda de varios SObjects simultáneamente y contiene funciones para filtrar de forma determinista los resultados de la búsqueda. Si tiene consultas SOQL de texto que son lentas, definitivamente consulte esta herramienta.

AuraEnabled : para mostrar el código Apex personalizado en sus componentes web Lightning (LWC), esta anotación es clave. Es muy probable que ya esté usando este si comenzó su viaje de Salesforce creando LWC. Pero si aún no lo ha usado, búsquelo en cualquier proyecto que involucre una interfaz de usuario personalizada. ¿Por qué "Aura" habilitado si es para LWC? Bueno, esta anotación se creó inicialmente para admitir el predecesor de LWC, el marco Aura. Tenía sentido no reinventar una nueva anotación cuando la existente funcionaría igual de bien para LWC.

Cada viaje para aprender un nuevo lenguaje de programación tiene algunas características clave que todos deben conocer. La sintaxis básica, el control de flujo y el modelo de ejecución de la plataforma son fundamentales para comprender. Pero una vez que tenga esos conceptos básicos, trabajar en funciones más avanzadas es clave para aumentar su conjunto de habilidades. Las acciones invocables, el Apex asíncrono, el Apex "dinámico", la integración y el bus de eventos son funciones que probablemente utilizará a medida que avanza. Al familiarizarse con estos ahora, no solo se preparará para abordar proyectos en el futuro, sino que también podrá tomar mejores decisiones de solución.

Si cree que está listo para aprender, los senderos para desarrolladores intermedios y avanzados en Trailhead pueden ayudarlo a encaminarse con todos estos temas y más.

Aplicación de muestra Apex Recipes en Github

Guía para desarrolladores de Apex

Guía de referencia de idiomas de Apex

Centro de desarrolladores de Apex

Peter Chittum ha trabajado en software empresarial y habilitación para desarrolladores durante más de 20 años. Pasó los últimos 12 años ayudando a miles de desarrolladores a tener éxito en la plataforma de Salesforce, y más recientemente lideró el equipo de promotores de desarrolladores en Salesforce. Pasa su tiempo libre con su familia, anda en bicicleta de montaña, cocina y toca música. Sígalo en Twitter (@pchittum), LinkedIn (en/PeterChittum) o BlueSky Social (@pchittum.bsky.social).

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Eliminación definitiva de registros con Salesforce Flow

Eliminación definitiva de registros con Salesforce Flow

Última actualización el 22 de mayo de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo eliminar registros de Salesforce utilizando Flow?

Objetivos:

Después de leer este blog, podrá:

  • Comprender la anotación @InvocableMethod
  • Más información sobre el método database.emptyRecycleBin
  • Configurar la acción de Apex para eliminar registros de forma permanente de Flow
  • Configurar el flujo de pantalla con el elemento Eliminar registro
  • Y mucho más

¿Qué es la eliminación completa?

La eliminación definitiva es la eliminación permanente de los registros especificados de la Papelera de reciclaje. Cuando los datos se eliminan de forma permanente, es casi imposible recuperarlos. Esto generalmente se logra a través de los métodos Database.EmptyRecycleBin .

Al vaciar los contenedores de reciclaje, tenga en cuenta las siguientes reglas y pautas:

  • Una vez que los registros se eliminan de la Papelera de reciclaje mediante esta llamada, se pueden consultar mediante queryAll() durante algún tiempo. Por lo general, este tiempo es de 24 horas, pero puede ser más corto o más largo.
  • Una vez que los registros se eliminan mediante la llamada Database.EmptyRecycleBin , no se pueden recuperar.

Warren Mason es administrador de sistemas en Gurukul on Cloud (GoC). En GoC están utilizando Salesforce Flow para optimizar los procesos de ventas. Warren tiene un requisito para eliminar clientes potenciales sin correo electrónico. Está construyendo un flujo de pantalla:

  1. Descubra todos los clientes potenciales sin correo electrónico
  2. Eliminar definitivamente tales clientes potenciales

Enfoque de Campeón de Automatización (I-do):

Si bien esto se puede resolver con varias herramientas de automatización como Apex Trigger y otras, usaremos Salesforce Flow y llamaremos a un método de Apex . Para llamar a un método de Apex , agregue el elemento Acción a su Flujo de Salesforce y seleccione una clase de Apex con una anotación @InvocableMethod .

En este artículo, usaremos la llamada clase de base de datos EmptyRecycleBin . Con Database.EmptyRecycleBin es posible borrar los registros de Salesforce. El método EmptyRecycleBin() elimina los registros de la papelera de reciclaje inmediatamente. A partir del lanzamiento de Summer'23 , no es posible acceder directamente al método EmptyRecycleBin desde Flow, por eso estamos usando la clase Apex Invocable.

Antes de discutir la solución, permítame mostrarle un diagrama del proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo para comprenderlo.

Comencemos a construir este proceso de automatización.

Práctica guiada (nosotros hacemos):

Hay 2 pasos para resolver el requisito comercial de Warren usando Screen Flow . Debemos:

  1. Cree una clase de Apex y una clase de prueba para eliminar registros de forma permanente de la Papelera de reciclaje.
  2. Flujo de fuerza de ventas
    1. Definir propiedades de flujo para el flujo de pantalla
    2. Agregue un elemento Obtener registros para encontrar todos los clientes potenciales sin dirección de correo electrónico
    3. Agregue un elemento de decisión para verificar los clientes potenciales encontrados o no (del paso 2)
    4. Agregue el elemento Eliminar registros para eliminar clientes potenciales
    5. Agregar acción: llame a Empty RecycleBin Invocable Apex Class

Paso 1: Cree una clase de Apex y una clase de prueba

Ahora, tenemos que comprender una nueva anotación de Apex, es decir, @InvocableMethod . Esta anotación nos permite usar un método de Apex como algo que se puede llamar desde Flow y Apex. Los métodos invocables se llaman con la API REST y se usan para invocar un solo método de Apex. Los métodos invocables tienen valores de entrada y salida dinámicos y admiten llamadas de descripción.

La anotación InvocableVariable identifica una variable de clase utilizada como parámetro de entrada o salida para la acción invocable de un método InvocableMethod. Si crea su propia clase personalizada para usarla como entrada o salida de un método invocable, puede anotar variables de miembros de clase individuales para que estén disponibles para el método.

La anotación de variable invocable admite los modificadores que se muestran en este ejemplo.


@InvocableVariable(label='variableLabel' description='variableDescription' requerido=(verdadero | falso))

La clase EmptyRecycleBin contiene dos variables, una para eliminar un solo registro y otra para manejar la eliminación de varios registros. Siéntase libre de pasar el valor a una o ambas variables según sea necesario. Cree la siguiente clase en su organización.


clase pública EmptyRecycleBin { @InvocableMethod(label='Papelera de reciclaje vacía' description='Eliminar permanentemente los registros de la Papelera de reciclaje.' iconName='slds:estándar:record_delete' categoría = 'Acciones de Apex personalizadas') ejecución de vacío estático público (Lista <Solicitudes> lista de solicitudes) { List<SObject> recordstoDelete = New List<SObject>(); para (Solicitudes req: lista de solicitudes) { if(req.obj != null){ recordstoDelete.add(req.obj); } if(req.listofSObjects != null){ recordstoDelete.addAll(req.listofSObjects); } } if(registrosparaEliminar.tamaño()>0){ Database.emptyRecycleBin(registrosparaEliminar); } } Solicitudes de clases públicas{ @InvocableVariable (descripción ='Aceptar un registro de tipo SObject.' requerido=falso) objeto público SObject; @InvocableVariable (descripción ='Aceptar múltiples registros de un tipo SObject.' requerido=falso) public List<SObject> listofSObjects; }
}

Copie el código de GitHub o instálelo usando esta URL .

Paso 2.1: Definir propiedades de flujo

  1. Haga clic en Configuración .
  2. En el cuadro Búsqueda rápida, escriba Flujos .
  3. Seleccione Flujos y luego haga clic en Nuevo flujo .
  4. Seleccione el flujo de pantalla   opción y haga clic en Crear y configurar el flujo.
  5. Se abrirá el diseñador de flujo para usted.

Paso 2.2: Adición de elementos Obtener registros para encontrar clientes potenciales sin correo electrónico

El siguiente paso es usar el objeto Prospecto para encontrar los prospectos sin dirección de correo electrónico.

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Obtener registros .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. Seleccione el objeto Prospecto de la lista desplegable.
  4. Seleccione Se cumplen todas las condiciones (Y) .
  5. Establecer condiciones de filtro
    1. Fila 1:
      1. Campo : Correo electrónico
      2. Operador : Igual
      3. Valor : {!$ConstanteGlobal.EmptyString}
  6. Cuántos registros almacenar:
    1. Seleccionar todos los registros
  7. Cómo almacenar datos de registro:
    1. Elija la opción para Almacenar automáticamente todos los campos .

Paso 2.3: uso del elemento de decisión para verificar la variable de recopilación de registros (del paso 2)

Ahora usaremos el elemento Decisión para comprobar la Variable de recopilación de registros del paso 2 para saber si devuelve el cliente potencial o no.

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
  4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
    1. Fila 1:
      1. Recurso: {!Get_Leads}
      2. Operador: es nulo
      3. Valor: {!$ConstanteGlobal.Falso}
    2. Haga clic en Listo .

Paso 2.4: Agregar acción: eliminar registros para eliminar clientes potenciales

El siguiente paso es eliminar los clientes potenciales que encontramos en el Paso 2.2 . Para ello utilizaremos el elemento Eliminar Registros .

  1. En Flow Designer, debajo del nodo , haga clic en el icono + y seleccione el elemento Eliminar registros .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. Para Cómo encontrar registros para eliminar, seleccione Usar los ID almacenados en una variable de registro o una variable de colección de registros .
  4. Selecciona el   {!Get_Leads} de la lista desplegable.
  5. Haga clic en Listo.

Paso 2.5: Adición de una acción para llamar a una clase de Apex invocable

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Acción .
  2. Seleccione la clase de Apex invocable EmptyRecycleBin .
  3. Ingrese un nombre en el campo Etiqueta : el nombre de la API se completará automáticamente.
  4. Establecer valores de entrada:
    1. Objeto para “listofSObjects” (Entrada) : Lead
    2. Objeto para "obj" (Entrada) : Plomo
  5. Almacenar valores de entrada
    1. listofSObjects : {!Get_Leads}
  6. Haga clic en Listo .

Al final, Warren's Flow se verá como la siguiente captura de pantalla:

Una vez que todo se vea bien, guarde el flujo.

Prueba de concepto

  1. Creé 201 clientes potenciales sin una dirección de correo electrónico para probar el flujo anterior.
  2. Ahora ejecute el flujo de pantalla y espere a que se complete el flujo.
  3. Vuelva a la Papelera de reciclaje para asegurarse de que los clientes potenciales se hayan eliminado definitivamente.

Evaluación formativa:

¡Quiero saber de ti!

¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

Seguir leyendo

Actualizaciones de integración de plataforma para desarrolladores | Aprende Moar Verano '23 ☁️

Actualizaciones de integración de plataforma para desarrolladores | Aprende Moar Verano '23 ☁️

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.

Actualizaciones de integración de plataforma para desarrolladores | Aprende Moar Verano '23 | Blog de desarrolladores de Salesforce

¡Únase a nosotros para Release Readiness Live esta semana! Los expertos en productos y los defensores de los desarrolladores analizarán y demostrarán las nuevas funciones en el lanzamiento de Summer '23 y, al final de nuestra transmisión, responderemos sus preguntas. Sintonice a las 9 am PT el 19 de mayo para la sesión de desarrolladores. ¿No puedes unirte a nosotros en vivo? La grabación se publicará unas horas después de que finalice la transmisión.

Introducción

El verano finalmente está aquí, y para nosotros los desarrolladores, ¡eso significa un nuevo y emocionante lanzamiento! Exploremos las próximas características que trae la versión Summer '23 para los desarrolladores centrados en la integración de plataformas.

Consultas SOQL anidadas en API

A partir de la API de la plataforma de Salesforce v58.0, SOQL ahora admite consultas de relación que atraviesan hasta cinco niveles de registros primarios y secundarios . Anteriormente, solo se admitía un nivel. Esta característica está disponible para objetos estándar y personalizados, y está limitada a consultas realizadas a través de llamadas de consulta REST y SOAP.

Probémoslo probando una relación padre-hijo de cuatro niveles usando la API REST con la siguiente consulta:

La llamada API ahora devuelve los registros anidados solicitados en la siguiente jerarquía: Cuenta (Nivel 1) → Contacto (Nivel 2) → Caso (Nivel 3) → Comentarios del caso (Nivel 4).

Credenciales con nombre en Connect API

Otra característica útil introducida en esta versión es la capacidad de administrar credenciales con nombre tanto desde la API REST de Connect como desde la API de Connect . Ya no necesita interrumpir su configuración para crear credenciales a través de la interfaz de usuario; ahora, se puede hacer programáticamente,

Por ejemplo, puede recuperar la lista de todas las credenciales con nombre existentes realizando la siguiente llamada a la API:

GET /services/data/v58/named-credentials/named-credential-setup

Alternativamente, puede usar Apex con lo siguiente:

También puede crear credenciales con nombre mediante programación con la API y Apex. Este es un ejemplo de cómo hacerlo con Apex:

Consulte nuestra colección Postman para desarrolladores de Salesforce que presenta las nuevas API de Named Credentials y consulte la documentación de la clase NamedCredentials Apex para obtener más información.

Consultas API de GraphQL con funciones agregadas

Nuestra API GraphQL sigue mejorando y, con esta versión, estamos agregando soporte para registros de consulta que usan funciones agregadas con o sin agrupación .

Podrá contar la cantidad de registros que coinciden con ciertos criterios, calcular el ingreso promedio en todas las cuentas o ver la cantidad total de todas las oportunidades.

Se admiten las siguientes funciones agregadas:

  • avg : devuelve el valor promedio de un campo numérico
  • count : devuelve el número de resultados que coinciden con los criterios de consulta
  • countDistinct : devuelve el número de valores de campo distintos y no nulos que coinciden con los criterios de consulta
  • grouping : especifica si se utiliza un campo al componer el grupo; usar con el argumento de consulta groupBy y el tipo ROLLUP o CUBE
  • max – Devuelve el valor máximo de un campo
  • min – Devuelve el valor mínimo de un campo
  • sum : devuelve la suma total de un campo numérico

Echemos un vistazo a una consulta de ejemplo. La siguiente consulta calcula el ingreso anual promedio de todas las cuentas, agrupadas por industria. Tenga en cuenta que estamos usando el campo aggregate en uiapi en lugar de query , lo que nos permite aprovechar las funciones agregadas.

A continuación, una consulta de GraphQL utilizando la función de agregado promedio y la función de agrupación.

También puede realizar consultas tradicionales dentro de la misma solicitud:

Si desea probarlo, puede usar el cliente Altair GraphQL o nuestra colección Postman de desarrolladores de Salesforce .

Adaptador GraphQL de Salesforce Connect

En febrero de 2023, anunciamos la versión piloto de nuestro adaptador GraphQL de Salesforce Connect y ahora nos complace anunciar que estará disponible de forma general en esta versión de verano de 2023.

El nuevo adaptador de Salesforce Connect para GraphQL actúa como un cliente para integrar datos de fuentes externas que exponen sus capacidades a través de GraphQL. Lo hace de una manera de copia cero al hacer llamadas en vivo a los puntos finales de la API cuando una acción del usuario o del sistema requiere registros específicos. Solo los datos necesarios para esa acción en particular se consultan a través de GraphQL y Salesforce Connect no almacena ni almacena en caché los registros devueltos por el servidor. Además, este adaptador incluye extensiones especiales para AWS AppSync y brinda acceso sin inconvenientes a Amazon RDS.

Para aprovechar este nuevo adaptador, simplemente cree una nueva fuente de datos externa y seleccione el tipo GraphQL .

Apex publica devoluciones de llamada en eventos de la plataforma

Con el lanzamiento de Summer '23, ahora puede realizar un seguimiento de la publicación de eventos de la plataforma utilizando Apex Publish Callbacks . Con esta nueva versión, puede obtener el resultado final de una llamada EventBus.publish a través de una devolución de llamada de publicación de Apex que implemente. Esto le da la opción de realizar un seguimiento de los errores o los éxitos para recibir el resultado final de la publicación. En función de ese resultado, puede decidir qué acción tomar, como intentar volver a publicar eventos fallidos, por ejemplo.

Para realizar un seguimiento de un evento fallido publicado, escriba una clase de Apex e implemente la interfaz EventBus.EventPublishFailureCallback . Si la operación asincrónica falla, se invocará el método onFailure . El parámetro result contiene los valores del campo EventUuid para cada evento fallido, pero no incluye los datos del evento en sí.

Para realizar un seguimiento de las publicaciones de eventos exitosas, escriba una clase de Apex e implemente la interfaz EventBus.EventPublishSuccessCallback . Debido a que la mayoría de las llamadas de publicación suelen tener éxito, el procesamiento de publicaciones de eventos exitosas probablemente no sea una preocupación. Observe siempre los límites de rendimiento y del gobernador de Apex cuando procese este tipo de resultado.

Como práctica recomendada, siempre cree eventos usando sObjectType.newSObject , ya que esto incluye un EventUuid que puede usar para rastrear el evento. Al crear eventos con este enfoque, recomendamos no publicar el mismo evento más de una vez para evitar duplicaciones EventUuid .

Métricas mejoradas para eventos de plataforma

Con esta actualización, ahora puede obtener métricas de uso de eventos mejoradas para eventos de plataforma consultando el objeto PlatformEventUsageMetric . Esto le permite agregar datos de uso por nombre de evento y determinar qué evento consume más de sus asignaciones. Además, puede agrupar el uso por cliente para descubrir cuántos clientes se suscribieron a un evento en particular y cómo se distribuye el uso de entrega de eventos entre los clientes. Además, utilice agregaciones granulares de tiempo de períodos diarios, por hora y de 15 minutos para segmentar los datos de uso para obtener información más detallada.

Cuando consulta PlatformEventUsageMetric , puede usar estos nuevos campos: EventName , Client , EventType y UsageType .

La siguiente consulta de ejemplo devuelve el uso de eventos por hora para eventos entregados entre el 1 y el 2 de abril en horario UTC. También agrega los resultados en intervalos de una hora según lo especificado por el campo TimeSegment . Dado que los campos EventName y Client se especifican en la consulta, los resultados se agruparán por evento y cliente.

= 2023-04-01T00:00:00.000Z AND EndDate

Un resultado de muestra de la consulta anterior sería similar al siguiente, incluirá datos de uso para todos los eventos, Order_Event__e y AccountChangeEvent .

Para obtener más información sobre esta función, consulte la documentación .

Acción HTTP en flujo: GET es GA, POST es Beta

HTTP Callout ahora está generalmente disponible para solicitudes GET , lo que le permite traer datos externos a Flow Builder sin ningún código. Usted crea una acción de Llamada HTTP desde dentro de Flow, que puede llamar a cualquier API de servicio basado en la web. Después de agregar los detalles de la API, Flow Builder genera una acción de llamada reutilizable que puede usar para diferentes flujos y en todo Salesforce.

Para ponerlo en uso, desde el elemento Acciones, seleccione Crear llamada HTTP .

Junto con GA, hemos incluido algunos cambios desde la última versión que agilizan el proceso de configuración.

Ahora puede editar una acción de llamada HTTP de forma declarativa. Las API cambian regularmente, por ejemplo, cuando se agrega un nuevo campo obligatorio a un sistema externo. Anteriormente, para editar la acción de llamada HTTP reutilizable, modificó la especificación de API generada automáticamente, lo que requería conocimientos de JSON. Ahora, puede editar la acción con clics en el menú de configuración de Servicios externos.

También se simplificó la configuración de la estructura de datos de la respuesta de la API. Proporciona una respuesta de API de muestra y Flow infiere los tipos de datos y analiza el JSON para que los datos se puedan utilizar en los flujos. Anteriormente, si necesitaba cambiar los tipos de datos inferidos, editaba el propio JSON. Ahora, selecciona los tipos de datos del campo con clics. Ahora también se admiten los tipos de datos de fecha, fecha/hora y booleano.

Como bonificación adicional, obtiene mensajes de error más intuitivos al crear su acción de llamada HTTP para ayudar a resolver el error y evitar problemas en el tiempo de ejecución.

Y si no puede OBTENER suficiente con HTTP Callout, ahora puede usar el método POST (Beta) para enviar datos de Salesforce a un servidor externo en Flow Builder. Por ejemplo, una nueva cuenta en Salesforce activa un flujo que crea una factura en un sistema externo. Seleccione POST (Beta) , ingrese un cuerpo de solicitud JSON de muestra que la API espera al configurar la llamada HTTP, y Flow infiere la estructura de datos externos.

Aprende MOAR

Guau, ¡son bastantes nuevas características de integración de plataforma para probar! Confío en que facilitarán la vida de muchos desarrolladores. ¡Pero hay más por descubrir! Lo invito a explorar nuestras otras publicaciones de blog para conocer las últimas actualizaciones de LWC, Mobile, MuleSoft y Tableau.

Nuestros gerentes de producto y defensores de desarrolladores están de vuelta para compartir las últimas características y funcionalidades que llegarán en Summer '23. Para ayudarlo a desarrollarse más rápido, hay una gran cantidad de contenido nuevo del equipo de relaciones con desarrolladores que cubre sus nuevas funciones favoritas. ¡Asegúrese de consultar Release Readiness Live el viernes 19 de mayo a las 9:00 a. m. PST, y lea lo último en el blog de desarrolladores de Salesforce para conocer más innovaciones relacionadas con desarrolladores en el lanzamiento de Summer '23!

¡Explore los trailmixes de Trailhead con aspectos destacados de lanzamiento clave para desarrolladores o administradores, o ambos! Siga y complete un trailmix de Learn MOAR Summer '23 para administradores o desarrolladores para obtener una insignia exclusiva de la comunidad.

Otras lecturas

Sobre el Autor

Julián Duque es un defensor principal de desarrolladores en Salesforce, donde se enfoca en Node.js, JavaScript y desarrollo backend. Le apasiona la educación y el intercambio de conocimientos y ha estado involucrado en la organización de comunidades tecnológicas y de desarrolladores desde 2001.

Sígalo en Twitter @julian_duque , @julianduque.co en Bluesky o LinkedIn .

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Contact Centers vs. Call Centers: ¿Cuál es la diferencia?

Contact Centers vs. Call Centers: ¿Cuál es la diferencia?

Los términos centro de llamadas y centro de contacto a menudo se usan indistintamente y, aunque ambos son centros de atención al cliente, no son exactamente lo mismo. Los centros de llamadas se enfocan únicamente en las comunicaciones telefónicas, mientras que los centros de contacto modernos brindan soporte a través de una variedad de canales, que incluyen teléfono, correo electrónico, chat en vivo, artículos de conocimiento de autoservicio y chatbots. Profundicemos en las diferencias entre un centro de contacto y un centro de llamadas, para que pueda decidir el mejor enfoque de servicio al cliente para su negocio.

Los clientes de hoy tienen grandes expectativas para las empresas con las que hacen negocios. Descubrimos que el 94% de los clientes dicen que una experiencia positiva de servicio al cliente los hace más propensos a realizar una compra nuevamente. Sin embargo, solo el 13% de los clientes dicen que pueden resolver sus problemas con poco esfuerzo.

¿Cómo es una experiencia positiva del cliente? Se trata de reunirse con los clientes donde están, utilizando los métodos de comunicación y la tecnología que prefieren, y brindando una variedad de opciones de servicio, en lugar de limitar el servicio solo por teléfono. A medida que las preferencias de los clientes evolucionan con la tecnología, más centros de llamadas se están transformando en centros de contacto .

Modernice su centro de contacto

La combinación correcta de canales y herramientas de servicio al cliente puede ayudarlo a ser más eficiente y mejorar la satisfacción del cliente. Nuestra guía revela cómo las organizaciones de servicio de alto rendimiento lo hacen posible.

¿Qué es un centro de llamadas?

Un centro de llamadas es un grupo de servicio al cliente remoto o local que brinda servicio al cliente por teléfono. Los centros de llamadas pueden emplear desde unos pocos agentes para pequeñas y medianas empresas hasta cientos para grandes corporaciones.

Cada agente generalmente maneja varias llamadas telefónicas por día para ayudar con los problemas de los clientes, desde consultas de facturación hasta problemas técnicos complejos. Algunos centros de llamadas utilizan software de administración de relaciones con los clientes (CRM) para resolver problemas más rápido y proporcionar a los agentes datos de clientes, pero muchos centros de llamadas todavía están trabajando para adoptar esta tecnología.

Un centro de contacto es un centro de servicio al cliente que proporciona una variedad de canales de comunicación, incluidos teléfono, correo electrónico, redes sociales, chat, SMS y mensajería, videoconferencia , uso compartido de pantalla y más. Los agentes suelen tener la experiencia para trabajar en todos estos canales o en un subconjunto especializado según la estructura de su equipo.

Un centro de contacto también utiliza la tecnología CRM para capacitar a los agentes para ayudar a los clientes, acelerar los tiempos de respuesta y brindar interacciones y ofertas personalizadas.

Las preferencias de comunicación del cliente varían ampliamente. Alguien que está en movimiento puede marcar una línea de servicio al cliente, mientras que alguien en su escritorio puede comunicarse con un agente a través del chat en vivo.

Cuando los centros de contacto enrutan las solicitudes de múltiples canales a los agentes de servicio en función de su disponibilidad y conjunto de habilidades, los agentes de servicio pueden realizar múltiples tareas y aumentar su eficiencia.

Una métrica clave para el éxito del centro de contacto es la reducción del trabajo manual de los agentes. Los agentes tienen tareas como notas de casos, transferencias de datos y enrutamiento de llamadas, lo que puede reducir la velocidad y la eficiencia del servicio que brindan.

Los centros de contacto utilizan la automatización y la inteligencia artificial (IA) para reducir estas tareas de la carga de trabajo de sus agentes para que puedan concentrarse en resolver los problemas de los clientes y brindar una experiencia de servicio perfecta. Estas tecnologías pueden hacer cosas como transcribir automáticamente llamadas telefónicas, sugerir respuestas de chat en vivo o encontrar artículos de ayuda para que los agentes los compartan con los clientes.

La IA generativa está facilitando aún más la eficiencia. Cuando se aplica al servicio, la IA generativa puede tomar datos del cliente, como una consulta del cliente o información de la cuenta, y crear algo nuevo a partir de ellos. Algunos ejemplos de estos poderosos casos de uso incluyen la generación automática de artículos de conocimientos basados en datos de resolución de casos, brindar respuestas personalizadas a preguntas de chat en vivo y extraer datos en tiempo real para ayudar a los agentes a resolver los problemas de los clientes rápidamente.

Los centros de llamadas tienen un enfoque singular: brindar un servicio de calidad por teléfono. Los centros de contacto adoptan un enfoque omnicanal que muchos consumidores encuentran más conveniente (ya no hay que esperar en la línea telefónica ni escuchar la serenata de la música del ascensor).

Elección de canal

Sus clientes solo quieren que sus problemas se resuelvan lo más rápido posible. Al final del día, debe reunirse con ellos donde están a través de sus canales de comunicación preferidos, que variarán según el tipo de servicio o producto que ofrezca.

Con un centro de contacto, puede llegar a los clientes en estos canales:

  • Teléfono
  • Correo electrónico
  • Medios de comunicación social
  • Formularios en línea
  • Bases de conocimiento
  • Portales de autoservicio para clientes
  • Chat en línea/soporte en vivo
  • aplicaciones de mensajería
  • Texto/SMS
  • Aplicaciones móviles
  • Comunidades y foros de discusión
  • Soporte de vídeo

Su industria influirá en gran medida en los canales de servicio al cliente que brinda su empresa. ¿Eres una empresa de servicios públicos? Entonces, el autoservicio , los SMS y el teléfono son fundamentales para su centro de contacto. ¿Qué tal un minorista de comercio electrónico? Sus clientes ya están comprando en línea; poder comunicarse con usted a través de la web o el chat móvil probablemente sea importante para ellos.

A pesar de la expansión y aceptación de los canales digitales y la variedad de preferencias de los clientes, el 81 % de los profesionales de servicios dicen que el teléfono es un canal preferido para problemas complejos, por lo que incluso los centros de contacto digitales deben mantener abiertas las líneas telefónicas.

Servicio al cliente personalizado

Una diferencia importante entre un centro de llamadas y un centro de contacto es el uso de los datos del cliente y la tecnología CRM para brindar un servicio al cliente personalizado.

Cuando el teléfono es la única opción para ponerse en contacto con una empresa, las interacciones tienden a ser simples, como restablecer la contraseña de una cuenta o hacer una pregunta, y menos frecuentes con el mismo cliente. Y dado que la tecnología CRM solo la utilizan algunos centros de llamadas, los agentes pueden tener información limitada sobre un cliente y sus preferencias.

Los centros de contacto tienden a manejar tareas más complejas. Los problemas más simples de los clientes generalmente se resuelven a través de canales de bajo contacto (piense en artículos de autoservicio, chatbots , SMS o chat en vivo), mientras que los problemas más complejos se manejan por teléfono.

Un agente de servicio en un centro de contacto usa la instancia de CRM de la empresa para hacer referencia a interacciones pasadas , ver qué productos o paquetes tiene actualmente el cliente y brindar opciones personalizadas de ventas cruzadas o adicionales. Esto es posible gracias a la integración de los datos de ventas, servicios, marketing y comercio, todos canalizados a través de una única plataforma de CRM.

Habilidades de agente

Su elección de centro de contacto frente a centro de llamadas también se reducirá a las habilidades de sus agentes y al presupuesto y los recursos disponibles para la capacitación de agentes.

Dado que los agentes del centro de contacto utilizan más canales digitales y asincrónicos que los centros de llamadas, deben poder realizar múltiples tareas y deben sentirse cómodos con la tecnología digital. Los agentes del centro de llamadas, por otro lado, deben pensar rápidamente y mantener la calma para reducir las situaciones en tiempo real.

Los agentes de servicio al cliente deben tener la combinación correcta de habilidades blandas y duras para cumplir con las expectativas del cliente. Cuando se trata de habilidades blandas, deben ser comunicadores y oyentes competentes, buenos pensadores críticos y solucionadores de problemas, y ser capaces de resolver conflictos en situaciones tensas. Cuando se trata de habilidades duras, necesitan saber cómo usar tableros, herramientas de servicio, consolas, herramientas de automatización y acceso a datos de clientes para hacer bien su trabajo y hacer recomendaciones más personalizadas a los clientes en tiempo real.

Los centros de llamadas son más sencillos de operar, con altos costos operativos provenientes de la plantilla y los sistemas telefónicos o el software. Su simplicidad puede ser atractiva para las empresas que desean evitar complicar demasiado su estrategia de servicio al cliente, especialmente si tienen una base de clientes pequeña y conocida que prefiere obtener el servicio por teléfono.

Por el contrario, los centros de contacto personalizan la experiencia del cliente al proporcionar varios canales de servicio según las preferencias del cliente. Esto facilita que los problemas se resuelvan de forma asincrónica y los problemas más complejos se resuelvan por teléfono. Este enfoque rentable es lo que llamamos " Cambio a escala ".

El 48% de los clientes han cambiado de marca para un mejor servicio al cliente.

Informe de estado del cliente conectado de Salesforce

Si bien los centros de contacto generalmente tienen costos continuos más altos debido a las licencias de software, sus clientes tienen una mejor experiencia de servicio cuando pueden elegir cómo interactúan con su negocio. Esto significa que sus clientes se sienten satisfechos o incluso encantados después de una interacción de servicio, lo que conducirá a una puntuación CSAT más alta , una mayor lealtad del cliente y generará más ingresos de clientes repetidos y renovados.

Estrategia de call center vs. contact center

Si no está seguro de qué estrategia de servicio al cliente es adecuada para usted, hágase las siguientes preguntas:

  • ¿Qué tan grande es la base de clientes que atiendes?
    • R: Daremos servicio a un grupo demográfico de nicho pequeño
    • B: Tendremos una base de clientes amplia y diversa
  • ¿Qué tan difícil será resolver estos problemas para sus clientes?
    • R: La mayoría de los problemas son fáciles de resolver.
    • B: Los problemas variarán en complejidad
  • ¿Qué tan importante es para su empresa brindar un servicio personalizado al cliente?
    • R: El servicio personalizado no es una prioridad para mi negocio
    • B: El servicio personalizado es una prioridad para mi negocio
  • ¿Qué tan importante es para su negocio ofrecer múltiples canales de soporte?
    • R: Tener múltiples canales de soporte no es muy importante para mi negocio
    • B: Tener múltiples canales de soporte es importante para mi negocio
  • ¿Su empresa tiene un presupuesto de servicio limitado o puede admitir múltiples licencias de software y tecnología?
    • R: Mi negocio tiene un presupuesto limitado para servicio al cliente
    • B: Mi empresa tiene presupuesto para admitir múltiples licencias de software y tecnologías

Si respondió en su mayoría con A, entonces una estrategia de centro de llamadas puede ser la mejor opción para su negocio. Si respondió con B en su mayoría, entonces un centro de contacto es la mejor estrategia para usted.

El 94% de los clientes dice que un buen servicio al cliente los hace más propensos a realizar otra compra.

Informe de estado del cliente conectado de Salesforce

El servicio al cliente es el negocio de asegurarse de que sus clientes se mantengan felices y leales. Los centros de llamadas siguen siendo relevantes en ciertos contextos, pero el mundo está cambiando; asegúrese de que sus modelos de atención al cliente cambien con él.

Cree una mejor experiencia de centro de contacto

Vea cómo puede combinar IA, datos y CRM para conectarse en el canal correcto, personalizar cada conversación y escalar su servicio al cliente.

Seguir leyendo

Lista de todas las fórmulas disponibles para Salesforce Flow

Lista de todas las fórmulas disponibles para Salesforce Flow

Última actualización el 16 de mayo de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo averiguar todas las funciones de fórmula permitidas en un Flujo?

Objetivos:

Después de leer este blog, podrá:

  • Descubra todas las funciones de fórmula admitidas en Salesforce Flow
  • Ejecute SOQL para objetos de la API de herramientas
  • y mucho más

Isabella Stewart trabaja como administradora de Salesforce en Gurukul On Cloud (GoC). Quiere saber cómo encontrar todas las fórmulas disponibles para Salesforce Flow.

Práctica guiada (nosotros hacemos):

Con la Fórmula, puede crear cualquier cosa, desde ecuaciones matemáticas simples hasta cálculos más complejos y avanzados. En este artículo, aprenderá cómo encontrar todas las funciones de fórmula disponibles que se pueden usar en Salesforce Flow.

Si está buscando una explicación sobre cómo usar la columna de fórmula, consulte este artículo .

Hagamos una pausa aquí, familiarícese con los objetos API de herramientas FormulaFunction y FormulaFunctionAllowedType . contiene

Nombre del objeto
Detalles
FórmulaFunción Representa una función utilizada al construir una fórmula, incluidos ejemplos y usos. Este objeto está disponible en la API de herramientas versión 39.0 y posteriores.
CustomFielFormulaFunctionAllowedTyped Representa las funciones que se admiten en el contexto de la fórmula dada. Este objeto está disponible en la versión API 48.0 y posteriores.

Realice los pasos a continuación para obtener una cobertura de código confiable:

  1. Haga clic en Configuración | Consola de desarrollador .
  2. En el Editor de consultas, ingrese la siguiente consulta SOQL
    1. SELECCIONE Function.Name, Function.Label, Function.Description, Function.ExampleString FROM FormulaFunctionAllowedType where Type='Flow'
    2. Seleccione la casilla de verificación Usar API de herramientas .
    3. Haga clic en Ejecutar .

SELECCIONE Función.Nombre, Función.Etiqueta, Función.Descripción, Función.Cadena de ejemplo
FROM FormulaFunctionAllowedType donde Tipo='Flujo'

Lista de todas las fórmulas disponibles para Salesforce Flow

FórmulaFunción.Nombre FormulaFunction.Label FormulaFunction.Descripción FormulaFunction.ExampleString
1 abdominales abdominales Devuelve el valor absoluto de un número, un número sin su signo ABS (número)
2 ACOS ACOS Devuelve el arcocoseno del número en radianes, si el número dado está entre -1 y 1. De lo contrario, NULL. ACOS(número)
3 AGREGARMESES AGREGARMESES Agregue el número de meses a la fecha, usando la última fecha del mes si la fecha es el último día del mes o agregando el número de meses tiene menos días. AGREGARMESES(fecha,num)
4 Y Y Comprueba si todos los argumentos son verdaderos y devuelve VERDADERO si todos los argumentos son verdaderos Y (lógico1, lógico2,…)
5 ASCII ASCII Devuelve el punto de código del primer carácter de la cadena dada como un número. ASCII(texto)
6 COMO EN COMO EN Devuelve el arcoseno del número en radianes, si el número dado está entre -1 y 1. De lo contrario, NULL. ASIN(número)
7 UN BRONCEADO UN BRONCEADO Devuelve el arco tangente del número en radianes. ATAN(número)
8 ATAN2 ATAN2 Devuelve el arco tangente del cociente de y y x en radianes. ATAN2(y,x)
9 COMIENZA COMIENZA Comprueba si el texto comienza con los caracteres especificados y devuelve VERDADERO si es así. De lo contrario devuelve FALSO COMIENZA(texto, comparar_texto)
10 VALOR EN BLANCO VALOR EN BLANCO Comprueba si la expresión está en blanco y devuelve expresión_sustituta si está en blanco. Si la expresión no está en blanco, devuelve el valor de la expresión original. VALOR EN BLANCO (expresión, expresión_sustituta)
11 BR BR Inserta una etiqueta de interrupción HTML en fórmulas de cadena BR()
12 CASO CASO Compara una expresión con una serie de valores. Si la expresión es igual a cualquier valor, se devuelve el resultado correspondiente. Si no es igual a ninguno de los valores, se devuelve el resultado de otra cosa CASE(expresión, valor1, resultado1, valor2, resultado2,…,else_result)
13 CASESAFEID CASESAFEID Convierte una identificación de 15 caracteres en una identificación de 18 caracteres que no distingue entre mayúsculas y minúsculas CASESAFEID(id)
14 TECHO TECHO Redondea un número al entero más cercano, lejos de cero si es negativo TECHO(número)
15 CDH CDH Devuelve una cadena con el punto de código del primer carácter como el número dado. CHR(número)
dieciséis CONTIENE CONTIENE Comprueba si el texto contiene caracteres específicos y devuelve VERDADERO si los contiene. De lo contrario, devuelve FALSO CONTIENE(texto, comparar_texto)
17 porque porque Devuelve el coseno del número, donde el número dado en radianes COS(número)
18 TAZA DE CAMBIO TAZA DE CAMBIO Devuelva la tasa de conversión a la moneda corporativa para el CurrencyIsoCode dado, o 1.0 si la moneda no es válida. TIPO DE MONEDA (IsoCode)
19 FECHA FECHA Crea una fecha a partir de un año, mes y día. FECHA (año, mes, día)
20 FECHAHORAVALOR FECHAHORAVALOR Devuelve un valor de año, mes, día y hora GMT DATETIMEVALUE(expresión)
21 FECHAVALO FECHAVALO Crea una fecha a partir de su representación de fecha y hora o texto FECHAVALUE(expresión)
22 DÍA DÍA Devuelve el día del mes, un número entre 1 y 31 DÍA (fecha)
23 DÍA DEL AÑO DÍA DEL AÑO Devuelve el día del año calendario (del 1 al 366). DÍA DEL AÑO (fecha)
24 DISTANCIA DISTANCIA Devuelve la distancia entre dos ubicaciones utilizando la unidad proporcionada. DISTANCIA(ubicación, ubicación, unidad)
25 Exp Exp Devuelve e elevado a la potencia de un número dado EXP(número)
26 ENCONTRAR ENCONTRAR Devuelve la posición de la cadena search_text en text ENCONTRAR(buscar_texto, texto [, start_num])
27 PISO PISO Redondea un número hacia abajo, hacia cero al entero más cercano Numero de piso)
28 FORMATO DURACIÓN FORMATO DURACIÓN Formatee el número de segundos con días opcionales, o la diferencia entre horas o dateTimes como HH:MI:SS. FORMATDURATION(numSeconds[, includeDays] | dateTime/time, dateTime/time)
29 DESDEUNIXTIME DESDEUNIXTIME Devuelve la fecha y hora que representa el número dado como los segundos transcurridos desde el 1 de enero de 1970. DESDEUNIXTIME(número)
30 GEOLOCALIZACIÓN GEOLOCALIZACIÓN Devuelve una ubicación basada en la latitud y longitud proporcionadas. GEOLOCALIZACIÓN (latitud, longitud)
31 GETSESIONID GETSESIONID Devuelve el ID de la sesión actual. Esto puede ser útil en los hipervínculos a otras aplicaciones que utilizan las credenciales de salesforce.com para la autenticación. GETSESIONID()
32 HTMLENCODE HTMLENCODE Codifica texto y fusiona valores de campo para su uso en HTML HTMLENCODE(texto)
33 HIPERVÍNCULO HIPERVÍNCULO Crea un hipervínculo HIPERVÍNCULO (url, nombre_amistoso [, destino])
34 SI SI Comprueba si una condición es verdadera y devuelve un valor si es VERDADERO y otro valor si es FALSO. SI (prueba_lógica, valor_si_verdadero, valor_si_falso)
35 INCLUYE INCLUYE Determina si cualquier valor seleccionado en un campo de lista de selección múltiple es igual a un literal de texto que especifique. INCLUYE (multiselect_picklist_field, text_literal)
36 INITCAP INITCAP Devuelve el texto en minúsculas con el primer carácter de cada palabra en mayúsculas. INITCAP(texto)
37 ESTÁ EN BLANCO ESTÁ EN BLANCO Comprueba si una expresión está en blanco y devuelve VERDADERO o FALSO ESBLANCO(expresión)
38 ES NULO ES NULO Comprueba si una expresión es nula y devuelve VERDADERO o FALSO ESNULL(expresión)
39 ES NÚMERO ES NÚMERO Devuelve VERDADERO si el valor del texto es un número. De lo contrario, devuelve FALSO. ESNUMERO(Texto)
40 ISOSEMANA ISOSEMANA Devuelva el número de semana ISO 8601 para la fecha dada (del 1 al 53) para que la primera semana comience el lunes. ISOSEMANA(fecha)
41 ISOAÑO ISOAÑO Devuelve el año de 4 dígitos de la numeración de semanas ISO 8601 para la fecha dada, de modo que el primer día sea lunes. ISOAÑO(fecha)
42 ISPICKVAL ISPICKVAL Comprueba si el valor de un campo de lista de selección es igual a un literal de cadena ISPICKVAL(campo_lista_selección, literal_texto)
43 JSENCODE JSENCODE Codifica texto y valores de campo de combinación para su uso en JavaScript JSENCODE(texto)
44 JSINHTMLENCODE JSINHTMLENCODE Codifica texto y valores de campo combinados para su uso en JavaScript dentro de etiquetas HTML JSINHTMLENCODE(texto)
45 IZQUIERDA IZQUIERDA Devuelve el número especificado de caracteres desde el inicio de una cadena de texto IZQUIERDA(texto, num_chars)
46 LARGO LARGO Devuelve el número de caracteres en una cadena de texto LARGO(texto)
47 ENLACE A ENLACE A Devuelve el elemento de enlace HTML para el objetivo seleccionado con entradas opcionales expresadas como parámetros de consulta LINKTO(etiqueta, objetivo, id, [entradas], [sin anular])
48 LN LN Devuelve el logaritmo natural de un número LN(número)
49 REGISTRO REGISTRO Devuelve el logaritmo en base 10 de n REGISTRO (número)
50 MÁS BAJO MÁS BAJO Convierte todas las letras del valor a minúsculas INFERIOR (texto)
51 LPAD LPAD Rellene el lado izquierdo del valor con espacios o la cadena de relleno opcional para que la longitud sea padded_length LPAD(texto, padded_length [, pad_string])
52 MÁX. MÁX. Devuelve el mayor de todos los argumentos. MAX(número,número,…)
53 MCEILING MCEILING Redondea un número al entero más cercano, hacia cero si es negativo MCEILING(número)
54 PISO PISO Redondea un número hacia abajo al entero más cercano, lejos de cero si es negativo MFLOOR(número)
55 MEDIO MEDIO Devuelve un carácter desde la mitad de una cadena de texto, dada una posición inicial y una longitud MID(texto, núm_inicio, núm_caracteres)
56 MÍN. MÍN. Devuelve el menor de todos los argumentos. MIN(número,número,…)
57 MODIFICACIÓN MODIFICACIÓN Devuelve el resto después de dividir un número por un divisor MOD(número,divisor)
58 MES MES Devuelve el mes, un número entre 1 (enero) y 12 (diciembre) MES(fecha)
59 NO NO Cambia FALSO a VERDADERO o VERDADERO a FALSO No es lógico)
60 AHORA AHORA Devuelve una fecha y hora que representa el momento actual AHORA()
61 VALOR NULO VALOR NULO Comprueba si expresión es nula y devuelve expresión_sustituta si es nula. Si la expresión no es nula, devuelve el valor de la expresión original. NULLVALUE(expresión, expresión_sustituta)
62 O O Comprueba si alguno de los argumentos es verdadero y devuelve VERDADERO o FALSO. Devuelve FALSO solo si todos los argumentos son falsos O(lógico1,lógico2,…)
63 Pi Pi Devuelve pi PI()
64 PICKLISTCOUNT PICKLISTCOUNT Devuelve el número de valores seleccionados en una lista de selección múltiple. PICKLISTCOUNT(multiselect_picklist_field)
sesenta y cinco PREDECIR PREDECIR Devuelve una predicción de Einstein Discovery basada en un Id. de registro o una lista de campos y sus valores. PREDICT(PredDefId, [recordId] | [campo, valor, …])
66 REGEX REGEX Devuelve VERDADERO si Texto coincide con la expresión regular RegEx_Text. De lo contrario, devuelve FALSO. REGEX(Texto, RegEx_Text)
67 CONTRARRESTAR CONTRARRESTAR Devuelve la cadena de texto en orden inverso REVERSO (texto)
68 BIEN BIEN Devuelve el número especificado de caracteres desde el final de una cadena de texto DERECHA(texto, num_chars)
69 REDONDO REDONDO Redondea un número a un número específico de dígitos REDONDO(número,núm_dígitos)
70 RPAD RPAD Rellene el lado derecho del valor con espacios o la cadena de relleno opcional para que la longitud sea padded_length RPAD(texto, padded_length [, pad_string])
71 PECADO PECADO Devuelve el seno del número, donde el número dado en radianes SIN(número)
72 SQRT SQRT Devuelve la raíz cuadrada positiva de un número SQRT(número)
73 SUSTITUTO SUSTITUTO Sustituye texto_nuevo por texto_antiguo en una cadena de texto. Use SUSTITUIR cuando desee reemplazar texto específico en una cadena de texto SUSTITUIR (texto, texto_antiguo, texto_nuevo)
74 BRONCEARSE BRONCEARSE Devuelve la tangente del número, donde el número dado en radianes TAN(número)
75 TEXTO TEXTO Convierte un valor en texto usando un formato de visualización estándar TEXTO(valor)
76 HOY HOY Devuelve la fecha actual HOY()
77 RECORTAR RECORTAR Elimina todos los espacios de una cadena de texto excepto los espacios individuales entre palabras RECORTAR (texto)
78 TRONCO TRONCO Trunca un número a un número específico de dígitos TRUNC(número,núm_dígitos)
79 UNIXTIMESTAMP UNIXTIMESTAMP Devuelve la cantidad de segundos desde el 1 de enero de 1970 para la fecha dada, o la cantidad de segundos en el día para una hora. UNIXTIMESTAMP(fecha/hora)
80 SUPERIOR SUPERIOR Convierte todas las letras del valor a mayúsculas SUPERIOR (texto)
81 CÓDIGOURL CÓDIGOURL Codifica texto y valores de campo combinados para su uso en direcciones URL CÓDIGOURL(texto)
82 URLPARA URLPARA Devuelve la URL del destino seleccionado con entradas opcionales expresadas como parámetros de consulta URLFOR(objetivo, id, [entradas], [sin anular])
83 VALOR VALOR Convierte una cadena de texto que representa un número en un número VALOR(texto)
84 DÍA LABORABLE DÍA LABORABLE Devuelve el día de la semana para la fecha dada, usando 1 para el domingo, 2 para el lunes, hasta 7 para el sábado. DÍA DE LA SEMANA (fecha)
85 AÑO AÑO Devuelve el año de una fecha, un número entre 1900 y 9999 AÑO (fecha)

Evaluación formativa:

¡Quiero saber de ti!

¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

Seguir leyendo

Innovaciones de Tableau para desarrolladores | Aprende Moar Verano '23 ☁️

Innovaciones de Tableau para desarrolladores | Aprende Moar Verano '23 ☁️

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.

Innovaciones de Tableau para desarrolladores | Aprende Moar Verano '23 | Blog de desarrolladores de Salesforce

¡Únase a nosotros para Release Readiness Live esta semana! Los expertos en productos y los defensores de los desarrolladores analizarán y demostrarán las nuevas funciones en el lanzamiento de Summer '23 y, al final de nuestra transmisión, responderemos sus preguntas. Sintonice a las 9 am PT el 19 de mayo para la sesión de desarrolladores. ¿No puedes unirte a nosotros en vivo? La grabación se publicará unas horas después de que finalice la transmisión.

Introducción

Tableau lanzará muchas innovaciones nuevas e interesantes para los desarrolladores en Summer '23, incluido Tableau Embedding Playground, una colección de Postman para la API REST de Tableau y una nueva forma de personalizar y personalizar las vistas integradas en función de los atributos del usuario para las aplicaciones integradas.

Comience con el análisis incorporado

Si conoce Tableau, entonces sabe que puede crear visualizaciones poderosas (visualizaciones, para abreviar) que ayudan a las personas a ver y comprender sus datos. Si está creando una aplicación web, es posible que desee agregar visualizaciones relevantes de Tableau a su aplicación para mejorar la información que ofrece a sus clientes.

Tableau facilita la inserción de visualizaciones al proporcionar un botón Copiar código incrustado , que está disponible al hacer clic en el botón Compartir en la barra de herramientas de Tableau. Puede usar ese código para insertar una visualización de Tableau en una página web.

El código que obtiene del botón Copiar código incrustado es solo un punto de partida. ¿Qué sucede si desea filtrar la visualización en función de quién está viendo la página? Para crear una rica experiencia de análisis integrado para sus usuarios, debe usar Tableau Embedding API v3 . Con la API de inserción, puede aplicar filtros, establecer parámetros, recopilar datos que utiliza para impulsar otras acciones o agregar interfaces personalizadas para interactuar con la visualización.

OK, así que le gustaría ver lo que es posible. Pero si no está familiarizado con la API de incrustación, esto podría significar aprender una nueva biblioteca de JavaScript, leer páginas de material de referencia de la API y otra documentación, y luego configurar un entorno de desarrollo, solo para verificar algunas cosas. Ahora, hay una manera más fácil.

Bienvenido al patio de recreo

Tableau Embedding Playground le facilita el aprendizaje y la exploración de análisis integrados y la API de integración de Tableau. Todo lo que tiene que hacer es proporcionar la URL de la vista de Tableau que desea incrustar, personalizar la visualización, agregar las interacciones que desea probar y luego hacer clic en Ejecutar .

Nota: esta versión de acceso anticipado de Embedding Playground utiliza un libro de trabajo de muestra. Los fragmentos de código que agregan interacciones a la visualización integrada están optimizados para funcionar con esta muestra. Se han completado los nombres de las hojas de trabajo y las variables. Puede usar el Editor de código para editar el código JavaScript. Para esta versión, el panel HTML es de solo lectura, por lo que puede concentrarse por completo en personalizar y agregar interactividad a la visualización en Playground, sin tener que preocuparse por el estilo y el CSS.

El Embedding Playground tiene tres secciones principales:

  • El panel Vista previa , donde puede ver la visualización incrustada y los resultados de su código cambian cuando hace clic en Ejecutar
  • La vista Código , donde puede ver el código JavaScript y HTML que incrusta la visualización de Tableau.
  • El panel de control de la izquierda , donde configura la URL para la vista incrustada y sus propiedades de visualización, como el tamaño y la posición de la barra de herramientas, y donde también puede agregar interacciones, que vienen en forma de fragmentos de código que arrastra y suelta en el Panel JavaScript.

Personaliza el código

Embedding Playground usa Tableau Embedding API v3 para insertar la visualización en el panel de vista previa. La API de incrustación utiliza componentes web y proporciona un elemento HTML que representa la visualización de Tableau. Puede colocar este componente web ( <tableau-viz> ) en su página web como lo haría con cualquier elemento HTML, como una etiqueta <div> o <p> . El panel HTML en la vista Código muestra este componente web.

Este código HTML y un enlace a la biblioteca de la API de incrustación son todo lo que necesita para colocar una visualización de Tableau en una página web. Esto es esencialmente lo que obtiene si usa el botón Copiar código incrustado en Tableau Cloud. Pero hay mucho más que puede hacer, y Embedding Playground lo hace fácil.

<dx-code-block title language code-block="

 
 

«>

Supongamos que queremos aplicar un filtro a la visualización, de modo que solo muestre información que sea de interés para un conjunto específico de usuarios, o que destaque un punto que está tratando de resaltar (como mostrar ciertos lugares en un mapa, o conjuntos particulares de datos).

Con el componente web <tableau-viz> , tenemos acceso a la vista integrada de Tableau, o lo que llamamos el objeto Tableau viz. Si está familiarizado con Tableau, sabrá que un libro de trabajo de Tableau consta de hojas de trabajo, tableros e historias. O más exactamente, un libro de trabajo contiene un montón de hojas, algunas de las cuales son hojas de trabajo, algunas son tableros y otras son historias. Desde el objeto de visualización, podemos acceder al libro de trabajo y a todas las hojas de trabajo y tableros dentro del libro de trabajo. Para cada tipo de hoja, ciertas propiedades están disponibles y hay API (o métodos) específicos a los que puede llamar.

Usando el Embedding Playground, no tienes que memorizar todo eso. Digamos que su vista incrustada es un tablero. Si desea aplicar un filtro a la vista, simplemente haga clic en Agregar interacciones , haga clic en Tablero , haga clic en Filtros y luego arrastre y suelte la tarjeta Aplicar filtro en el panel de JavaScript, justo debajo de *** ¡Inserte su código a continuación! *** comentario.

En esta versión de acceso anticipado, el fragmento de código Aplicar filtro tiene el siguiente aspecto, con el nombre del filtro y sus valores ya completados. Cuando se publique Embedding Playground, los fragmentos de código tendrán marcadores de posición que se reemplazan con los nombres de filtro y valores para su viz. Tenga en cuenta que el Editor de código está en pleno funcionamiento, por lo que puede modificar los valores (cambiar o agregar diferentes estados). Darle una oportunidad. Haga clic en Ejecutar y vea los resultados.

Ven al Playground para enterarte de las novedades

Los desarrolladores de Tableau están ocupados trabajando en nuevas funciones para mejorar el análisis integrado. A medida que se introduzcan nuevos métodos y propiedades, primero se anunciarán en el Programa para desarrolladores y se resaltarán en el Área de juegos de incrustación. Si es un desarrollador experimentado, Embedding Playground podría ser un útil borrador para probar nuevas ideas y trabajar con nuevas API a medida que se presentan. Con Playground, puede probar rápidamente métodos nuevos y existentes y verificar su código sin la sobrecarga de iniciar un nuevo proyecto.

En versiones futuras de Embedding Playground, podrá proporcionar las URL para sus propias visualizaciones y usar Playground como una aplicación conectada , que ofrece una experiencia de autenticación segura y sin problemas basada en relaciones de confianza y con creación web integrada. Además, agregaremos nuevos fragmentos de código para proporcionar plantillas para las interacciones.

Use el código de Playground para impulsar el desarrollo

Puede usar la barra de menú de botones para descargar o copiar el código. El código descargado o copiado está contenido en un solo archivo HTML. Este archivo contiene el código HTML que define el componente web <tableau-viz> y el código JavaScript que agregó cuando agregó interacciones. Puede utilizar este código como punto de partida para desarrollar sus aplicaciones integradas. O copie el código para su necesidad de interacciones específicas, como filtrar la visualización, establecer parámetros o agregar menús contextuales personalizados. Para obtener más información sobre el uso del código para incrustar, consulte los documentos de Tableau Embedding API v3 .

¿Ya leíste lo suficiente? ¡Pruebe Tableau Embedding Playground ahora y permanezca atento a más información!

Colección Tableau Postman (API REST)

Si alguna vez usó la API REST de Tableau , sabe que es una parte esencial de la gestión y administración de usuarios y contenido en Tableau Cloud y Tableau Server. Con la API REST de Tableau, puede hacer mediante programación todo lo que puede hacer con la interfaz de usuario en los sitios de Tableau Server y Tableau Cloud. La API utiliza el conocido protocolo de comunicaciones cliente-servidor a través de HTTP, utilizando solicitudes web estándar. Puede consultar y configurar recursos, establecer permisos y controlar el acceso.

Probablemente también sepa que configurar una sesión para enviar esas solicitudes no siempre es fácil. Conectarse al servidor, autenticarse y adquirir los tokens de acceso para comunicarse con Tableau Server o el sitio de Tableau Cloud puede ser algo complicado. Particularmente si solo está interesado en encontrar rápidamente el nombre de una fuente de datos o buscar un identificador de recurso. Una de las herramientas a las que recurren las personas para generar solicitudes HTTP para puntos finales REST es Postman, una aplicación que puede descargar o usar en un navegador que facilita la creación de solicitudes y el almacenamiento de esas solicitudes en colecciones. La buena noticia es que ahora no necesitas empezar de cero.

Los desarrolladores de Tableau han creado una colección de Postman para la API de REST de Tableau que está disponible junto con las otras colecciones para las API de Salesforce en el espacio de trabajo de Postman del desarrollador de Salesforce . Ya no necesita buscar en la documentación de la API ni recurrir a prueba y error para crear sus propias solicitudes. El espacio de trabajo del cartero del desarrollador de Salesforce tiene el conjunto completo de puntos finales de la API REST de Tableau por los que puede navegar y elegir los que necesita usar. Postman te permite definir y guardar las variables que necesitas para tu conexión. También puede usar Postman para generar las solicitudes en diferentes lenguajes de programación como Python, JavaScript y cURL, de modo que pueda incorporar la solicitud en scripts o en sus aplicaciones integradas.

Puede encontrar más información sobre la API REST de Tableau y lo que la colección Postman puede hacer por usted en la publicación de blog de Stephen Price, Use la API REST de Tableau con Postman para diseñar integraciones.

Funciones de atributo de usuario

La entrega de información personalizada y personalizada es uno de los principales objetivos cuando se integran visualizaciones de Tableau en aplicaciones web. Desea asegurarse de que los usuarios que usan su aplicación tengan la mejor experiencia posible y tengan acceso a la información que no solo es relevante para sus necesidades, sino que también son datos que pueden ver.

Con ese fin, Tableau introdujo dos nuevas funciones de usuario ( USERATTRIBUTE y USERATTRIBUTEINCLUDES ) que brindan un nuevo nivel de personalización y control cuando crea aplicaciones integradas que usan aplicaciones conectadas a Tableau para la integración de aplicaciones. A partir de Tableau 2023.1, cuando autoriza el acceso a contenido incrustado mediante aplicaciones conectadas, ahora puede pasar atributos de usuario en el token web JSON (JWT). Para obtener más información, consulte: Controlar y personalizar el acceso a datos mediante atributos de usuario .

Usted define cuáles son estos atributos de usuario y, según su organización, podrían ser atributos basados en roles de trabajo, departamentos, nivel de gestión, autorización de seguridad, pertenencia a grupos, etc. Estos atributos de usuario siguen el modelo de control de acceso basado en atributos (ABAC), que le brinda flexibilidad en la forma en que diseña sus aplicaciones web. Por ejemplo, podría crear un único portal web que sirva a diferentes grupos proporcionando diferentes vistas de esos datos en función de los atributos. Para ver cómo puede aplicar estos atributos en los libros de trabajo de Tableau, consulte Funciones de usuario: solo para incrustar flujos de trabajo en la nube . Cuando crea vistas en Tableau, los atributos de usuario le dan la opción de agregar filtros de seguridad de nivel de fila a las vistas que incrusta en las aplicaciones web.

Para obtener una excelente descripción general de cómo puede utilizar los atributos, consulte la publicación de blog:Desbloquee el poder de los análisis personalizados con funciones de atributos de usuario. Y para obtener experiencia práctica, consulte el tutorial: Tutorial de funciones de atributos de usuario .

Conclusión

Desde usuarios nuevos hasta desarrolladores experimentados, Tableau Embedded Playground facilita que todos desarrollen código para soluciones de análisis integradas. La colección de Postman para la API REST de Tableau puede ahorrarle tiempo y esfuerzo al encapsular el conjunto completo de terminales REST de Tableau en una interfaz fácil de usar y agregar atributos de usuario a sus aplicaciones integradas para brindar una experiencia más personalizada y segura para su usuarios

Únase al programa para desarrolladores de Tableau

Haga que Tableau trabaje para usted. Únase al Programa para desarrolladores de Tableau y descubra las últimas herramientas y funciones. Obtenga acceso a versiones preliminares y acceso anticipado a nuevas API y bibliotecas mientras aún están en desarrollo. Proporcione comentarios y ayude a dar forma a lo que está por venir.

Aprende MOAR

Nuestros gerentes de producto y defensores de desarrolladores están de vuelta para compartir las últimas características y funcionalidades que llegarán en Summer '23. Para ayudarlo a desarrollarse más rápido, hay una gran cantidad de contenido nuevo del equipo de relaciones con desarrolladores que cubre sus nuevas características favoritas. ¡Asegúrese de consultar Release Readiness Live el viernes 19 de mayo a las 9:00 a. m. PST, y lea lo último en el blog de desarrolladores de Salesforce para conocer más innovaciones relacionadas con desarrolladores en el lanzamiento de Summer '23!

¡Explore los trailmixes de Trailhead con aspectos destacados de lanzamiento clave para desarrolladores o administradores, o ambos! Siga y complete un trailmix de Learn MOAR Summer '23 para administradores o desarrolladores para obtener una insignia exclusiva de la comunidad.

Más recursos

Otras lecturas

Sobre el Autor

Dave Hagen trabaja como redactor técnico en el equipo de experiencia de contenido de Salesforce. Escribe documentación para la plataforma de desarrollo de Tableau y el análisis integrado. Puedes encontrarlo en LinkedIn .

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Escriba Apex simplificado y seguro con las actualizaciones de Spring '23 ☁️

Escriba Apex simplificado y seguro con las actualizaciones de Spring '23 ☁️

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.

Escriba Apex simplificado y seguro con las actualizaciones de Spring '23 | Blog de desarrolladores de Salesforce

La versión Spring '23 de Salesforce Platform, disponible en general a partir del 13 de febrero, agregó algunas actualizaciones fantásticas al lenguaje de Apex. Hemos implementado algunas de las actualizaciones de Spring '23 en la aplicación de ejemplo Apex-Recipes , lo que ha simplificado significativamente la base de código existente.

En esta publicación de blog, revisaremos las actualizaciones en Spring '23 para Apex con ejemplos de código. Estas actualizaciones ayudan a los desarrolladores a crear aplicaciones más seguras para sus organizaciones.

1. Operaciones de base de datos en modo usuario

Apex, de forma predeterminada, se ejecuta en modo Sistema con permisos elevados, lo que significa que los desarrolladores pueden pasar por alto los controles de seguridad sin darse cuenta al escribir código.

Antes de continuar, revisemos rápidamente los controles de seguridad que los administradores de Salesforce pueden colocar para garantizar que los usuarios solo puedan acceder y manipular los datos para los que están autorizados a ver o editar. Las viñetas a continuación resumen diferentes mecanismos para aplicar un modelo de seguridad detallado para sus datos de Salesforce.

  • CRUD significa "Crear, Leer, Actualizar y Eliminar", las cuatro operaciones básicas que un usuario puede realizar en un registro en Salesforce
  • FLS significa "Seguridad de nivel de campo", que determina qué campos dentro de un registro que un usuario puede ver o editar
  • El uso compartido de registros permite al administrador configurar reglas sobre quién puede ver o editar un registro en función de varios criterios.

Con las operaciones de base de datos en modo usuario , los desarrolladores pueden optar por ejecutar Apex en el contexto del usuario, lo que garantiza que se apliquen las reglas CRUD/FLS y de uso compartido del usuario configuradas. Veamos esto en acción con ejemplos de código detallados.

Aplicar CRUD/FLS y reglas de uso compartido para SOQL estático

Puede indicar el modo de operación usando la palabra clave WITH USER_MODE para el modo de usuario y WITH SYSTEM_MODE para el modo de sistema en su consulta SOQL. Vea el ejemplo a continuación.

<dx-code-block title language code-block="List accounts = [SELECT Name, ShippingCity, ShippingStreet FROM Account WITH USER_MODE];»>

En el ejemplo anterior, al usar la palabra clave WITH USER_MODE , la consulta respeta estas restricciones de seguridad:

  • Permisos de lectura en el objeto Cuenta (configurado para Perfil/Conjunto de permisos) para el usuario
  • Permisos de campo (FLS) para Nombre, Calle de envío y Ciudad de envío para el usuario
  • Configuración de nivel de registro (como valores predeterminados de toda la organización y reglas de colaboración) para el objeto Cuenta para el usuario

El WITH USER_MODE la palabra clave también es compatible con agregar SOQL para hacer cumplir CRUD/FLS y reglas de uso compartido de registros.

<dx-code-block title language code-block="List groupedResults = [SELECT SUM(AMOUNT) total FROM Opportunity WHERE AccountId = :accountId WITH USER_MODE];»>

En el ejemplo anterior, al usar la palabra clave WITH USER_MODE , la consulta respeta estas restricciones de seguridad:

  • Permisos de lectura en el objeto Oportunidad para el usuario
  • Permisos de campo (FLS) para Amount y AccountId (sí, incluso los campos utilizados en la cláusula SOQL WHERE se verifican para FLS) para el usuario
  • Acceso a nivel de registro (como valores predeterminados de toda la organización y reglas de colaboración) en el objeto Oportunidad para el usuario

Para obtener más ejemplos, consulte la clase SOQLRecipes de la aplicación apex-recipes.

Aplicar CRUD/FLS y reglas de uso compartido para SOQL dinámico

Los nuevos métodos Database (ver documentos ) ahora admiten un parámetro AccessLevel que le permite ejecutar operaciones de base de datos en modo de usuario en lugar de en el modo de sistema predeterminado. Veamos un código de ejemplo para ejecutar un SOQL dinámico en el modo de usuario.

<dx-code-block title language code-block="String query = 'SELECT ID, Name FROM Account LIMIT 1';
List lstAccounts = Database.query(query, AccessLevel.USER_MODE);»>

En el ejemplo anterior, el modo de usuario se aplicará de manera similar al ejemplo de SOQL estático que vimos en la sección anterior.

Para obtener más ejemplos, consulte la clase DynamicSOQLRecipes de apex-recipes. Hemos actualizado todos los métodos de la clase para usar el parámetro AccessLevel .

Hacer cumplir CRUD/FLS y reglas de uso compartido para SOSL

WITH USER_MODE o WITH SYSTEM_MODE también son compatibles con declaraciones SOSL (Lenguaje de búsqueda de objetos de Salesforce).

Veamos un ejemplo de una instrucción SOSL estática.

<dx-code-block title language code-block="String keyword = 'Alaska';
List<List> searchResults = [ FIND :keyword IN Name FIELDS RETURNING Account(Name), Contact(LastName, Account.Name) WITH USER_MODE ];»>

En el ejemplo anterior, al usar la palabra clave WITH USER_MODE , la consulta respeta estas restricciones de seguridad:

  • Permisos de lectura en los objetos Cuenta y Contacto para el usuario
  • Permisos de campo (FLS) para el campo Nombre en Cuenta y campo Apellido en Contacto para el usuario
  • Acceso a nivel de registro (como valores predeterminados de toda la organización y reglas de colaboración) en los objetos Cuenta y Contacto para el usuario

Para Dynamic SOSL, los nuevos métodos Search (ver documentos ) también admiten el parámetro AccessLevel similar a los nuevos métodos Database . A continuación se muestra un ejemplo de cómo usar el parámetro AccessLevel para ejecutar SOSL en el contexto de los usuarios.

<dx-code-block title language code-block="String query = 'FIND 'Edge*' IN ALL FIELDS RETURNING Account(ID,Name), Contact, Lead'; List<List> searchResults = Search.query(query, AccessLevel.USER_MODE);»>

Hacer cumplir CRUD/FLS y reglas de uso compartido para DML

Las operaciones de la base de datos pueden especificar el modo de usuario o sistema utilizando las palabras clave as user o as system .

El siguiente es un código de ejemplo que ejecuta DML en el modo de usuario aplicando CRUD/FLS y reglas de uso compartido.

Para Dynamic DML, los desarrolladores pueden utilizar el parámetro AccessLevel para ejecutar operaciones de base de datos en el modo de usuario o en el modo de sistema.

Echemos un vistazo a un ejemplo de la aplicación apex-recipes para ver cómo puede diseñar métodos para que sean genéricos, de modo que el consumidor del método pueda decidir ejecutar el código en el modo de usuario o de sistema.

El fragmento de código siguiente muestra cómo invocar este método en el modo de usuario.

El siguiente fragmento de código muestra cómo invocar este método en el modo de sistema.

Para obtener más ejemplos, consulte la clase DMLRecipes de la aplicación apex-recipes.

Consideraciones importantes

  1. Las operaciones de la base de datos en modo usuario generan excepciones de seguridad si se encuentra una infracción CRUD/FLS. Si tiene un requisito para evitar excepciones y aún aplicar la seguridad, use el método Security.stripInaccessible() (consulte los documentos ). Consulte la clase StripInaccessibleRecipes (ver documentos ) de la aplicación apex-recipes para ver ejemplos de código.
  2. Si usa la palabra clave WITH SECURITY_ENFORCED en sus declaraciones SOQL para hacer cumplir CRUD/FLS, ahora le recomendamos que use la palabra clave WITH USER_MODE en su lugar debido a las siguientes razones:
    1. La consulta SOQL que usa la palabra clave WITH USER_MODE admite muchas innovaciones nuevas, como reglas de restricción, reglas de alcance y cualquier otra operación de seguridad para el acceso a datos y CRUD/FLS, que la plataforma puede agregar en el futuro, por lo que es una especie de prueba del futuro
    2. La consulta SOQL que usa la palabra clave WITH USER_MODE maneja casos de uso de seguridad complejos mucho mejor. Por ejemplo, WITH USER_MODE es compatible con SOSL y consultas polimórficas .
    3. Las declaraciones SOQL que usan la palabra clave WITH USER_MODE manejan CRUD/FLS para los campos usados en la cláusula where y order by o campos usados en la consulta de relación o búsqueda polimórfica
    4. Las consultas SOQL que utilizan la palabra clave WITH USER_MODE funcionan mucho mejor en comparación con el uso WITH SECURITY_ENFORCED
  3. El modo de usuario anula la configuración de nivel de clase para la consulta SOQL o DML escrita en modo de usuario. Exploremos esto con el siguiente código de ejemplo.

<dx-code-block title language code-block="public without sharing ExampleCls { public static List getAccount() { String query = ‘SELECT Id FROM Account Limit 1’; return Database.query(query, AccessLevel.USER_MODE); } }»>

En el ejemplo anterior, aunque la clase Apex está configurada para ejecutarse en el contexto del sistema (sin la palabra clave compartida), la consulta SOQL se ejecuta en el modo de usuario, lo que refuerza la seguridad. El modo de usuario para la operación (SOQL/SOSL o DML) anula el uso compartido a nivel de clase.

2. Pasar dinámicamente variables de vinculación a consultas SOQL

Spring '23 agregó nuevos métodos como Database.queryWithBinds , Database.getQueryLocatorWithBinds y Database.countQueryWithBinds .

Estos métodos proporcionan los siguientes beneficios:

  • Anteriormente, si los desarrolladores usaban variables de vinculación en SOQL dinámico (usando el método Database.query ) que están fuera de contexto, la consulta no podía resolver las variables. Con queryWithBinds , las variables de vinculación de la consulta se resuelven directamente desde un parámetro Map con una clave en lugar de variables de código de Apex.
  • Con Database.queryWithBinds , los ataques de inyección SOQL se evitan automáticamente.

Echemos un vistazo a un ejemplo de código para comprender el segundo punto con más profundidad.

<dx-code-block title language code-block="public static List simpleBindingSoqlQuery(Map bindParams) { String query = ‘SELECT Id, Name ‘ + ‘FROM Account ‘ + ‘WHERE name = :name’; return Database.queryWithBinds( query, bindParams, AccessLevel.USER_MODE );
}»>

El código anterior ejecuta un SOQL dinámico en el modo de usuario. El método acepta un parámetro Map y se puede llamar usando el código a continuación.

<dx-code-block title language code-block="String accountName = 'Codey And Co';
Map nameBind = new Map{‘name’ => accountName};
List accounts = simpleBindingSoqlQuery(nameBind);
System.debug(accounts);»>

Tenga en cuenta que no es necesario que nos aseguremos de que el nombre de la variable esté en el mismo ámbito de método que la consulta dinámica. Además, no es necesario usar el método String.escapeSingleQuotes para el valor en la variable name cuando se usa queryWithBinds .

Para obtener más ejemplos de código, consulte esta solicitud de incorporación de cambios en nuestro repositorio de GitHub apex-recipes.

3. Especifique un retraso en la programación de trabajos en cola

Otra característica importante que lanzamos en Spring '23 es la capacidad de especificar demoras para trabajos programados que se pueden poner en cola.

Puede ser beneficioso ajustar el tiempo antes de que se ejecute el trabajo en cola en los siguientes casos de uso:

  • Si el sistema externo tiene una velocidad limitada y puede sobrecargarse con trabajos en cola encadenados que realizan llamadas rápidas
  • Al sondear los resultados, y ejecutar demasiado rápido puede provocar el uso desperdiciado de los límites diarios de Apex asíncrono

Usa el método System.enqueue(queueable, delay) (ver docs ) para especificar retrasos. Los retrasos pueden variar de cero a 10 minutos. Veamos un ejemplo para comprender mejor esta función.

El ejemplo anterior agrega un trabajo para la ejecución asincrónica retrasada al pasar una instancia de la implementación de su clase de la interfaz Queueable para la ejecución. Hay un retraso mínimo de cinco minutos antes de que se ejecute el trabajo.

Especificar un retraso predeterminado en toda la organización en la programación de trabajos en cola

Actualmente, si tiene un trabajo en cola de Apex, utiliza el tiempo estándar en cola sin demoras adicionales. Los administradores pueden definir un retraso predeterminado en toda la organización para todos los trabajos en cola que no especifican retraso usando
System.enqueue(queueable, delay) . Este es principalmente un mecanismo para manejar trabajos fuera de control que podrían estar ejecutándose demasiado rápido.

Importante consideración

Cuando establece el retraso en 0 (cero), el trabajo en cola se ejecuta lo más rápido posible. Con trabajos en cola encadenados, implemente un mecanismo para ralentizar o detener el trabajo si es necesario. Sin un mecanismo a prueba de fallas de este tipo, puede alcanzar rápidamente el límite de Apex asíncrono diario.

También hay una próxima función Beta en la versión Summer '23 (planificada para estar disponible el 10 de junio de 2023 en todas las organizaciones) que permite a los desarrolladores controlar la profundidad de los trabajos en cola encadenados.

4. Obtenga el SObject de origen de una instancia DescribeFieldResult usando el nuevo método getSObjectType

El método getSObjectType (ver documentos ) en el objeto DescribeFieldResult (ver documentos ) es un método de mejora de la calidad de vida del desarrollador que se implementó en Spring '23.

Anteriormente, los desarrolladores tenían que hackear y escribir código adicional para obtener el objeto de origen de la información del esquema de campos obtenida a través de la descripción del campo. Puede consultar las soluciones anteriores a través de esta publicación de stackexchange .

A continuación se muestra un ejemplo de código de cómo usar el nuevo método getSObjectType .

Con el método getSObjectType , los desarrolladores ya no tienen que pasar el nombre del objeto como una cadena. Consulte un ejemplo más completo en las notas de la versión de Spring '23.

Actualizaciones de herramientas

Hemos actualizado el servidor de idioma de Apex para admitir las últimas adiciones de sintaxis, como insert as user, insert as system y mucho más. Y ahora admitimos las últimas adiciones de sintaxis en el lanzamiento reciente de las Extensiones de Salesforce para VSCode .

También quiero agradecer a Dang Mai por actualizar el complemento más bonito para Apex (usado para formatear el código Apex automáticamente) para admitir todas las palabras clave introducidas para las operaciones de la base de datos en modo usuario.

Conclusión

En conclusión, la versión Spring '23 de Salesforce incluye varias actualizaciones. Mediante el uso de estas nuevas funciones, los desarrolladores pueden crear aplicaciones más eficaces y seguras para sus organizaciones.

Los equipos de productos de Apex no se detienen ahí y hay más innovaciones en la hoja de ruta. Puede obtener una vista previa de lo que viene para Apex en Summer '23 (nuestro próximo lanzamiento) en la vista previa de las notas de la versión . También recomiendo ver la grabación de la sesión TrailblazerDX '23, Apex: What's New and What's Coming , para aprender más sobre lo que se está cocinando.

Referencias adicionales

Sobre el Autor

Mohith Shrivastava es promotor de desarrollo en Salesforce con una década de experiencia en la creación de productos a escala empresarial en la plataforma de Salesforce. Actualmente se está enfocando en las herramientas para desarrolladores de Salesforce, Flow, Apex y Lightning Web Components en Salesforce. Mohith se encuentra actualmente entre los principales contribuyentes en Salesforce Stack Exchange, un foro de desarrolladores donde los desarrolladores de Salesforce pueden hacer preguntas y compartir conocimientos. Puedes seguirlo a través de su Twitter @msrivastav13 .

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

¡La convocatoria de participación para desarrolladores de Dreamforce 2023 está abierta! ☁️

¡La convocatoria de participación para desarrolladores de Dreamforce 2023 está abierta! ☁️

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.

¡La convocatoria de participación para desarrolladores de Dreamforce 2023 está abierta! | Blog de desarrolladores de Salesforce

Developer Track en Dreamforce 2023 es la plataforma para que los desarrolladores brinden contenido atractivo, innovador y accionable que puede ayudar a otros desarrolladores a elevar sus carreras e impulsar el éxito de sus negocios. ¡Hoy, la convocatoria de participación de Dreamforce '23 está oficialmente abierta !

La convocatoria de participación de Dreamforce permanecerá abierta hasta el martes 6 de junio de 2023 a las 11:59 p. m. (hora del Pacífico). Informaremos a todos los remitentes de su estado de aceptación en junio.

¿Por qué deberías presentarte en Dreamforce?

A menudo tengo conversaciones con desarrolladores que tienen habilidades e ideas impresionantes, pero que tienen miedo de presentar. Me dicen cosas como "No soy lo suficientemente bueno" o "Mis ideas no serán de interés para otros" o "Solo los expertos en desarrollo de Salesforce con mucha experiencia pueden presentar un gran contenido". Sin embargo, en la mayoría de los casos, estos son conceptos erróneos.

Durante esas conversaciones, suelo decir: “Cuéntame sobre un proyecto en el que has estado involucrado. ¿Cómo resolviste los desafíos que enfrentaste? ¿Qué aprendiste de esa experiencia? ¿Qué herramientas creó o incorporó su equipo y qué procesos estableció para ayudarlo a tener éxito más rápido en proyectos futuros? Y siempre recibo excelentes respuestas, ideas que a otros desarrolladores les encantaría saber y de las que se beneficiarían.

Por eso, me gustaría animarte a que no tengas miedo. Si le apasionan las tecnologías de desarrollo de Salesforce y tiene ideas para compartir, asegúrese de enviarlas. Otros desarrolladores están ansiosos por aprender de usted, y le brindaremos orientación y herramientas para realizar una presentación exitosa.

¿Cuál es la diferencia entre los tipos de sesión?

Las sesiones de grupo se llevan a cabo en salas de sesión dedicadas con alrededor de 100+ asientos. Las sesiones de grupo se organizan en bloques de 40 minutos, lo que le da tiempo suficiente para profundizar en un tema. El formato también permite que los miembros de la audiencia interactúen con usted y le hagan preguntas. Recomendamos que planee 30 minutos para su presentación, dejando los últimos 10 minutos para preguntas y discusión.

Las sesiones de teatro se llevan a cabo en teatros y son en bloques de 20 minutos. Los asistentes de Dreamforce pueden acercarse y escuchar su sesión o tomar asiento (más de 80 asientos disponibles). Dado que las sesiones de teatro son más cortas, un formato fuerte es tener elementos procesables para que los desarrolladores aprendan en un período de tiempo corto, como hacer una inmersión estrecha y profunda. Este formato significa que no hay tiempo para preguntas y debates, sin embargo, los oradores pueden reunirse con miembros de la audiencia después de su presentación.

Proceso de envío de propuestas de sesiones

Primero, comencemos con el Título de la sesión . Debe ser algo que sea de interés para los desarrolladores de Salesforce, y debe redactarlo de manera que quede muy claro para los asistentes lo que se cubrirá (en no más de 60 caracteres). Recuerde, hay muchas opciones de contenido en Dreamforce, por lo que querrá que su tema sea muy claro.

El campo Resumen de la sesión es donde escribirás un breve párrafo (de no más de 200 caracteres) para decirnos rápidamente de qué vas a hablar. ¡Ser creativo! No solo explique su conjunto de diapositivas, sino que comparta sus ideas para interactuar con la audiencia. ¿Qué vas a construir/demostrar? ¿Qué debate liderarás? ¿Qué se llevará su audiencia a casa y compartirá con sus equipos? Aborde los beneficios de WIIFM (qué hay para mí). Recuerde, esto eventualmente se publicará en la guía de Dreamforce, y será la vista pública de lo que trata su charla. Debe ser convincente y comunicar claramente lo que los asistentes pueden esperar aprender de su sesión. Tendrá un campo adicional de 500 caracteres Por qué debería presentarse esta sesión para explicar mejor su resumen.

Para llenar la pista de Desarrollador con contenido increíble, solo revisamos las Propuestas de sesión completadas. Estas son presentaciones que incluyen tanto un tema como oradores para una sesión. No revisaremos las nominaciones de oradores para la pista de Desarrollador.

El campo Quién es su audiencia principal es un campo de selección única, por lo que para ser considerado para la pista de Desarrollador, elija "Desarrollador".

La pista de desarrolladores en Dreamforce recibe varios cientos de propuestas para llenar un número mucho menor de espacios para hablar. De hecho, para un evento típico de Dreamforce, recibimos alrededor de 1,000 presentaciones por solo unos pocos cientos de espacios, por lo que la competencia es feroz. Por lo tanto, mientras crea el título y el resumen de su sesión, piense en cómo puede hacer que el suyo se destaque del resto (¡y sea elegido!) a medida que avanza en la revisión de la sesión.

Si tiene más de un tema que le gustaría proponer, complete el proceso de envío nuevamente para cada tema.

¿Qué tipo de sesiones estamos buscando?

Estamos buscando sesiones divertidas y atractivas que brinden contenido procesable que ayude a los desarrolladores de Salesforce a desarrollar sus habilidades, elevar sus carreras y brindar soluciones tecnológicas innovadoras para sus empresas.

Aquí hay algunas ideas para las sesiones que nos gustaría ver:

  1. Habla sobre un tema que te apasione. Esto podría ser sobre una función específica, una solución que le encantó o algo que le guste mucho y que esté respaldado por su experiencia personal. El primer paso para lograr que a tu audiencia le encante escucharte es que a ti te encante lo que dices.
  2. Considere seriamente los aprendizajes y las lecciones que su audiencia obtendrá al escuchar su charla. Su tiempo es valioso y habrán elegido pasar parte de su agenda de Dreamforce contigo. Asegúrese de que estas cosas estén resaltadas en su resumen.
  3. ¿Ha adquirido experiencia en nuevas funciones o productos que se lanzaron recientemente? Si ha tenido acceso a una versión piloto o beta de la plataforma Salesforce, entonces puede estar en condiciones de brindar una perspectiva única sobre las próximas funciones y cambios. O, si es uno de los primeros en adoptar algunas de las actualizaciones recientes de la plataforma, es posible que otros puedan aprender de su experiencia.
  4. ¿Tiene una solución técnica inteligente que podría aplicarse a una amplia audiencia? Responda eso con cuidado, porque una solución que proporcionó para un problema específico podría no ser lo suficientemente genérica como para atraer a las masas.

Esta lista no es exhaustiva: si tiene una gran propuesta de sesión que no hemos mencionado, ¡nos encantaría escucharla!

Si desea obtener más consejos para mejorar sus habilidades de creación de contenido, creación de audiencia y presentación, consulte el módulo Trailhead de habilidades para hablar en público .

¿Qué pasa después?

Nuestro equipo central revisará su propuesta de sesión y se realizarán selecciones para garantizar que tengamos la mejor combinación de contenido valioso para desarrolladores de todos los niveles de experiencia. Le notificaremos si su sesión ha sido aceptada o no en junio.

Si se acepta su sesión, se lo conectará con un propietario de la sesión para que lo guíe a través del proceso de preparación, que incluye comentarios sobre su contenido y sesiones de práctica. También recibirá un pase de orador para asistir a Dreamforce 2023. Si ya se registró para asistir, recibirá instrucciones sobre cómo reembolsar ese registro o transferirlo a otra persona.

Si no se acepta su sesión, hay otros eventos, incluidas conferencias comunitarias y grupos de desarrolladores que pueden estar interesados en que presente su contenido.

¿Listo para enviar su idea de presentación de desarrollador para Dreamforce 2023? Complete el proceso de envío antes del 6 de junio de 2023 para ser considerado. ¡Esperamos escuchar sus grandes ideas!

Sobre el Autor

Alba Rivas trabaja como Principal Developer Advocate en Salesforce. Actualmente se enfoca en el desarrollo de Lightning Web Components y Slack. Puedes seguirla en Twitter o LinkedIn.

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Los clientes bancarios están nerviosos: use datos y tecnología para restaurar su confianza

Los clientes bancarios están nerviosos: use datos y tecnología para restaurar su confianza

Los eventos recientes en la industria bancaria , como la caída de Silicon Valley Bank (SVB) , han causado conmoción e incertidumbre entre los clientes. Recuperar esa confianza requerirá un enfoque proactivo para administrar los riesgos en la banca y mejorar la forma en que los bancos se comunican con sus clientes.

Al igual que SVB, los bancos con riesgos de concentración (enfocando su negocio en un determinado tipo de empresa) tienen más probabilidades de encontrar problemas de liquidez cuando ocurren eventos como estos.

Esta situación fue más una crisis de confianza que una falta de fuerza o estabilidad en la industria de servicios financieros. Pero muchos clientes bancarios no lo sabían; estaban más centrados en su cobertura de seguro de depósitos a través de la FDIC o en sacar su dinero del mercado para sortear la volatilidad.

A través de una tecnología bancaria mejorada, puede comunicarse de manera efectiva con las partes interesadas internas y externas para navegar por estas situaciones, usar datos para adelantarse al impacto del cliente y unir a sus equipos para generar confianza en el cliente.

¿Está actualizado su plan de crisis?

Descubra cómo puede usar la tecnología para mitigar los riesgos en la banca, responder de manera proactiva durante las crisis y hacer crecer las relaciones con los clientes.

1. Sea transparente con sus partes interesadas

La transparencia es fundamental durante una crisis, ya que lo ayuda a administrar el riesgo en la banca. Mientras las cosas funcionan normalmente, tómese el tiempo para conocer a sus partes interesadas internas y externas. Personalizar sus interacciones con las partes interesadas ayuda a construir una relación más sólida con sus clientes, crear una confianza más profunda y, en última instancia, retener su base de clientes si algo sale mal.

Tómese el tiempo para conocerlos regularmente para que pueda saber cómo comunicarse mejor con ellos. ¿Necesita responder a una crisis en tiempo real? Este conocimiento inicial lo ayudará a segmentar rápidamente su base de clientes, identificar a cualquier persona en riesgo (como las empresas basadas en VC, en el caso de SVB) y asegurarles que tiene la situación bajo control.

“Ser transparente también lo ayuda a ofrecer orientación a los clientes que necesitan ser educados sobre la volatilidad del mercado de inmediato, mientras mantiene a raya otras preocupaciones de los clientes”, dijo Amir Madjlessi, director senior y asesor de la industria bancaria en Salesforce.

2. Obtener una visión más clara de los análisis ayuda a gestionar el riesgo en la banca

Como se mencionó anteriormente, centrarse en las relaciones con los clientes puede mejorar las tasas de retención y reducir la rotación. Pero eso es solo una parte de la gestión del riesgo en la banca. Puede usar sus datos para segmentar su base de clientes y seguir sus recorridos de clientes. Esto puede ayudarlo a detectar posibles problemas antes de que se conviertan en una crisis.

Datos y tecnología en la banca puede ayudarlo a administrar el riesgo y las relaciones. A través de un sistema de datos de clientes unificado, puede obtener una visión más completa de los clientes y su viaje, lo que le permite mantener un libro de negocios saludable.

Las herramientas de datos y análisis pueden ayudarlo a determinar rápidamente el desgaste de los clientes y los flujos de depósitos por diferentes segmentos y si hay una "corrida en el banco".

“El análisis puede ayudarlo a obtener información de un vistazo para ver los impactos en los planes y carteras financieras de los clientes, cómo se están desempeñando y los aumentos o disminuciones en los volúmenes que podrían generar problemas de retención”, dijo Madjlessi.

También puede profundizar en dónde existen los riesgos crediticios, de tasa de interés o de concentración, y crear planes de mitigación para abordar estas situaciones potenciales. El uso de una plataforma de datos unificada para monitorear estas métricas clave puede ayudarlo a administrar el riesgo en la banca.

3. Mejorar la tecnología en la banca puede ayudarlo a comunicarse más rápido y más fácilmente

La agilidad operativa puede ayudar a los bancos a actuar con rapidez y tomar decisiones más inteligentes si surge la volatilidad del mercado. En lugar de depender de una combinación de plataformas, unir las conversaciones, el intercambio de conocimientos y la toma de decisiones en un solo lugar puede ayudar a eliminar la confusión durante una crisis y conducir a una mayor productividad en tiempos saludables.

Cuando crea una cultura de datos y tiene todos los datos necesarios en un solo lugar, puede reunir fácilmente alertas, equipos y conversaciones. También puede alinearse con los problemas, tomar decisiones rápidamente y buscar y compartir conocimientos.

Una ubicación central para procesos y comunicación también puede ayudar con flujos de trabajo automatizados y una resolución de casos más rápida. En una crisis, la tecnología adecuada en la banca permite acurrucarse y pulular como un equipo para discutir lo que está sucediendo. También puede discutir los impactos del cliente, acordar un mensaje de comunicación consistente y escalar la situación si es necesario.

Cómo los bancos pueden mejorar el servicio al cliente y aumentar la confianza

Puede mejorar la gestión del riesgo en la banca respondiendo rápidamente a las inquietudes, pero también asegurándose de mantener a los clientes contentos y seguros durante los altibajos financieros.

“Los bancos pueden recordar constantemente a los clientes el valor que brindan”, dijo Madjlessi, “no solo en tiempos de crisis, sino durante todo el ciclo de vida del cliente”.

Una mejor tecnología en la banca puede ayudarlo a:

  • Ser un lugar acogedor para que los clientes vengan a aprender. Comprenda lo que está sucediendo en el mercado para calmar las emociones y evitar que los clientes tomen decisiones precipitadas con respecto a sus cuentas y carteras.
  • Responder proactivamente a las necesidades de los clientes. Proporcione transparencia y compromisos personalizados para generar confianza en su base de clientes actual. Cree relaciones de apoyo para que los clientes no tengan una experiencia enlatada.
  • Utilice la tecnología en la banca para ayudar a automatizar procesos y escalar. Obtener una vista unificada de los datos de sus clientes puede ayudar a crear paneles procesables, monitorear segmentos de clientes y ayudar con la gestión de riesgos en la banca.
  • Mejora tus procesos de onboarding. La velocidad es importante, especialmente cuando intenta ganarse la confianza del cliente. Un proceso de incorporación fluido puede marcar la diferencia para los clientes que buscan una experiencia bancaria más confiable.

Cumple con las expectativas digitales de tus clientes

Los clientes quieren una experiencia eficiente y fácil de su banco. Nuestra investigación muestra cómo puede utilizar la automatización para brindar rápidamente a sus clientes lo que necesitan.

Seguir leyendo

Una actualización importante de nuestro plan de jubilación Legacy API ☁️

Una actualización importante de nuestro plan de jubilación Legacy API ☁️

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.

Una actualización importante de nuestro plan de jubilación Legacy API | Blog de desarrolladores de Salesforce

En 2021, anunciamos unplan para retirar las versiones heredadas de la API de la plataforma anualmente, de modo que nuestros equipos de ingeniería pudieran centrar sus esfuerzos de desarrollo en mejorar las últimas versiones de la API para mejorar la experiencia general de Salesforce al crear funciones personalizadas a través de aplicaciones. En esta publicación, compartiremos una actualización importante del plan de retiro de la API heredada, algunos consejos sobre cómo identificar el uso de la API heredada y cómo actualizar esas solicitudes de API.

Actualización importante del plan de jubilación de la API heredada

La última fase del plan de retiro de la API heredada se anunció a principios de 2022 y entró en vigencia durante el lanzamiento de Summer '22. Con esta versión, dejamos de usar las versiones SOAP, REST y Bulk API que van de la 21.0 a la 30.0. Como parte de nuestro plan original, estas versiones de API ya no serían compatibles, pero permanecerían disponibles hasta que las retiremos en la versión Summer '23.

Luego de consultar con la comunidad y nuestros socios, decidimos retrasar el próximo retiro de la API al lanzamiento de Summer '25 para garantizar una transición sin problemas (consulte el artículo de conocimientos ). Debido a esta extensión, las versiones de API 21.0 a 30.0 aún no son compatibles, pero seguirán estando disponibles hasta el lanzamiento de Summer '25.

Desde Summer '21 , cada vez que realiza una llamada a una API heredada con REST o Bulk API, verá un encabezado Warning en la respuesta con un mensaje que describe el problema como este:

Una vez que las versiones heredadas de la API se retiren en Summer '25, las solicitudes a esas versiones fallarán con los siguientes errores:

  • La API REST devolverá el estado HTTP 410: GONE
  • La API SOAP devolverá el estado HTTP 500: UNSUPPORTED_API_VERSION
  • La API masiva devolverá el estado HTTP 400: InvalidVersion

Ahora que conoce el último plan, veamos cómo puede identificar si se ve afectado y cómo.

Identificar el uso de la API heredada

Puede verificar las llamadas API heredadas usted mismo en cualquier momento, y hay varias formas de hacerlo.

Todas las transacciones de la API de Salesforce se registran en los registros de Monitoreo de eventos. El monitoreo de eventos normalmente requiere una licencia específica, pero hemos expuesto el evento Uso total de la API ( ApiTotalUsage ) a todos los clientes de forma gratuita, para que pueda monitorear el consumo de la API heredada e identificar los clientes y las integraciones que deben actualizarse. Las organizaciones habilitadas para API tienen acceso gratuito a los archivos de registro de eventos de uso total de API con retención de datos de 1 día. Con el Monitoreo de eventos habilitado, puede acceder a este y a todos los demás tipos de archivos de registro de eventos con una retención de datos de 30 días.

Los registros contienen campos clave que guían sus investigaciones:

  • Los clientes proporcionan CLIENT_NAME opcionalmente, pero es especialmente útil para identificar aplicaciones e integraciones que realizan llamadas API que requieren investigación y ajustes. Compartiremos más sobre este campo en la última sección de esta publicación.
  • CONNECTED_APP_ID le dice qué aplicación conectada está en el origen de las llamadas a la API.
  • USER_ID y CLIENT_IP son útiles para identificar el origen de las llamadas API heredadas, pero existe la posibilidad de que estos valores se compartan entre varias aplicaciones en caso de que se realice una cuenta técnica de usuario/sistema (ID de usuario compartido) o llamadas desde una ubicación de oficina física ( dirección IP compartida). Compartiremos cómo usar la nueva licencia de usuario de integración para abordar los problemas de usuarios compartidos en la última sección de esta publicación.
  • Los campos API_FAMILY , API_VERSION , API_RESOURCE , URI y HTTP_METHOD le brindan pistas valiosas sobre el tipo de operaciones que realizan los clientes API.

Compartimos varias herramientas para acceder a los registros en nuestra publicación anterior , y también puede usar herramientas de terceros para automatizar esta tarea. Compartiremos una opción adicional que puede ser relevante para los usuarios preocupados por ejecutar código de terceros con acceso API a su organización.

Uso de Postman para identificar el uso de la API heredada

Puede utilizar la colección Postman de las API de la plataforma de Salesforce para inspeccionar sus registros de Salesforce con estos pasos:

  • Configure la colección Postman y autentíquese en su organización .
  • Enumere los archivos de registro que rastrean el acceso a la API:
    1. Seleccione REST > Solicitud de consulta .
    2. Reemplace el valor del parámetro de consulta q con la siguiente consulta SOQL: SELECT LogFile, EventType, CreatedDate FROM EventLogFile WHERE EventType IN ('API', 'RestApi', 'BulkApi', 'ApiTotalUsage')
    3. Haz clic en Enviar.
    4. Recupere los ID del archivo de registro de la respuesta.

  • Para cada archivo de registro devuelto en el paso anterior, recupere y escanee el contenido del registro:
    1. Seleccione REST > Registros > Obtener solicitud de archivo de registro de eventos .
    2. Establezca el ID del archivo de registro en el valor de la variable de ruta id .
    3. Haz clic en Enviar.
    4. Lea el contenido del archivo de registro en la respuesta. Puede moverse a la pestaña Respuesta sin procesar y guardarla como un archivo CSV o usar la pestaña Visualizar para obtener una vista previa del contenido directamente en Postman.
    5. Mire la columna URI o API_VERSION y verifique las versiones de API heredadas (versiones 30.0 y anteriores).

Después de identificar que está llamando a versiones de API heredadas, el siguiente paso es actualizar estas dependencias a versiones de API heredadas.

Actualizar dependencias a versiones de API heredadas

El procedimiento de actualización depende del tipo de API que esté utilizando, pero aquí hay una breve descripción general de lo que se requiere:

  • Para llamadas API basadas en SOAP, genere un nuevo WSDL e incorpórelo a la integración afectada
  • Para puntos finales REST, actualice el número de versión en el URI a la versión principal actual
  • Aunque puede actualizar de manera similar los URI para puntos finales /async en el caso de Bulk API, la forma más gratificante de actualizar las llamadas heredadas es adoptar Bulk API 2.0 y disfrutar del flujo de trabajo más simple y los límites mejorados.

Tenga en cuenta que las aplicaciones (p. ej., el cargador de datos) y los paquetes también pueden estar realizando llamadas API heredadas debido a bibliotecas obsoletas (conectores de servicios web, kit de herramientas AJAX, interfaz COM SForceOfficeToolkit o kit de herramientas Force.com para PHP, solo por nombrar algunos) . Asegúrate de actualizarlos también.

Y recuerda: no importa el cambio, asegúrate de realizar pruebas de regresión para asegurarte de que todo funciona como se esperaba.

Preparándonos para el futuro

Ya sea que se haya visto afectado por el plan de jubilación heredado o no, debe planificar el futuro retiro de la versión API. Le dejaremos algunas prácticas recomendadas para el gobierno de API.

Aproveche las licencias de usuario de la integración de Salesforce

En Spring '23, presentamos un nuevo tipo de licencia dedicado a las integraciones: la licencia de usuario de Integración de Salesforce . Esta nueva licencia se basa en el principio de acceso con privilegios mínimos y le permite crear usuarios solo de API para integraciones de sistema a sistema con derechos de acceso específicos. La principal ventaja de este nuevo tipo de licencia es la seguridad, pero también permite un mejor seguimiento de las acciones de integración, ya que podrá asignar distintos usuarios solo de API a la integración y relacionar las llamadas de API de integración con ID de usuario específicas en sus registros.

Se incluyen cinco licencias de usuario de Integración de Salesforce en cada organización Enterprise, Unlimited y Performance Edition. También puede comunicarse con su ejecutivo de cuenta si necesita más.

Especifique un nombre de cliente al crear integraciones de API REST

Al crear nuevas integraciones con la API REST, asegúrese de especificar un nombre de cliente utilizando el encabezado de solicitud Sforce-Call-Options de la siguiente manera:

Sforce-Call-Options: client=myClientName

El nombre del cliente que especifique en el encabezado estará visible en los registros en el campo CLIENT_NAME . Esto le ayuda a depurar y auditar las llamadas a la API de integración.

palabras de cierre

Esperamos que este retraso adicional en nuestro plan de retiro de API heredado permita una transición sin problemas, y lo alentamos a que comience hoy, independientemente de la nueva fecha límite. Migrar a versiones de API más nuevas siempre es una apuesta segura para obtener acceso a nuevas capacidades y mejorar el rendimiento y la seguridad.

Sobre el Autor

Philippe Ozil es un defensor principal de desarrolladores en Salesforce, donde se enfoca en la plataforma de Salesforce. Escribe contenido técnico y habla con frecuencia en conferencias. Es un desarrollador full-stack y disfruta trabajar en proyectos DevOps, robótica y VR. Sígalo en Twitter @PhilippeOzil o consulte sus proyectos de GitHub @pozil .

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

Agregar a Slack Suscríbete a RSS

Seguir leyendo

Configurar el tamaño de lote para el activador de eventos de plataforma

Configurar el tamaño de lote para el activador de eventos de plataforma

Última actualización el 30 de abril de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo configurar el usuario y el tamaño del lote para Platform Event Trigger?

Objetivos:

Después de leer este blog, podrá:

  • Comprender el tamaño del lote para el activador de eventos de la plataforma
  • Anular el usuario de ejecución predeterminado para el desencadenador de eventos de la plataforma
  • Cree PlatformEventSubscriberConfig a través de la API REST
  • y mucho más

Jestilla Zetkin trabaja como arquitecta de Salesforce en Gurukul On Cloud (GoC) . Recientemente, enfrentó desafíos mientras trabajaba con eventos de plataforma, principalmente límites de gobernadores. Quiere aprender a configurar el tamaño del lote para el activador de eventos de la plataforma. En este ejercicio, configuraremos el tamaño del lote para lo siguiente:

  1. Activador de vértice
    1. LeadGenerationEventTrigger en Lead_Generation__e
    2. Tamaño del lote: 50
    3. Usuario ejecutor: Usuario de integración

¿Qué es Plataforma de Eventos?

Las arquitecturas basadas en eventos se han vuelto muy populares en los últimos años, y por una buena razón. Se basa en el patrón de fuego y olvido . Activar un evento y dejar que cada sistema maneje la lógica empresarial le permite mantener los sistemas no relacionados desacoplados y puede ayudar a simplificar la arquitectura.

Los eventos de la plataforma le permiten entregar notificaciones de eventos seguras, escalables y personalizables dentro de Salesforce o desde fuentes externas. Las aplicaciones pueden publicar y suscribirse a eventos de plataforma en la plataforma de Salesforce mediante Apex, Flow o en un sistema externo mediante CometD. Si desea obtener más información sobre el evento de plataforma, consulte el módulo de Trailhead .

¿Cuál es el tamaño de lote predeterminado para el desencadenador de eventos de plataforma?

De forma predeterminada, el disparador de eventos de la plataforma se ejecuta como el usuario del sistema de procesos automatizados con un tamaño de lote de 2000 mensajes de eventos. A veces es necesario cambiar el usuario y el tamaño del lote para eludir los límites del gobernador u otros desafíos.

Salesforce le permite anular el usuario de ejecución predeterminado y el tamaño de lote de un desencadenador de Apex de evento de plataforma con PlatformEventSubscriberConfig en la API de herramientas o la API de metadatos para configurar el desencadenador.

Puede especificar cualquier usuario activo en la organización de Salesforce. El activador se ejecuta en un contexto de sistema con privilegios para acceder a todos los registros independientemente de los permisos de nivel de campo y de objeto del usuario. Puede especificar un tamaño de lote personalizado de 1 a 2000. El tamaño del lote es el número máximo de mensajes de eventos que se pueden enviar a un disparador en una ejecución.

Comprender el objeto PlatformEventSubscriberConfig

Hagamos una pausa aquí, familiarícese con el objeto de la API de herramientas PlatformEventUsageMetric en Salesforce. Representa los ajustes de configuración para un disparador de Apex de evento de plataforma, incluido el tamaño del lote y el usuario que ejecuta el disparador.

Nombre del campo
Detalles
Tamaño del lote Un tamaño de lote personalizado, de 1 a 2000, para el desencadenador Apex del evento de plataforma. El tamaño del lote corresponde al número máximo de mensajes de eventos que se pueden enviar a un disparador en una ejecución. El tamaño de lote predeterminado es 2000 para activadores de eventos de plataforma.
Nombre del desarrollador El nombre exclusivo del objeto PlatformEventSubscriberConfig.
etiqueta maestra Etiqueta para PlatformEventSubscriberConfig. En la interfaz de usuario, este campo es Configuración de suscriptor de eventos de plataforma.
PlatformEventConsumerId El ID del desencadenador de Apex del evento de plataforma que se va a configurar.
ID de usuario El ID del usuario con el que se ejecuta el desencadenador de Apex del evento de plataforma. De forma predeterminada, el disparador de eventos de la plataforma se ejecuta como la entidad de proceso automatizado. Establecer el usuario que ejecuta a un usuario específico tiene estos beneficios:

  • Los registros se crean o modifican como este usuario.
  • Los registros con campos OwnerId tienen sus campos OwnerId completados para este usuario cuando se crean o modifican.
  • Este usuario crea los registros de depuración para la ejecución del disparador.
  • Puede enviar un correo electrónico desde el activador, que no es compatible con el usuario de Proceso automatizado predeterminado.

Los componentes PlatformEventSubscriberConfig tienen el sufijo .platformEventSubscriberConfig y se almacenan en la carpeta PlatformEventSubscriberConfigs .

Este componente PlatformEventSubscriberConfig tiene la etiqueta LeadGenerationEventTriggerConfig . Contiene la configuración de un disparador de eventos de plataforma, LeadGenerationTrigger , y especifica el tamaño del lote y el usuario.


<?versión xml="1.0" codificación="UTF-8"?>
<PlatformEventSubscriberConfig xmlns="http://soap.sforce.com/2006/04/metadatos"> <platformEventConsumer>LeadGenerationTrigger</platformEventConsumer> <tamaño del lote>50</tamaño del lote> <masterLabel>LeadGenerationEventTriggerConfig</masterLabel> <usuario>desarrollador@automationchampion.com</usuario> <isProtected>falso</isProtected>
</PlatformEventSubscriberConfig>

Práctica guiada (nosotros hacemos):

Para agregar una configuración, realice una solicitud POST como se menciona a continuación:

  1. Abra Workbench e inicie sesión con su nombre de usuario y contraseña de Trailhead Playground .
  2. Asegúrese de haber seleccionado la opción Producción para el medio ambiente .
  3. Navegue a la pestaña Utilidades y seleccione la opción REST Explorer .
  4. Selecciona las siguientes opciones:
    1. Elija un método HTTP para realizar en el URI del servicio REST API a continuación : POST
    2. URL : /services/data/v58.0/tooling/sobjects/PlatformEventSubscriberConfig
    3. Cuerpo : proporcione los valores en el cuerpo de la solicitud. Esta solicitud de ejemplo configura un activador existente con un tamaño de lote de 50 y especifica el ID de un usuario en ejecución.
      1. {
        "Tamaño del lote": "50",
        “Nombre del desarrollador”:”LeadGenerationEventTriggerConfig”,
        “MasterLabel”:”LeadGenerationEventTriggerConfig”,
        “PlatformEventConsumerId”: “01qB0000000Zcug”,
        “ID de usuario”: “005B00000015gt8”
        }
      2. Dónde:
        1. 01qB0000000Zcug, disparador de Apex en Lead_Generation__e
        2. 005B00000015gt8, es el ID de usuario del usuario de integración
    4. Haga clic en Ejecutar .
  5. Puede consultar y recuperar las configuraciones en su organización con SOQL. Si consulta desde Developer Console Query Editor, asegúrese de seleccionar Use Tooling API . Esta consulta de ejemplo recupera todas las configuraciones establecidas en su organización de Salesforce.

Evaluación formativa:

¡Quiero saber de ti!

¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.

Seguir leyendo

Las mejores formas de automatizar la gestión de proyectos en Salesforce

Las mejores formas de automatizar la gestión de proyectos en Salesforce

Administrar sus proyectos dentro de Salesforce garantiza que todos sus datos clave estén disponibles en un solo lugar, con todos los que necesitan la capacidad de acceder a ellos ya en la plataforma y familiarizados con la interfaz de usuario. Además, no es necesario que cree ni mantenga la integración con herramientas de gestión de proyectos externas de terceros. Sin embargo, si está buscando mejorar aún más su juego de gestión de proyectos en Salesforce, la mejor manera de hacerlo sería a través de la automatización. Este artículo lo guiará a través de las mejores formas de automatizar la gestión de proyectos en Salesforce.

La automatización ayuda a su organización a crear valor a través de una reducción del tiempo dedicado a realizar tareas, una reducción del riesgo relacionado con el error humano y la creación de una experiencia optimizada para sus usuarios y clientes.

Las posibilidades son infinitas cuando se utilizan herramientas de automatización de Salesforce listas para usar, como Salesforce Flow, y las aplicaciones de gestión de proyectos de Salesforce adecuadas, como Inspire Planner.

Ejemplos de cómo puede automatizar la gestión de proyectos en Salesforce

Tabla de contenido

Una vez que haya decidido automatizar la gestión de proyectos en Salesforce, la pregunta es ¿Qué automatizamos ?

A continuación se enumeran varios escenarios de automatización de la gestión de proyectos que han demostrado ahorrar tiempo y recursos a las empresas. Estos pueden darle ideas sobre lo que desea automatizar en su organización de Salesforce.

Lanzar proyectos automáticamente con un flujo de Salesforce

Es un escenario común que las empresas necesitan lanzar proyectos a partir de plantillas específicas cuando las Oportunidades pasan a la etapa Cerrado/Ganado. Hacer esto manualmente para cada oportunidad requiere una cantidad considerable de tiempo y esfuerzo. Además, también deja espacio para el error humano o para que alguien simplemente olvide o retrase un paso.

Con Inspire Planner, una aplicación de gestión de proyectos nativa de Salesforce, puede crear un flujo de Salesforce desencadenado por registro para crear automáticamente un proyecto a partir de una plantilla específica en función de diferentes criterios (por ejemplo, la etapa de oportunidad se actualiza a Cerrado/Ganado).

Automatice la gestión de proyectos en Salesforce con Salesforce Flows para lanzar proyectos a partir de oportunidades

Este nuevo proyecto heredará de la plantilla todas sus fases y tareas, predecesores, archivos adjuntos, roles de recursos y más.

Entonces, para comenzar, su gerente de proyecto simplemente necesita actualizar la fecha de inicio de su primera tarea y asignar el equipo del proyecto (¡ambos también se pueden automatizar!).

Se puede configurar una automatización similar de Salesforce Flow para lanzar proyectos desde otras etapas de Oportunidades o para otros objetos en Salesforce, como Casos, Cuentas, Pedidos y más.

Automatice la gestión de proyectos en Salesforce con plantillas de proyectos

Si su organización entrega proyectos que siguen procesos estandarizados, puede Automatice la gestión de proyectos en Salesforce configurando plantillas de proyectos y usándolas cada vez que desee configurar un nuevo proyecto en lugar de crearlos desde cero.

Configurar plantillas de proyecto puede ser un proceso simple con la herramienta adecuada. Por ejemplo, en Inspire Planner simplemente debe marcar la casilla de verificación 'Es plantilla' al crear un nuevo proyecto para hacer una Plantilla de proyecto. Y puede crear un número ilimitado de plantillas para diferentes procesos dentro de su organización.

Las plantillas de proyecto permitirán que su software de administración de proyectos de Salesforce haga parte del trabajo más insignificante por usted, permitiéndole a usted y a su equipo concentrar sus esfuerzos en brindar un servicio de alta calidad a sus clientes.

Con Inspire Planner, sus proyectos heredarán la mayor parte de la información requerida de la plantilla, incluidas las tareas, los archivos adjuntos, la duración de las tareas, las fechas de inicio y finalización, los predecesores, los recursos asignados, la prioridad, el esfuerzo planificado, el costo presupuestado, las categorías, las notas y el diseño del proyecto. y Configuración, y más.

Automatice la gestión de proyectos en Salesforce con plantillas de proyectos ilimitadas en Inspire Planner, una aplicación de gestión de proyectos nativa de SalesforceAutomatice la gestión de proyectos en Salesforce con plantillas de proyectos ilimitadas en Inspire Planner, una aplicación de gestión de proyectos nativa de Salesforce

Automatice la gestión de proyectos en Salesforce con la asignación de tareas basada en roles

Asignar automáticamente las tareas de su proyecto a los recursos correctos es una manera fácil de automatizar la gestión de proyectos en Salesforce.

Dependiendo de la cantidad de tareas en sus proyectos, esto podría sumar una cantidad significativa del tiempo de sus gerentes de proyecto si se hace manualmente, y eso suponiendo que lo hagan bien cada vez. Si hay una herramienta a su disposición que alivia esta carga de sus gerentes de proyecto y les permite concentrarse en un trabajo más importante, ¿por qué no ponerla en práctica?

Afortunadamente, esto también es algo que Inspire Planner ofrece listo para usar. Puede predefinir qué roles serán responsables de cada tarea mientras crea sus plantillas o planes de proyecto.

Luego, simplemente necesita asignar un recurso a un rol específico, y la automatización integrada de Inspire Planner asignará inmediatamente todas las tareas de su proyecto a los miembros correctos del equipo del proyecto.

Costura de plantilla

Lanzar proyectos automáticamente desde Oportunidades basadas en plantillas es una excelente manera de automatizar la gestión de proyectos en Salesforce. Pero, ¿qué sucede cuando vendió varios productos dentro de su Oportunidad y cada producto requiere un conjunto diferente de tareas?

¿Puede automatizar dicho proceso en Salesforce dentro de un plan de proyecto en lugar de crear proyectos separados?

La buena noticia es que la respuesta es sí. Inspire Planner ofrece la funcionalidad de unión de plantillas de proyectos que le permite crear un solo proyecto a partir de una oportunidad al "unir" (combinar) diferentes plantillas relacionadas con los productos de oportunidad.

Además, puede definir una plantilla de encabezado (un conjunto de tareas que deben realizarse sin importar qué productos se seleccionaron, por ejemplo, la fase de inicio del proyecto) y definir un orden de ejecución de sus plantillas simplemente arrastrándolas a las posiciones deseadas.

Y con la configuración adicional de Salesforce, puede configurar la unión de plantillas de proyectos en Inspire Planner para trabajar con otros objetos en Salesforce en lugar de productos.

Automatice la programación de su proyecto con dependencias de tareas

Puede automatizar la Gestión de proyectos en Salesforce configurando Dependencias de tareas en el diagrama de Gantt de su proyecto. De esta manera, su proyecto y todas las tareas operarían como una unidad cohesiva en lugar de que cada tarea esté separada. Por lo tanto, actualizar cualquier tarea recalculará automáticamente todo el cronograma del proyecto, ¡sin importar cuán complejo sea su proyecto!

Inspire Planner es compatible con cuatro tipos principales de predecesores (finalización a inicio, finalización a finalización, inicio a inicio y inicio a finalización), así como múltiples dependencias de tareas. Si no está familiarizado con estos términos, un predecesor es una actividad que debe comenzar o finalizar antes de que pueda continuar una tarea sucesora, y un sucesor es una actividad que sigue a otra actividad en función de su dependencia entre sí y no necesariamente en orden cronológico. .

Además de eso, con Inspire Planner también puede agregar tiempo de adelanto o retraso a sus dependencias (por ejemplo, la tarea debe comenzar 3 días después de que finalice otra, o un día antes, etc.), e incluso funciones más avanzadas como la gestión de restricciones ( por ejemplo, una tarea debe terminar en una fecha determinada).

Automatice la gestión de proyectos en Salesforce con dependencias de tareas en Inspire Planner, una aplicación de gestión de proyectos nativa de Salesforce

Una vez configuradas, los usuarios finales también pueden ver estas tareas predecesoras y sucesoras en un componente simplificado en la página de tareas. De modo que incluso si los miembros de su equipo no tienen acceso al proyecto o no están familiarizados con los diagramas de Gantt, aún pueden comprender fácilmente qué depende de ellos en este proyecto.

Componente predecesor y sucesor en las tareas de Salesforce en Inspire Planner, una aplicación de gestión de proyectos nativa de Salesforce

Automatización de Notificaciones

Otro elemento importante de la automatización de la gestión de proyectos en Salesforce son las notificaciones.

Si desea entregar sus proyectos a tiempo, deberá mantener a su equipo de proyecto actualizado sobre los próximos plazos e hitos. Para empezar, puede configurar alertas y notificaciones automáticas para las tareas del proyecto a través de Salesforce. Esto enviará a los recursos de su proyecto recordatorios por correo electrónico sobre sus tareas y también mostrará un recordatorio de notificación en Salesforce.

Por ejemplo, puede configurar notificaciones de tareas unos días antes de la fecha de vencimiento de la tarea, cuando se actualizaron las fechas de inicio/finalización de la tarea, una notificación de alerta cuando la tarea está vencida y más. Dado que Inspire Planner se integra completamente con las tareas estándar de Salesforce, algunas de estas notificaciones estarán disponibles para usted desde el primer momento.

Finalmente, puede configurar alertas en Inspire Planner para acciones como Tareas listas para comenzar. Cuando se han completado todos los predecesores, Inspire Planner marca automáticamente sus tareas como "Listo para comenzar". A continuación, puede enviar alertas a las personas asignadas a esta tarea o utilizar una vista de lista que muestre solo dichas tareas. De esta manera, su equipo de proyecto sabrá fácilmente en qué debe concentrarse a continuación.

Automatización de KPIs y Reportes

La siguiente idea para automatizar la gestión de proyectos en Salesforce es automatizar los KPI y programar la entrega de sus informes de proyectos.

Puede decidir administrar los KPI manualmente en función del estado actual de sus proyectos o automatizarlos si tiene criterios estandarizados para los KPI internamente. En cualquier caso, puedes configurar alertas para tus jefes de proyecto cuando alguno de los KPIs del proyecto pase de Verde a Ámbar o Rojo.

KPI en Inspire PlannerKPI en Inspire Planner

Al utilizar las aplicaciones de gestión de proyectos nativas de Salesforce, su equipo puede beneficiarse de los potentes informes y paneles de Salesforce. Por ejemplo, Inspire Planner ofrece una carpeta completa lista para usar con informes de proyectos, la capacidad de generar su informe de estado del proyecto con unos pocos clics y también dos paneles dinámicos para su cartera y administradores de recursos.

Panel de administración de recursos en Inspire PlannerPanel de administración de recursos en Inspire Planner

Salesforce luego le permite programar y suscribirse a los informes de su proyecto. De esta manera, su equipo puede recibir notificaciones sobre las métricas más importantes del proyecto sin ejecutar manualmente ni enviar informes por correo electrónico.

Una de las mejores prácticas para generar informes sobre sus proyectos es crear líneas base del proyecto en Inspire Planner. La línea de base se puede utilizar para generar informes sobre el cronograma del proyecto planificado y el rendimiento real de su proyecto. La línea de base también se puede usar para rastrear y enviar notificaciones cuando hay retrasos en el proyecto y cuando las tareas vencen. Estas notificaciones pueden llamar la atención sobre áreas del Proyecto que necesitan más atención, lo que resultará en una reducción de los retrasos.

Automatice la gestión de proyectos en Salesforce con procesos de aprobación

Los procesos de aprobación pueden ayudarlo a automatizar la gestión de proyectos en Salesforce cuando necesite obtener una aprobación para algo en su organización.

Los ejemplos típicos de procesos de aprobación en la gestión de proyectos incluyen empleados que solicitan PTO de sus gerentes, gerentes de proyecto que obtienen aprobación para cambios dentro del alcance del proyecto, aprobación de facturas y más.

Con los procesos de aprobación de Salesforce, puede definir fácilmente sus pasos de aprobación, bloquear registros, permitir la recuperación de solicitudes de aprobación, definir un aprobador, crear plantillas de notificación y más.

Para iniciar procesos de aprobación en sus proyectos en Salesforce, puede usar botones personalizados (p. ej., "Enviar para aprobación") en los que los usuarios deben hacer clic o iniciar procesos de aprobación automáticamente con un Flujo de Salesforce.

Automatizar carteras de proyectos

Las carteras de proyectos le permiten agrupar y ver un conjunto de proyectos en un único diagrama de Gantt combinado. Con Inspire Planner, puede crear un número ilimitado de Portafolios para diversas necesidades, por ejemplo, un portafolio de sus proyectos, un portafolio de proyectos para un cliente específico, etc.

Los portafolios pueden mostrar el cronograma general del proyecto, el estado general del proyecto, el porcentaje completado, los hitos del proyecto y más. Además, un proyecto puede pertenecer a varias carteras.

Con Inspire Planner, puede agregar proyectos a Portafolios o eliminarlos manualmente o con automatización a través de Salesforce Flows. Por ejemplo, cuando se completa un proyecto, puede eliminarlo automáticamente de una cartera.

Portafolios de proyectos en Inspire Planner, una aplicación de gestión de proyectos nativa de SalesforcePortafolios de proyectos en Inspire Planner, una aplicación de gestión de proyectos nativa de Salesforce

Y con nuestra próxima función de carteras dinámicas con edición en línea, la gestión automática de carteras se está volviendo más fácil que nunca. Puede crear diferentes vistas de lista de Salesforce para organizar y filtrar automáticamente sus carteras de proyectos en función de varios criterios.

Calcule los niveles de prioridad de riesgos y problemas

Tener la capacidad de ver los riesgos y problemas relacionados con su proyecto significa que estos riesgos pueden mitigarse de manera oportuna durante todo el proyecto. Si busca identificar y prevenir riesgos de proyectos imprevistos, consulte nuestra guía sobre cómo reducir los riesgos de proyectos en Salesforce.

Si está buscando llevar la gestión de riesgos de su proyecto al siguiente nivel en Salesforce, puede hacerlo automatizando el cálculo de riesgos y automatizando la priorización de estos riesgos.

El registro de riesgos del proyecto es una función que ofrece Inspire Planner que le permite realizar un seguimiento de los riesgos de su proyecto y limitar sus impactos. Realiza un seguimiento tanto de los riesgos como de los problemas (los riesgos son los problemas que podrían ocurrir en el futuro y los problemas son los riesgos que han llegado a buen término y realmente sucedieron).

Registro de riesgos del proyecto en Inspire Planner

La Prioridad de sus riesgos se calcula automáticamente multiplicando el Impacto por la Probabilidad. De esta manera, simplemente debe asegurarse de capturar el impacto y la probabilidad de su riesgo e Inspire Planner hará el resto por usted.

Cuándo y por qué debería automatizar la gestión de proyectos en Salesforce

Si bien ahora conoce varias formas de automatizar la gestión de proyectos en Salesforce y cómo Inspire Planner puede ser potencialmente la solución que le permita hacer esto, es posible que todavía se pregunte por qué vale la pena automatizarlo.

¿Qué ganará su empresa con la automatización de la gestión de proyectos en Salesforce y qué impactos negativos mitigará? A continuación hay tres explicaciones de este valor y por qué la automatización no solo es una buena idea sino casi una necesidad.

Ahorre tiempo en tareas repetitivas

La gestión eficaz de proyectos es la diferencia entre un proyecto exitoso y uno fallido y, a menudo, lleva bastante tiempo ejecutarlo con cuidado para obtener resultados óptimos. Dado que hay una serie de tareas que se pueden realizar con su inversión en automatización de Salesforce, tiene mucho sentido liberar a su equipo para que se concentre en los problemas clave en lugar de atascarlos con tareas repetitivas manuales.

La investigación realizada por AutomationAnywhere muestra que en algunas industrias (a saber, el servicio público y la administración general) los profesionales pueden dedicar hasta 3,51 horas diarias a tareas administrativas repetitivas. ¡Estas son tareas que podrían realizarse fácilmente mediante algún tipo de automatización!

Cuando se trata de reducir el tiempo necesario para las tareas repetitivas en la gestión de proyectos, puede devolver el tiempo a su día implementando algunos de nuestros ejemplos de automatización descritos anteriormente, como plantillas de proyectos, asignación de tareas según roles de recursos y más. En última instancia, puede entregar un proyecto exitoso más rápido descargando este tipo de tareas a Salesforce.

Reducir el error humano

Si bien todos tratamos de ser completamente precisos todo el tiempo, solo somos humanos y, como tales, somos propensos a cometer errores. Salesforce, por otro lado, no es humano y no es propenso a la misma capacidad de cometer errores que los humanos. Las tareas más pequeñas pueden llamar menos la atención de un equipo de proyecto ocupado, lo que puede generar problemas mayores en el futuro debido a la naturaleza en cascada de estos errores.

Configurar su organización para automatizar su gestión de proyectos en Salesforce es la mejor manera de reducir (o eliminar efectivamente) su riesgo de error humano mientras gestiona el proyecto (suponiendo que esté configurado correctamente desde el principio, por supuesto).

Administre automáticamente varias plantillas/escenarios

Si su empresa ofrece múltiples servicios o productos diferentes, cada uno con su propio conjunto de tareas o incluso diferentes metodologías de gestión de proyectos (Waterfall vs Agile/Scrum), entonces puede encontrarse con problemas en los que un Project Manager no tiene suficiente experiencia trabajando con un tipo de producto o servicio específico y podría tener problemas para configurar el Proyecto en Salesforce.

Este problema se elimina por completo cuando su gestión de proyectos se automatiza en Salesforce utilizando varias plantillas de proyectos que sus gestores de proyectos pueden aplicar al comienzo de un proyecto. Esto no solo significa que tienen mucho menos trabajo por hacer, sino que también elimina cualquier error potencial o tareas olvidadas y brinda un grado de capacitación para los gerentes de proyecto que son nuevos en un tipo específico de proyecto.

Automatice la gestión de proyectos en Salesforce con Inspire Planner

Como puede ver, hay una cantidad insuperable de valor que se puede obtener al administrar sus proyectos dentro de Salesforce y luego aplicar capas en alguna Automatización de administración de proyectos.

Sus clientes se beneficiarán de sus esfuerzos al contar con un equipo de proyecto efectivo que pueda entregar a tiempo y garantizar que las comunicaciones sean consistentes, que los riesgos se gestionen y mitiguen, y que el equipo centre sus esfuerzos en el trabajo en lugar de las tareas administrativas.

Si está listo para automatizar la gestión de proyectos en Salesforce para su organización y reducir el trabajo manual y repetitivo, consulte Inspire Planner con nuestra prueba gratuita de 30 días hoy o solicite su demostración personal de Inspire Planner.

Seguir leyendo

Use la API REST de Tableau con Postman para diseñar integraciones ☁️

Use la API REST de Tableau con Postman para diseñar integraciones ☁️

La próxima vez que quiera hacer algo con Tableau, pero no pueda encontrar la manera con la interfaz de usuario, vaya a su confiable Postman Collection y pruebe algunos métodos a través de la API REST de Tableau.

La publicación Usar la API REST de Tableau con Postman para diseñar integraciones apareció primero en el blog de desarrolladores de Salesforce .

Seguir leyendo

Retrospectiva de un desarrollador de plataforma de TrailblazerDX '23 ☁️

Retrospectiva de un desarrollador de plataforma de TrailblazerDX '23 ☁️

TrailblazerDX '23 estuvo lleno de innovación y contenido para los desarrolladores. En este blog, la perspectiva de un desarrollador de Salesforce Platform y una lista de recursos de TDX.

La publicación Retrospectiva de un desarrollador de plataforma de TrailblazerDX '23 apareció primero en el blog de desarrolladores de Salesforce .

Seguir leyendo

Buscar el siguiente día hábil a partir de una fecha específica

Buscar el siguiente día hábil a partir de una fecha específica

Última actualización el 7 de abril de 2023 por Rakesh Gupta Gran idea o pregunta duradera: no queremos trabajar los fines de semana o días festivos, ¡todos lo entendemos! Si es así, ¿cree que nuestros clientes o prospectos lo hacen? Si tiene dudas, intente enviar un correo electrónico a

La publicación Buscar el siguiente día hábil a partir de una fecha específica apareció por primera vez en Automation Champion .

Seguir leyendo