REDA One Centro de ayuda
ES
Idioma
English EN Español ES Português PT Italiano próximamente Français FR Deutsch próximamente العربية próximamente
reda.one ↗
Inicio / REDA AI / Canales e implementación / Gestión de respuestas de correo

Gestión de respuestas de correo

Seguimiento de respuestas Cuando un agente envía un correo y el destinatario responde, REDA AI puede detectar la respuesta, hacerla coincidir con el correo saliente original y activar el siguiente paso — ya sea disparando una acción programada previamente o encaminando el texto de la respuesta hacia un nuevo turno del agente. Esto es lo que convierte los correos aislados en conversaciones de correo de varios pasos.

Qué cubre esta página

La gestión de respuestas de correo es el lado entrante del correo iniciado por el agente. Se complementa con otras dos funciones:

  • Canal de correo — Saliente — cómo el agente envía el correo original y lo etiqueta para el seguimiento de respuestas con una group_key.
  • Acciones programadas — cómo se almacenan y ejecutan las acciones de seguimiento, incluidas las activadas por respuesta.

No es lo mismo que Canal de correo — Entrante, que sirve para la recepción no solicitada de documentos en una dirección de Servicio de correo administrada por Salesforce.

Cómo funciona la detección de respuestas

REDA AI expone una acción invocable de Apex, Process Inbound Emails, que inspecciona los registros EmailMessage recién llegados y decide si son respuestas a correos iniciados por el agente. Los clientes la conectan con un Flujo activado por registro en EmailMessage.

  1. El agente envía un correo

    El agente llama a send_email con una group_key. La plataforma estampa el Id y el asunto del EmailMessage resultante en cualquier Acción programada pendiente con seguimiento de respuesta que comparta esa clave de grupo. Consulta Canal de correo — Saliente.

  2. Se capturan las respuestas entrantes

    Las respuestas entrantes llegan a través de la infraestructura de correo de Salesforce que esté configurada — normalmente Correo a caso, aunque la función es independiente de la infraestructura. Cada respuesta genera un registro EmailMessage con Incoming = true.

  3. Se dispara el Flujo

    Un Flujo activado por registro en EmailMessage creado por el cliente (después de insertar, filtrado a los entrantes) llama a la acción invocable Process Inbound Emails con los Ids de los nuevos EmailMessage.

  4. Verificación de salida rápida

    El controlador ejecuta una sola consulta SOQL para comprobar si existe alguna Acción programada pendiente con seguimiento de respuesta. Si no hay ninguna, regresa de inmediato. En promedio, la mayoría de las organizaciones casi no consumen tiempo de Apex aquí.

  5. Coincidencia asíncrona

    Si existen acciones pendientes, el controlador pone en cola un Queueable que ejecuta la coincidencia real contra los registros EmailMessage entrantes.

  6. Estrategia de coincidencia

    El Queueable usa dos comparadores: una robusta coincidencia por hilo principal (el EmailMessage principal de la respuesta entrante es igual al Id del EmailMessage saliente rastreado) y una alternativa por línea de asunto (con los prefijos “Re:/Fwd:” normalizados y eliminados) cuando el mensaje principal no está definido.

  7. Se activa la acción

    Por cada respuesta que coincide, la Acción programada correspondiente sale del estado pendiente. Si la acción está configurada para procesar con IA, el texto de la respuesta se encamina hacia un nuevo turno del agente; de lo contrario, la carga de la acción (por ejemplo, un correo saliente con plantilla o una actualización de registro) se ejecuta directamente.

Cómo configurarlo

Paso 0 — Activa el seguimiento de respuestas de correo

Email Reply Tracking viene desactivado, y nada de lo que sigue funciona hasta que lo actives. Es un ajuste de plataforma (REDA AI Administration › Configuration › System & Notifications). El controlador lo comprueba en primer lugar en cada correo entrante y termina de inmediato si está apagado, así que un Flujo perfectamente construido, con las condiciones de entrada correctas y agentes bien configurados, se quedará sin hacer nada, sin error y sin nada en los registros que explique por qué.

