Saltar al contenido principal

Rastrear Tareas de Envío con Suscripciones

send y los flujos relacionados devuelven un ID de tarea y continúan de forma asincrónica.

Para una experiencia de usuario en tiempo real en producción, se prefieren las suscripciones en lugar del sondeo de task.

Para el esquema general de eventos, consulta Formato de Evento de Suscripción.

Feed y Categoría​

Los eventos de tareas se entregan en:

  • subscribeGroupFeed

Utilizan:

  • category: "task"

Nombres de Eventos de Tareas​

Los eventos actuales del flujo de trabajo de tareas incluyen:

  • taskDocumentCreated
  • taskCompleted
  • taskStoppedByRecipientStopList
  • taskTrialCreditBlocked
  • taskCreditBlocked

Carga Útil del Evento de Tareas​

Las cargas útiles de tareas usan esta forma base:

{
"version": "1.0",
"eventId": "evt...",
"timestamp": "2026-04-24T10:38:36.822Z",
"level": "INFO",
"event": "taskCompleted",
"category": "task",
"groupId": "grp...",
"userId": "usr...",
"requestId": null,
"batchId": "bch...",
"error": null,
"data": {
"id": "tsk...",
"code": "TSKPROCESSOK",
"documents": []
}
}

Operación de Suscripción​

subscription SubscribeGroupFeed($groupId: String!) {
subscribeGroupFeed(groupId: $groupId) {
groupId
data
}
}

Ejemplo en JavaScript​

const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};

const handleGroupFeed = ({ data }) => {
const wrapper = data?.subscribeGroupFeed;
const event = parseEnvelope(wrapper);

if (event?.category !== 'task') return;

switch (event.event) {
case 'taskCompleted':
console.log('send task completed', event.data.id);
break;
case 'taskDocumentCreated':
console.log('document created inside task', event.data.documents);
break;
case 'taskCreditBlocked':
case 'taskTrialCreditBlocked':
case 'taskStoppedByRecipientStopList':
console.warn('task blocked', event.event, event.data.code);
break;
default:
console.log('task update', event.event, event.data);
}
};

Sondeo vs Suscripciones​

El sondeo de la consulta task está bien para:

  • comenzar
  • scripts simples
  • depuración

Las suscripciones son mejores cuando quieres:

  • actualizaciones inmediatas de la interfaz
  • progreso de envío reflejado en vivo en un panel
  • notificaciones de flujo de trabajo sin sondeos repetidos