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:
taskDocumentCreatedtaskCompletedtaskStoppedByRecipientStopListtaskTrialCreditBlockedtaskCreditBlocked
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