El seguimiento de respuestas también requiere que Enhanced Email esté habilitado en la organización, porque es lo que hace que Salesforce cree los registros EmailMessage que todo el mecanismo lee.

Paso 1 — Confirma que las respuestas se convierten en registros EmailMessage

La gestión de respuestas depende de que las respuestas entrantes lleguen a Salesforce como registros EmailMessage. La mayoría de las organizaciones ya lo tienen mediante Correo a caso. Otras configuraciones válidas incluyen Lightning Email Relay, Correo a Salesforce con el enrutamiento adecuado o un Servicio de correo personalizado que cree por sí mismo los registros EmailMessage.

La plataforma usa SOQL dinámico para leer EmailMessage, por lo que el paquete compila incluso en organizaciones donde el objeto no está disponible. En esas organizaciones, la gestión de respuestas simplemente no hace nada.

Paso 2 — Crea el Flujo activado por registro

  1. Objeto: EmailMessage

    Configura el Flujo como activado por registro en EmailMessage, disparado después de que se crea un registro.

  2. Condición de entrada: Incoming = TRUE

    Filtra solo los correos entrantes. Los EmailMessage salientes no necesitan gestionarse aquí.

  3. Opcional: filtrado más estricto

    Si quieres acotar el Flujo a casos de uso de correo específicos — solo los vinculados a casos concretos, o excluyendo determinados buzones — agrega condiciones de entrada adicionales. La acción invocable es segura de llamar con cualquier EmailMessage entrante, por lo que dispararla de más solo cuesta un poco de Apex.

  4. Agrega la acción de Apex

    Pasa el Id del registro que activó el Flujo como la colección de entrada. La acción acepta una lista de Ids de EmailMessage; el Flujo solo tiene un registro por disparo, pero la acción invocable admite cualquiera de las dos formas.

  5. Activa

    Guarda y activa el Flujo. A partir de este punto, cada respuesta entrante se ofrece a la plataforma para la coincidencia.

Paso 3 — Configura los agentes para que usen acciones programadas con seguimiento de respuesta

El Flujo solo cumple su función si hay Acciones programadas pendientes con seguimiento de respuesta con las que coincidir. Asegúrate de que el agente que envía los correos salientes también llame a schedule_action con activadores de respuesta cuando corresponda, y de que ambas llamadas compartan la misma group_key. Consulta Acciones programadas para conocer el contrato de la acción.

Paso 4: dirige las respuestas a una dirección que llegue aquí

Todo lo anterior solo se pone en marcha cuando una respuesta ha llegado realmente a Salesforce. Adónde va una respuesta lo decide la dirección a la que contesta el cliente de correo del destinatario, así que un agente puede establecer una dirección de respuesta en los correos que envía, y esa dirección es la que cierra el círculo. Apúntala al buzón conectado al enrutamiento del Paso 1 y la respuesta volverá a la conversación; apúntala a un buzón sin supervisar y la respuesta nunca se verá aquí, por bien configurado que esté el Flujo.

La dirección de respuesta se define mediante las instrucciones del agente que envía; consulta Elegir el remitente y la dirección de respuesta. Si un agente establece una dirección de respuesta que no puede devolver la respuesta, el correo se envía igualmente y la discrepancia queda registrada, de modo que un circuito que no lleva a ninguna parte se puede detectar.

Novedad en la V1.14. Antes, los agentes no establecían ninguna dirección de respuesta, así que las respuestas seguían la dirección de envío que se hubiera usado. Poder indicarla expresamente es lo que hace posible un ciclo de ida y vuelta fiable.

Dos estrategias de coincidencia

El Queueable usa dos estrategias, en orden:

