Retour au blog
DevOps

Automatisation d'APIs avec Zapier

28 Nov 2024 6 min
ZapierAPIAutomatisation

Zapier pour l'automatisation métier

Dans un contexte d'entreprise comme chez ORPI, l'automatisation des processus métier via les APIs est essentielle pour gagner en efficacité.

Cas d'usage courants

  • Synchronisation CRM vers base de données interne
  • Notification Slack sur événements métier
  • Génération automatique de rapports
  • Intégration de formulaires web avec le SI

Créer un webhook personnalisé

// Endpoint Symfony pour recevoir les webhooks Zapier
#[Route('/api/webhook/zapier', methods: ['POST'])]
class ZapierWebhookController extends AbstractController
{
    public function __invoke(
        Request $request,
        MessageBusInterface $bus,
    ): JsonResponse {
        $data = json_decode($request->getContent(), true);

        // Valider le token
        if ($request->headers->get('X-Zapier-Token') !== $this->zapierToken) {
            return $this->json(['error' => 'Unauthorized'], 401);
        }

        // Dispatcher le traitement
        $bus->dispatch(new ProcessZapierDataMessage($data));

        return $this->json(['status' => 'received']);
    }
}

API pour Zapier Triggers

#[Route('/api/zapier/new-leads', methods: ['GET'])]
public function newLeads(LeadRepository $repo): JsonResponse
{
    $leads = $repo->findRecent(limit: 50);
    return $this->json(array_map(fn(Lead $l) => [
        'id' => $l->getId(),
        'name' => $l->getName(),
        'email' => $l->getEmail(),
        'created_at' => $l->getCreatedAt()->format('c'),
    ], $leads));
}

Bonnes pratiques

  • Sécuriser les webhooks avec des tokens
  • Logger toutes les interactions pour le débogage
  • Utiliser des files d'attente pour le traitement asynchrone
  • Documenter les APIs avec OpenAPI pour l'intégration Zapier