Enviar, registrar, repetir: registro de alertas de correo electrónico como actividades

Enviar, registrar, repetir: registro de alertas de correo electrónico como actividades

Última actualización el 24 de octubre de 2023 por Rakesh Gupta Big Idea or Enduring Question: ¿Cómo se registran los correos electrónicos enviados con la acción ‘enviar correo electrónico’? Objetivos: Después de leer este blog, serás capaz de: Utilizar el flujo activado por registro para enviar una alerta por correo electrónico. Utilizar la acción de flujo «Enviar correo electrónico». Utilizar

The post Enviar, registrar, repetir: registro de alertas de correo electrónico como actividades appeared first on Campeón de la Automatización.

Las alertas de correo electrónico se envían por correo electrónico

Seguir leyendo

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

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

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

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

Seguir leyendo

Validaciones personalizadas mediante flujos activados por registros

Validaciones personalizadas mediante flujos activados por registros

Última actualización el 3 de agosto de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo se escribe una regla de validación utilizando un flujo desencadenado por registros antes de guardar sin crear metadatos adicionales?

Objetivos:

Después de leer este blog, podrá:

  • Comprender la regla de validación
  • Flujo antes de guardar activado por registro de usuario para crear una regla de validación
  • Mostrar el mensaje de error en la parte superior de la página
  • Y mucho más

👉 Anteriormente, escribí varias publicaciones sobre la validación y Salesforce Flow. ¿Por qué no echarles un vistazo mientras estás en ello?

  1. Adición de validación a los componentes de la pantalla de flujo
  2. ¿Regla de validación usando un flujo antes de guardar? ¡Sí!
  3. Cómo corregir el error FIELD_CUSTOM_VALIDATION_EXCEPTION)

A Benjamin Moore , administrador de Salesforce en Gurukul On Cloud (GoC), se le ha encomendado un requisito específico. Debe restringir que los usuarios creen una nueva oportunidad dentro de la cuenta si existe una oportunidad abierta. El siguiente texto debe utilizarse para el mensaje de error:

Utilice la oportunidad abierta existente dentro de esta cuenta. Si necesita más ayuda o tiene preguntas sobre la gestión de oportunidades, póngase en contacto con el soporte de TI.

¿Qué es la regla de validación?

Una regla de validación permite que un administrador del sistema defina una lógica personalizada y mensajes de error para garantizar la integridad de los datos. La regla puede contener una fórmula o una expresión que evalúe los datos en uno o más campos y devuelva un valor verdadero o falso . Por ejemplo, la regla incluye un mensaje de error que se muestra cuando devuelve un valor verdadero que indica que se están ingresando datos incorrectos. Recuerde, una regla de validación solo se activa cuando se crea o edita un registro .

En este artículo, hablé sobre muchos hechos ocultos que no son muy conocidos sobre la regla de validación . Por ejemplo, mostré cómo usar una regla de validación para administrar requisitos usando tipos de metadatos personalizados.

¿Qué es Antes de Guardar Flujo?