Estrategia Cómo coincide Fiabilidad
Coincidencia por hilo principal El ParentId de la respuesta entrante (o el mensaje saliente al que se enlaza en el hilo) es igual al Id del EmailMessage saliente rastreado que se estampó en la Acción programada. La más sólida. Se usa siempre que el enlace de hilos de Salesforce ha completado la referencia al mensaje principal.
Alternativa por asunto El asunto normalizado de la respuesta entrante (con los prefijos Re:, Fwd: y similares eliminados) es igual al asunto normalizado almacenado en la Acción programada. Útil cuando no se produjo el enlace de hilos, o cuando la respuesta llegó a través de una infraestructura que no conserva las referencias al mensaje principal.

La coincidencia por asunto es, de forma intencionada, una alternativa. Si un mismo asunto se reutiliza en varias Acciones programadas para el mismo destinatario, cuenta con que la coincidencia por hilo principal se encargue de la desambiguación; de lo contrario, diseña el agente para que use asuntos únicos.

Qué sucede tras una coincidencia

El indicador Process Via AI de la Acción programada determina qué sucede a continuación:

  • Process Via AI = true — el texto de la respuesta entrante se encamina hacia un nuevo turno del agente original. El agente ve la respuesta como si el usuario la hubiera escrito y produce la siguiente respuesta (que, a su vez, puede programar otro correo con seguimiento de respuesta).
  • Process Via AI = false — la carga predefinida de la Acción programada se ejecuta directamente. Este es el patrón adecuado para guiones fijos: un correo de agradecimiento con plantilla, una actualización de estado de registro, una notificación interna.

En cualquier caso, la Acción programada original sale del estado pendiente para que no pueda dispararse de nuevo. Si el destinatario envía varias respuestas, solo la primera que coincide activa la acción.

Las condiciones también se comprueban aquí

Si la Acción programada que coincide lleva una condición, se comprueba antes de ejecutar nada, exactamente igual que en una acción que se dispara por programación. Que llegue una respuesta no significa por sí solo que la acción deba seguir adelante: el registro al que se refiere puede haber cambiado mientras tanto. Si la condición no se cumple, la acción se marca como Omitida y el motivo queda registrado en ella. Consulta Ejecución condicional para ver cómo se construyen las condiciones.

Cambiado en la V1.14. Las acciones activadas por una respuesta de correo antes ignoraban por completo su condición y se ejecutaban de todos modos. Ahora la respetan como cualquier otra acción. Si tras actualizar una acción activada por respuesta empieza a aparecer como Omitida, es que antes su condición se estaba ignorando: lee el motivo registrado en la acción.

Observabilidad

  • Registros de Acción programada — el ciclo de vida (Pendiente → Respuesta recibida → Ejecutada) es visible en el registro de la Acción programada. El Id y el asunto del EmailMessage saliente rastreado se almacenan junto con la configuración del activador.
  • Registros de conversación — cuando Process Via AI está activado, el turno del agente activado por la respuesta se agrega a la conversación original, manteniendo coherente el historial de varios turnos.
  • Registro de incidentes — si el EmailMessage entrante no se puede procesar (errores de límites del sistema, excepciones de Apex, datos con formato incorrecto), se crea un registro de Registro de incidentes. El Flujo en sí no se encarga de los reintentos; se aplica el manejo de errores estándar de Salesforce.

Seguridad y gobernanza

  • El Flujo se ejecuta como el usuario que creó el EmailMessage. En el caso de Correo a caso, ese es el usuario de Proceso automatizado; para otras configuraciones depende de tu implementación. El usuario debe tener acceso a los registros de Acción programada para que la coincidencia tenga éxito.
  • No se confía ciegamente en las respuestas. Solo los EmailMessage entrantes cuyo asunto o hilo coincide con una Acción programada pendiente con seguimiento de respuesta llegan a activar algo. El correo no deseado, los rebotes y las respuestas no relacionadas no tienen efecto.
  • Las colisiones de asuntos están acotadas. Cada Acción programada almacena su asunto rastreado con las mayúsculas y minúsculas originales; el comparador normaliza únicamente los prefijos de respuesta, no el cuerpo del asunto, por lo que el único riesgo práctico es que dos agentes no relacionados tengan asuntos idénticos en sus plantillas.
  • Sin respuesta, no hay acción. Las acciones con seguimiento de respuesta están condicionadas a que se reciba efectivamente una respuesta — no se disparan por temporizador. Combínalas con una Acción programada basada en tiempo si también quieres un seguimiento en caso de que el destinatario nunca responda.

