🚀 IntĂ©gration JobPhoning ↔ noCRM.io

🚀 IntĂ©gration automatisĂ©e entre une plateforme d’appels (JobPhoning) et noCRM.io

🧠 Contexte du projet

Dans le cadre d’un projet d’automatisation commerciale, j’ai dĂ©veloppĂ© une intĂ©gration permettant de synchroniser automatiquement les donnĂ©es issues d’une plateforme d’appels sortants (type JobPhoning) avec le CRM noCRM.io.

L’objectif Ă©tait simple :

Lorsqu’un tĂ©lĂ©opĂ©rateur marque un appel comme “Projet dĂ©tectĂ©â€, une opportunitĂ© se crĂ©e automatiquement dans le CRM, sans action manuelle.

Ce projet m’a permis de travailler sur :

  • La gestion et la validation de webhooks entrants en PHP,
  • Le traitement et nettoyage de donnĂ©es JSON complexes,
  • L’écriture de fichiers CSV de suivi,
  • Et l’intĂ©gration via API REST vers noCRM.io.

đŸ§© Architecture technique

🔾 1. Webhook PHP

La plateforme d’appels envoie une requĂȘte HTTP POST contenant un JSON complet vers un script PHP :

https://example.com/jobphoningtonocrm/receive_json.php

Le webhook reçoit des structures JSON de ce type :

{
  "Client": {
    "Nom": "Dupont",
    "Societe": "Entreprise Test",
    "TelephoneFixe": "+33123456789"
  },
  "HistoriqueAppel": [
    {
      "Etat": "Projet détecté",
      "DateAppel": "2025-07-02 15:00:00",
      "Teleoperateur": { "Login": "Yohan" },
      "Commentaire": "Client intéressé par un devis."
    }
  ]
}

Le script a pour rĂŽle de :

  1. Lire la requĂȘte et enregistrer les donnĂ©es brutes,
  2. Enregistrer tous les appels dans un CSV global (webhook_output_all.csv),
  3. Enregistrer uniquement les projets détectés dans un autre CSV (webhook_output_projet_detecte.csv),
  4. DĂ©clencher la crĂ©ation d’un lead dans noCRM.io lorsque Etat = "Projet dĂ©tectĂ©".

🔾 2. Traitement et stockage des donnĂ©es

Les données sont nettoyées, formatées et enrichies avant écriture.
Chaque ligne du CSV représente un appel et contient :

| timestamp | ip | client_id | nom | societe | siret | adresse | ville | code_postal | activité | téléphone | email | état_appel | durée | date_appel | téléopérateur | commentaire |

Les fichiers CSV servent de :

  • Journal d’audit pour retracer chaque appel,
  • Source de secours en cas d’erreur rĂ©seau,
  • Support de monitoring pour le suivi d’intĂ©gration.

🔾 3. IntĂ©gration avec l’API noCRM.io

DĂšs qu’un appel est identifiĂ© comme “Projet dĂ©tectĂ©â€, le script envoie une requĂȘte POST Ă  l’API noCRM.io :

POST https://example.nocrm.io/api/v2/leads

Authentification :

X-API-KEY: [masquée]

Corps de la requĂȘte :

{
  "title": "Entreprise Test",
  "description": "Client : M. Dupont - Téléphone : +33123456789 - Commentaire : Client intéressé",
  "tags": ["Projet détecté", "JobPhoning"],
  "step": "Infos OK"
}

RĂ©sultat : une opportunitĂ© apparaĂźt automatiquement dans le pipeline “Infos OK” du CRM, associĂ©e au commercial correspondant.


⚙ Stack et environnement

ÉlĂ©mentDescription
LangagePHP 8.2
ServeurNginx + PHP-FPM (Debian)
Authentification APIX-API-KEY (clé noCRM.io)
Format de stockageCSV
JournalisationLogs détaillés avec IP et horodatage
SĂ©curitĂ©Validation JSON + filtrage d’adresses IP JobPhoning

đŸ§Ș Tests & validation

Pour valider la bonne intĂ©gration, j’ai utilisĂ© cURL pour simuler les requĂȘtes envoyĂ©es par la plateforme d’appels :

curl -X POST https://example.com/jobphoningtonocrm/receive_json.php \
  -H "Content-Type: application/json" \
  -d '{
    "Client": {"Nom": "Dupont", "Societe": "Entreprise Test"},
    "HistoriqueAppel": [{"Etat": "Projet détecté"}]
  }'

✅ RĂ©sultats attendus :

  • webhook_output_all.csv → enregistrement complet,
  • webhook_output_projet_detecte.csv → ajout du lead,
  • CrĂ©ation automatique d’une opportunitĂ© CRM visible dans noCRM.io.

📈 RĂ©sultat final

Avant : Les téléopérateurs notaient manuellement les prospects détectés et les commerciaux les saisissaient ensuite dans le CRM.
AprĂšs : Les appels “Projet dĂ©tectĂ©â€ sont automatiquement transformĂ©s en opportunitĂ©s en temps rĂ©el.

⏱ Temps de traitement : moins d’une seconde entre la fin de l’appel et l’apparition dans noCRM.io.

Ce projet a permis :

  • Un gain de productivitĂ© significatif,
  • Une meilleure traçabilitĂ© des appels,
  • Et une intĂ©gration fiable sans tĂąche manuelle.

🧰 Exemple de code (extrait simplifiĂ©)

if (mb_strtolower($appel['Etat']) === 'projet détecté') {
    $leadData = [
        'title' => $client['Societe'] ?? 'Prospect',
        'description' => sprintf(
            "Nom: %s\nTéléphone: %s\nCommentaire: %s",
            $client['Nom'] ?? '',
            $client['TelephoneFixe'] ?? '',
            $appel['Commentaire'] ?? ''
        ),
        'tags' => ['Projet détecté', 'JobPhoning'],
        'step' => 'Infos OK'
    ];

    $ch = curl_init('https://example.nocrm.io/api/v2/leads');
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_HTTPHEADER => [
            "X-API-KEY: [masquée]",
            "Content-Type: application/json"
        ],
        CURLOPT_POSTFIELDS => json_encode($leadData),
        CURLOPT_SSL_VERIFYPEER => true
    ]);

    $response = curl_exec($ch);
    curl_close($ch);
}

🔗 Ressources et code source


💬 Conclusion

Ce projet illustre une intégration temps réel entre un outil de prospection et un CRM, permettant de :

  • Automatiser la conversion des leads qualifiĂ©s,
  • Centraliser les informations de contact,
  • Et fluidifier le passage entre Ă©quipes marketing et commerciales.

Une automatisation simple, robuste et efficace — entiĂšrement rĂ©alisĂ©e en PHP natif et API REST.