curl -X GET https://api.disparador.com/api/campaigns/123 \ -H "X-Access-Token: seu-access-token"
{ "id": 123, "name": "Promoção Black Friday", "description": null, "status": "ACTIVE", "type": "MEDIA", "createdAt": "2024-01-20T14:00:00", "scheduledFor": null, "startedAt": "2024-01-20T14:01:00", "completedAt": null, "pausedAt": null, "totalContacts": 500, "sentContacts": 234, "failedContacts": 5, "pendingContacts": 261, "progressPercentage": 46.8, "successRate": 97.86, "estimatedCompletion": "2024-01-20T16:30:00", "messageContent": "🎉 Black Friday chegou! Até 70% OFF em todos os produtos. Acesse: www.exemplo.com", "mediaType": "image", "mediaUrl": "https://exemplo.com/black-friday.jpg", "fileName": "black-friday-promo.jpg", "evolutionInstance": "whatsapp-01", "minInterval": 5, "maxInterval": 10, "notificationPhone": "5511999999999", "pollData": null, "evolutionConfig": { "id": 1, "name": "WhatsApp Principal", "url": "https://evolution-api.exemplo.com", "instance": "whatsapp-01" } }
Obtém informações detalhadas de uma campanha específica
DRAFT
SCHEDULED
ACTIVE
PAUSED
COMPLETED
CANCELLED
FAILED
// Função para monitorar progresso da campanha async function monitorCampaign(campaignId, accessToken) { const checkProgress = async () => { const response = await fetch( `https://api.disparador.com/api/campaigns/${campaignId}`, { headers: { 'X-Access-Token': accessToken } } ); const campaign = await response.json(); if (campaign.status === 'ACTIVE') { console.log(`[${new Date().toLocaleTimeString()}] ${campaign.name}`); console.log(`Status: ${campaign.status}`); console.log(`Progresso: ${campaign.progressPercentage}% (${campaign.sentContacts}/${campaign.totalContacts})`); console.log(`Taxa de sucesso: ${campaign.successRate}%`); console.log(`Falhas: ${campaign.failedContacts}`); console.log(`Estimativa de conclusão: ${campaign.estimatedCompletion || 'Calculando...'}`); console.log('---'); // Continuar monitorando setTimeout(checkProgress, 30000); // 30 segundos } else { console.log(`Campanha finalizada com status: ${campaign.status}`); console.log(`Total enviado: ${campaign.sentContacts}`); console.log(`Taxa de sucesso final: ${campaign.successRate}%`); } }; checkProgress(); } // Usar monitorCampaign(123, 'seu-access-token');
function calculateCampaignMetrics(campaign) { const metrics = { successRate: campaign.successRate || 0, failureRate: 0, progress: campaign.progressPercentage || 0, estimatedTimeRemaining: null, messagesPerMinute: 0 }; // Taxa de falha if (campaign.sentContacts > 0) { metrics.failureRate = (campaign.failedContacts / campaign.sentContacts * 100).toFixed(2); } // Velocidade de envio if (campaign.startedAt && campaign.sentContacts > 0) { const elapsedMinutes = (new Date() - new Date(campaign.startedAt)) / 60000; metrics.messagesPerMinute = (campaign.sentContacts / elapsedMinutes).toFixed(2); // Tempo restante estimado const remaining = campaign.pendingContacts; if (metrics.messagesPerMinute > 0) { metrics.estimatedTimeRemaining = Math.ceil(remaining / metrics.messagesPerMinute); } } return metrics; } // Exemplo de uso const metrics = calculateCampaignMetrics(campaign); console.log(`Mensagens por minuto: ${metrics.messagesPerMinute}`); console.log(`Tempo restante estimado: ${metrics.estimatedTimeRemaining} minutos`);
Was this page helpful?