Prácticas recomendadas

Siempre empareja send_email y el schedule_action con seguimiento de respuesta en el mismo grupo. La plataforma vincula el correo saliente con la acción solo si ambas llamadas comparten una group_key.

Haz que los asuntos sean distintivos. La coincidencia alternativa por asunto es el mecanismo de seguridad cuando no se produce el enlace de hilos. Cuanto más distintivo sea el asunto, menor será la ambigüedad más adelante.

Usa Process Via AI con moderación. Encaminar las respuestas hacia un nuevo turno del agente es potente, pero consume créditos y capacidad de almacenamiento en caché de prompts. Para simples acuses de recibo o actualizaciones de etapa, una carga con plantilla es más económica y más predecible.

Combina los activadores de respuesta con tiempos de espera. Programa un seguimiento con seguimiento de respuesta y una alternativa basada en tiempo en el mismo grupo. Si la respuesta llega primero, la plataforma dispara la de seguimiento de respuesta; de lo contrario, el temporizador dispara la alternativa.

Mantén el Flujo acotado. Agrega una condición de entrada que filtre el Flujo a Incoming = TRUE como mínimo, y considera filtros más estrictos para las organizaciones de alto volumen. El Apex por cada correo entrante es pequeño, pero no gratuito.

Preguntas frecuentes

Requiere alguna configuración de Salesforce que deposite las respuestas entrantes como registros EmailMessage. Correo a caso es lo más habitual, pero funciona cualquier configuración que genere registros EmailMessage al recibir correo entrante, incluidos los controladores de Servicio de correo personalizados y las configuraciones de Lightning Email Relay.

La plataforma usa SOQL dinámico, por lo que compila sin problemas en organizaciones que no tienen EmailMessage. El seguimiento de respuestas simplemente no se activa allí — los agentes aún pueden enviar correos y programar seguimientos basados en tiempo, solo que no los activados por respuesta.

La lógica de coincidencia implica trabajo asíncrono, SOQL dinámico, comparación normalizada de asuntos y transferencia condicional a una ejecución de agente. Envolverla en una sola acción invocable mantiene el Flujo trivial y permite que la plataforma evolucione la lógica de coincidencia interna sin romper los Flujos de los clientes.

La primera respuesta que coincide activa la Acción programada y la saca del estado pendiente. Las respuestas posteriores no la vuelven a disparar. Para aceptar varios turnos, el agente debe programar una nueva acción con seguimiento de respuesta cada vez que envía un nuevo correo saliente.

El sistema de coincidencia recurre a la comparación de asuntos. El asunto entrante se normaliza (se eliminan los prefijos Re:/Fwd:) y se compara con el asunto rastreado que se almacena en la Acción programada. Si ambos coinciden con una acción pendiente activa, esa acción se activa.

Sí — eso es exactamente lo que hace Process Via AI. El cuerpo de la respuesta se pasa al agente como el siguiente mensaje del usuario en la conversación que comenzó con el correo saliente original.

El Flujo se ejecuta de forma inofensiva. La verificación de salida rápida del controlador no encuentra acciones pendientes con seguimiento de respuesta y regresa de inmediato, con un costo de una sola consulta SOQL por cada correo entrante.

Próximos pasos

Lee Acciones programadas para conocer el ciclo de vida de la acción, incluidos los activadores de respuesta y las alternativas basadas en tiempo, o vuelve a Canal de correo — Saliente para saber cómo conectar el lado saliente con group_key.