El flujo antes de guardar es un disparador que se realiza antes de una operación , como una inserción, actualización, eliminación, etc. Puede usar dicho flujo para verificar o cambiar valores antes de que los datos se actualicen o inserten en la base de datos. Guardar antes es mucho más rápido porque cada registro no se guarda en la base de datos nuevamente. Evitar ese procedimiento de guardado adicional significa omitir otra ronda de reglas de asignación, reglas de respuesta automática, reglas de flujo de trabajo y otras personalizaciones que tardan en ejecutarse. Use un flujo antes de guardar en los siguientes casos de uso:

  1. Actualizar campos en registros nuevos o modificados: significa que desea actualizar los campos en el registro que inició el Flujo
  2. Activar una regla de validación (no necesaria después del lanzamiento de winter'24)

Lea este artículo para obtener más información sobre cuándo usar el flujo anterior frente al flujo posterior al guardado.

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

Paso 2: uso del elemento de decisión para verificar si la oportunidad se creó o actualizó

Ahora usaremos el elemento Decisión para verificar si el registro de oportunidad fue creado o actualizado.

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
  4. Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
    1. Fila 1:
      1. Recurso : {!$Record.Id}
      2. Operador : es nulo
      3. Valor : {!$ConstanteGlobal.Verdadero}
  5. Cuándo ejecutar el resultado : si se cumplen los requisitos de la condición
  6. Haz clic en la X en la parte superior para guardar tus cambios.

Paso 3: agregar un elemento Obtener registro para encontrar oportunidades abiertas relacionadas

El siguiente paso es usar el elemento Obtener registros para encontrar oportunidades abiertas relacionadas en la cuenta.

  1. En Flow Designer, debajo del nodo Creado , haga clic en el icono + y seleccione el elemento Obtener registros .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. Seleccione el objeto Oportunidad de la lista desplegable.
  4. Seleccione Se cumplen todas las condiciones (Y) .
  5. Establecer condiciones de filtro
    1. Fila 1:
      1. Campo : ID de cuenta
      2. Operador : Igual
      3. Valor : {!$Record.AccountId}
    2. Haga clic en Agregar condición
      1. Fila 1:
        1. Campo : EstáCerrado
        2. Operador : Igual
        3. Valor : {!$ConstanteGlobal.Falso}
  6. Cuántos registros almacenar:
    1. seleccione Todos los registros
  7. Cómo almacenar datos de registro:
    1. Elija la opción para Almacenar automáticamente todos los campos .
  8. Haz clic en la X en la parte superior para guardar tus cambios.

Paso 4: uso del elemento de decisión para verificar si se encontró o no una oportunidad abierta  

Ahora, usaremos el elemento Decisión para comprobar si el elemento Obtener registros anterior devuelve un registro de oportunidades abiertas.

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

Paso 5: agregar un elemento de error personalizado para mostrar mensajes de error

  1. En el nodo , seleccione el elemento Error personalizado .
  2. Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
  3. Establecer detalles del mensaje de error 1
    1. Dónde mostrar el mensaje de error : en una ventana en una página de registro
    2. Mensaje de error:
      1. Utilice la oportunidad abierta existente dentro de esta cuenta. Si necesita más ayuda o tiene preguntas sobre la gestión de oportunidades, póngase en contacto con el soporte de TI.
  4. Haz clic en la X en la parte superior para guardar tus cambios.

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

Una vez que todo se vea bien, realice los siguientes pasos:

  1. Haga clic en Guardar .
  2. Ingrese la etiqueta de flujo, el nombre de la API se completará automáticamente.
  3. Haga clic en Mostrar avanzado .
  4. Versión de API para ejecutar el flujo : 59
  5. Etiqueta de entrevista : regla de validación personalizada mediante flujo {!$Flow.CurrentDateTime}
  6. Haga clic en Guardar .

¡Casi llegamos! Una vez que todo se vea bien, haga clic en el botón Activar .

👉 Mira el video para obtener instrucciones paso a paso.

[contenido incrustado]
Cosas para recordar
  1. El límite para el campo del mensaje de error es de 255 caracteres.
  2. Solo puede agregar un mensaje de error para una página.
  3. Solo puede agregar un mensaje de error por campo.
  4. no es posible utilizar el enlace con su mensaje de error.
    1. parámetro de escape Indica si cualquier marcado HTML en el mensaje de error personalizado se debe escapar ( verdadero ) o no ( falso ). Este parámetro se ignora tanto en Lightning Experience como en la aplicación móvil Salesforce, y el HTML siempre se escapa. El parámetro de escape solo se aplica en Salesforce Classic. Lea este artículo para obtener más información.

Prueba de concepto

A partir de ahora, si un usuario intenta crear una nueva oportunidad en una cuenta que ya tiene una oportunidad abierta, se activará el flujo activado por registro antes de guardar que hemos creado y mostrará un mensaje de error.

Evaluación formativa:

¡Quiero saber de ti!

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

Seguir leyendo

Incrustar flujos de pantalla en el componente web Lightning

Incrustar flujos de pantalla en el componente web Lightning

Última actualización el 19 de julio de 2023 por Rakesh Gupta

Gran idea o pregunta duradera:

  • ¿Cómo incrusta un flujo de pantalla dentro de un componente web Lightning?

Objetivos:

Después de leer este blog, podrá:

  • Incruste el flujo de pantalla dentro de un componente web Lightning
  • Aplicar representación condicional en el componente web Lightning
  • Use uiRecordApi para obtener el valor del campo del registro sin usar la clase de Apex
  • y mucho más

En el pasado, escribí algunos artículos sobre Lightning Web Component . ¿Por qué no echarles un vistazo mientras estás en ello?

  1. Pasar datos del componente web Lightning al flujo de pantalla
  2. Uso del componente web Lightning para mostrar un banner de alerta

Janel Parrish trabaja como desarrollador junior en Gurukul on Cloud (GoC). Se le ha encomendado un requisito comercial para desarrollar un componente LWC con las siguientes funcionalidades:

  1. Debería mostrar un flujo de pantalla llamado 'parterFlow' cuando el tipo de cuenta es 'Socio tecnológico'.
  2. Debería presentar un flujo de pantalla llamado 'customerFlow' cuando el tipo de cuenta es 'Cliente – Directo'.
  3. El componente LWC debe diseñarse con la capacidad de incorporarse en la página de registro de rayos de la cuenta.

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

Utilizaremos el componente lightning-flow para incrustar un flujo de pantalla en el componente lightning web. Para crear un flujo en el componente Lightning Web, establezca el atributo flowApiName del componente Lightning-Flow en el nombre de flujo que desea usar. El componente incluye botones de navegación (Atrás, Siguiente, Pausa y Finalizar) para que los usuarios naveguen dentro del flujo.

También usaremos un adaptador de cable uiRecordApi que nos permite interactuar con registros de Salesforce desde los componentes del componente web lightning sin escribir código Apex. Esta API le permite realizar operaciones como recuperar los datos de un registro o los detalles del diseño, crear, eliminar o actualizar un registro, etc. Estos son algunos de los métodos clave proporcionados por uiRecordApi :

  1. getRecord : este método le permite obtener datos de registro.
  2. getRecordCreateDefaults : este método proporciona los valores predeterminados que utiliza Salesforce al crear un nuevo registro.
  3. getRecordUi : obtiene los detalles de diseño de un registro, como qué campos se muestran, cómo se muestran, etc.
  4. createRecord : este método le permite crear un nuevo registro.
  5. deleteRecord – Le permite eliminar un registro.
  6. updateRecord : te permite actualizar un registro existente.

En el archivo de configuración XML, usaremos lightning__RecordPage como destino para permitir que el componente web de iluminación se use en una página de registro en Lightning App Builder.

Práctica guiada (nosotros hacemos):

Hay 3 pasos para resolver el requisito comercial de Janel utilizando Lightning Web Component y Screen Flow . Debemos:

  1. Cree un ScreenFlow (customerFlow) para manejar la solicitud del cliente
    1. Definir propiedades de flujo para el flujo de pantalla
    2. Agregue una variable de texto para almacenar el nombre de la cuenta
    3. Agregue una pantalla para mostrar el nombre de la cuenta desde una variable de texto
  2. Cree un ScreenFlow (partnerFlow) para manejar la solicitud del cliente
    1. Definir propiedades de flujo para el flujo de pantalla
    2. Agregue una variable de texto para almacenar el nombre de la cuenta
    3. Agregue una pantalla para mostrar el nombre de la cuenta desde una variable de texto
  3. Cree un componente web relámpago para mostrar los diferentes flujos de pantalla según el tipo de cuenta

Paso 1.1: Definir propiedades de flujo (customerFlow)

  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 el flujo de pantalla   y haga clic en Crear y configurar el flujo.
  5. Se abrirá el diseñador de flujo para usted.

Paso 1.2: agregue una variable de texto al nombre de la cuenta de la tienda

  1. En Caja de herramientas , seleccione Administrador y, a continuación, haga clic en Nuevo recurso para almacenar el nombre de la cuenta.
  2. Ingrese la siguiente información :
    1. Tipo de recurso : Variable
    2. Nombre de API : nombre de cuenta
    3. Tipo de datos : Texto
    4. Valor predeterminado : {!$GlobalConstant.EmptyString}
    5. Comprobar disponible para entrada
    6. Comprobar disponible para la salida
  3. Haga clic en Listo.

Paso 1.3: agregue una pantalla para mostrar el nombre de la cuenta desde la variable de texto

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Pantalla .
  2. Ingrese la siguiente información :
    1. Ingrese la etiqueta, el nombre de la API se completará automáticamente.
  3. Haga clic en Listo.

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

Una vez que todo se vea bien, realice los siguientes pasos:

  1. Haga clic en Guardar .
  2. Ingrese la etiqueta de flujo, el nombre de la API se completará automáticamente.
  3. Haga clic en Mostrar avanzado .
  4. Versión de API para ejecutar el flujo : 58
  5. Etiqueta de entrevista : customerFlow {!$Flow.CurrentDateTime}
  6. Haga clic en Guardar .

Paso 2.1: Definir propiedades de flujo (partnerFlow)

  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 el flujo de pantalla   y haga clic en Crear y configurar el flujo.
  5. Se abrirá el diseñador de flujo para usted.

Paso 2.2: agregue una variable de texto al nombre de la cuenta de la tienda

  1. En Caja de herramientas , seleccione Administrador y, a continuación, haga clic en Nuevo recurso para almacenar el nombre de la cuenta.
  2. Ingrese la siguiente información :
    1. Tipo de recurso : Variable
    2. Nombre de API : nombre de cuenta
    3. Tipo de datos : Texto
    4. Valor predeterminado : {!$GlobalConstant.EmptyString}
    5. Comprobar disponible para entrada
    6. Comprobar disponible para la salida
  3. Haga clic en Listo.

Paso 2.3: agregue una pantalla para mostrar el nombre de la cuenta desde la variable de texto

  1. En Flow Designer, haga clic en el icono + y seleccione el elemento Pantalla .
  2. Ingrese la siguiente información :
    1. Ingrese la etiqueta, el nombre de la API se completará automáticamente.
  3. Haga clic en Listo.

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

Una vez que todo se vea bien, realice los siguientes pasos:

  1. Haga clic en Guardar .
  2. Ingrese la etiqueta de flujo, el nombre de la API se completará automáticamente.
  3. Haga clic en Mostrar avanzado .
  4. Versión de API para ejecutar el flujo : 58
  5. Etiqueta de entrevista : flujo de socio { !$Flow.CurrentDateTime}
  6. Haga clic en Guardar .

Paso 3: cree un componente web Lightning para mostrar los diferentes flujos de pantalla según el tipo de cuenta

Debajo de la plantilla de componente web lightning, se muestra una tarjeta Lightning titulada Iniciar pedido . Dependiendo de si la propiedad isPartner o isCustomer es verdadera, se iniciará y mostrará el Lightning Flow correspondiente ("rakeshistomMVP__partnerFlow" o "rakeshistomMVP__customerFlow").

embedFlowToLWC.html

Utilizaremos el componente lightning-flow para incrustar un flujo de pantalla en el componente lightning web. Desglosemos el código:

  • En LWC, el archivo HTML de cada componente debe envolverse con una etiqueta <plantilla> .
  • <template if:true={isPartner}> y <template if:true={isCustomer}> : estas son plantillas condicionales que muestran contenido en función de la veracidad de las propiedades isPartner e isCustomer , respectivamente. El contenido dentro de estas plantillas solo se representará si la condición correspondiente es verdadera.

<plantilla> <div class="slds-m-alrededor_medio"> <lightning-card title="Iniciar pedido" icon-name="estándar:pedidos"> <div class="slds-m-alrededor_medio"> <template if:true={esSocio}> <lightning-flow onstatuschange={handleStatusChange} flow-api-name="rakeshistomMVP__partnerFlow" flow-input-variables={inputVariables}></lightning-flow> </plantilla> <template if:true={esCliente}> <lightning-flow onstatuschange={handleStatusChange} flow-api-name="rakeshistomMVP__customerFlow" flow-input-variables={inputVariables}></lightning-flow> </plantilla> </div> </tarjeta-relámpago> </div>
</plantilla>
embedFlowToLWC.js

Este código JavaScript de muestra usa el decorador @api para crear propiedades públicas. Por ejemplo, recordId es una propiedad reactiva pública que contiene el ID de la página de registro. Mientras que el decorador @wire lee los datos de Salesforce. getRecord es una función del módulo lightning/uiRecordApi que recupera un registro. accountType y accountName se importan del esquema de Salesforce.

  • Las declaraciones de importación se utilizan para importar los módulos y las dependencias necesarios. LightningElement es el componente básico para crear componentes web Lightning.
  • account({ error, data }) es una función que maneja la respuesta de la llamada getRecord . Si hay un error, asigna el error a this.error . Si se devuelven datos, establece this.accountName en el nombre de la cuenta y establece isPartner o isCustomer en verdadero según el tipo de cuenta.
  • get inputVariables() es un método captador que devuelve una matriz de objetos, que representa variables de entrada para un flujo. En este caso, devuelve el nombre de la cuenta.

import { LightningElement, api, wire } de 'lwc';
importar { getRecord } desde 'lightning/uiRecordApi';
importar tipo de cuenta desde '@salesforce/schema/Account.Type';
importar nombre de cuenta desde '@salesforce/schema/Account.Name'; exportar la clase predeterminada FlowLauncher extiende LightningElement { @api recordId; nombre de la cuenta; esSocio = falso; esCliente = falso; @wire(getRecord, { recordId: '$recordId', campos: [nombre de cuenta, tipo de cuenta] }) cuenta ({ error, datos }) { si (error) { this.error = error; } más si (datos) { this.accountName = data.fields.Name.value; if(data.fields.Type.value === 'Socio tecnológico') { this.isPartner = verdadero; this.isCustomer = false; } else if(data.fields.Type.value === 'Cliente - Directo') { this.isCustomer = true; this.isPartner = false; } } } obtener variables de entrada () { devolver [ { nombre: 'nombre de cuenta', tipo: 'Cadena', valor: este.nombreDeCuenta } ]; } handleStatusChange(evento) { if(evento.detalle.estado === 'FINALIZADO') { //Acción después de que un flujo haya terminado } }
}
embedFlowToLWC.js-meta.xml

El elemento isExposed se establece en verdadero, lo que hace que el componente esté disponible para su uso en herramientas como Lightning App Builder o Flow Builder.

El elemento de objetivos se usa para especificar dónde se puede usar su componente. En este caso, la etiqueta lightning__RecordPage significa que este componente está diseñado para usarse en una página de registro en Lightning App Builder.



<?versión xml=”1.0″ codificación=”UTF-8″?>
<LightningComponentBundle xmlns=”http://soap.sforce.com/2006/04/metadata”>
<apiVersion>58.0</apiVersion>
<isExposed>verdadero</isExposed>
<target>relámpago__RecordPage</target>
</objetivos>
</LightningComponentBundle>

Prueba de concepto

Evaluación formativa:

¡Quiero saber de ti!

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

Seguir leyendo