Navigation
API CX-Engine · 4 min de lecture

Historique des appels

Listez les appels téléphoniques reçus par CX-Engine pour un compte client, avec filtres, tri et pagination.

CX-Engine enregistre chaque appel reçu du PBX (via CRM Lookup ou en le récupérant directement sur le PBX) avant de le traiter et de le pousser dans le CRM connecté. Cet endpoint liste ces appels enregistrés.

GET /api/crm/phone-calls lit les appels enregistrés dans CX-Engine. GET /api/crm/lookup/phone-calls lit les appels enregistrés dans le CRM connecté (voir CRM Lookup).

En-têtes : Authorization: Bearer {token-workspace}


#GET /api/crm/phone-calls

Retourne une liste paginée des appels du client sélectionné, du plus récent au plus ancien.

Requiert le scope OAuth client et la permission crm-phone-call.view. Le client est sélectionné avec le paramètre de requête customer_account (voir Choix du compte client).

Paramètres de requête

Paramètre Description
customer_account Requis. Code de compte client
filter[direction] inbound, outbound ou internal
filter[status] completed, failed, busy ou no-answer
filter[answered] Appel décroché ou non (1 ou 0)
filter[processing_status] pending, queued, in_progress, completed, skipped ou failed
filter[number_from] Numéro de l'appelant
filter[number_to] Numéro de l'appelé
filter[number_did] Numéro SDA (DID)
filter[start_time] Heure de début de l'appel
filter[end_time] Heure de fin de l'appel
filter[duration] Durée en secondes
filter[subject] Objet de l'appel
filter[body] Notes de l'appel
filter[agent_first_name] Prénom de l'agent
filter[agent_last_name] Nom de l'agent
filter[agent_email] Adresse email de l'agent
filter[pbx3cx_host_id] ID de l'hôte 3CX d'origine de l'appel
filter[pbx3cx_call_id] ID de l'appel sur le PBX 3CX
include Relations à charger, séparées par des virgules : segments, logs
sort start_time, end_time, created_at ou updated_at. Préfixer par - pour un ordre décroissant. Par défaut : -start_time
per_page Résultats par page (défaut : 20)
page Numéro de page

Les filtres texte acceptent des valeurs partielles (filter[agent_email]=acme.com renvoie tous les agents de ce domaine).

Réponse 200 : réponse paginée

{
  "current_page": 1,
  "data": [
    {
      "id": 1842,
      "uuid": "9b1d6c1e-6f0a-4c7e-9a43-2f5d8a7b1c20",
      "source": "3cx",
      "ingested_via": "webhook",
      "customer_id": 12,
      "pbx3cx_host_id": 3,
      "pbx3cx_call_id": "48211",
      "processing_status": "completed",
      "processing_step": "complete",
      "number_from": "+33612345678",
      "number_to": { "number": "201" },
      "number_did": "+33142000000",
      "direction": "inbound",
      "status": "completed",
      "answered": true,
      "start_time": "2026-10-08T09:15:02.000000Z",
      "end_time": "2026-10-08T09:19:40.000000Z",
      "duration": {
        "y": 0, "m": 0, "d": 0, "h": 0, "i": 0, "s": 278, "f": 0,
        "invert": 0, "days": false, "from_string": false
      },
      "subject": "Support call",
      "body": null,
      "recording_url": null,
      "agent_first_name": "Bob",
      "agent_last_name": "Smith",
      "agent_email": "bob@acme.com",
      "queue_extension": "800",
      "created_at": "2026-10-08T09:19:41.000000Z",
      "updated_at": "2026-10-08T09:20:05.000000Z"
    }
  ],
  "first_page_url": "https://acme.cx-engine.app/api/crm/phone-calls?page=1",
  "from": 1,
  "last_page": 12,
  "last_page_url": "https://acme.cx-engine.app/api/crm/phone-calls?page=12",
  "links": [...],
  "next_page_url": "https://acme.cx-engine.app/api/crm/phone-calls?page=2",
  "path": "https://acme.cx-engine.app/api/crm/phone-calls",
  "per_page": 20,
  "prev_page_url": null,
  "to": 20,
  "total": 231
}

Notes sur les champs

Champ Description
source PBX d'origine de l'appel : 3cx ou yeastar
ingested_via Mode de réception de l'appel : webhook (poussé via l'API) ou pbx_pull (récupéré sur le PBX)
processing_status Avancement du traitement (enregistrements, transcription, envoi au CRM…)
processing_step Étape en cours du traitement, complete une fois terminé
number_from, number_to, number_did Les numéros externes sont des chaînes au format E.164 ; les extensions internes sont des objets comme { "number": "201" }
duration Objet intervalle ; la durée en secondes se trouve dans s

Réponse 403 : aucun client sélectionné, ou accès non autorisé