Vai al contenuto principale

Tracciare le Attività di Invio con le Sottoscrizioni

send e i flussi correlati restituiscono un ID attività e continuano in modo asincrono.

Per un’esperienza utente in tempo reale in produzione, è preferibile usare le sottoscrizioni invece del polling di task.

Per lo schema generale dell’evento, vedi Formato Evento Sottoscrizione.

Feed e Categoria

Gli eventi delle attività vengono consegnati su:

  • subscribeGroupFeed

Usano:

  • category: "task"

Nomi degli Eventi di Attività

Gli eventi attuali del flusso di lavoro delle attività includono:

  • taskDocumentCreated
  • taskCompleted
  • taskStoppedByRecipientStopList
  • taskTrialCreditBlocked
  • taskCreditBlocked

Payload dell’Evento Attività

I payload delle attività usano questa 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": []
}
}

Operazione di Sottoscrizione

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

Esempio in 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);
}
};

Polling vs Sottoscrizioni

Il polling della query task va bene per:

  • iniziare
  • script semplici
  • debugging

Le sottoscrizioni sono migliori quando si vogliono:

  • aggiornamenti immediati dell’interfaccia utente
  • progresso dell’invio riflesso in tempo reale in un dashboard
  • notifiche di flusso di lavoro senza polling ripetuto