Navigation
API CX-Engine · 8 min de lecture

Smart Routings — CTI

Gérez les tables CTI qui associent un numéro entrant à une destination, importez et exportez leurs entrées, et recherchez la destination d'un appelant.

Une CTI est une table de correspondance qui associe une origine (généralement le numéro de l'appelant) à une destination. Consultez Smart Routings pour les notions communes à tous les endpoints Smart Routings.

Tous les endpoints de cette section sont propres à l'espace de travail et nécessitent le scope OAuth client, sauf mention contraire. L'endpoint de recherche accepte aussi le scope cfd.

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

Paramètre de requête obligatoire : customer_account — le compte client concerné. Voir Choix du compte client.

Permission Nécessaire pour
cti.view Lire les CTI et leurs destinations
cti.create Créer des CTI, importer des destinations, supprimer des destinations en masse
cti.edit Modifier une CTI, régénérer son jeton, créer, modifier ou supprimer ses destinations
cti.delete Supprimer une CTI
cti.lookup Rechercher une destination

#CTI

#L'objet CTI

Champ Type Description
id integer ID de la CTI
customer_id integer Client auquel appartient la CTI
name string Nom de la CTI
token string Jeton de 80 caractères utilisé par l'endpoint de recherche par jeton (voir Recherche). Généré par CX-Engine, non modifiable
token_lookup_url string URL de recherche par jeton prête à l'emploi, terminée par le marqueur %CallerNumber%
created_at string Date de création (ISO 8601)
updated_at string Date de dernière modification (ISO 8601)

Toute personne qui connaît le token d'une CTI peut lire ses destinations sans authentification. Traitez-le comme un secret et régénérez-le en cas de fuite.


#GET /api/smart-routings/ctis

Renvoie la liste paginée des CTI du client, de la plus récemment modifiée à la plus ancienne. Chaque CTI inclut un champ destinations_count.

Paramètres de requête

Paramètre Description
filter[name] Filtrer par nom (correspondance partielle)
filter[token] Filtrer par jeton (correspondance partielle)
include Relations à inclure, séparées par des virgules : customer, destinations
sort Champ de tri : id, name, created_at, updated_at. Préfixez par - pour un tri décroissant. Par défaut : -updated_at
per_page Nombre de résultats par page (20 par défaut)
page Numéro de page

Réponse 200 — réponse paginée

{
  "data": [
    {
      "id": 4,
      "customer_id": 12,
      "name": "VIP callers",
      "token": "q8Zb3kV0yR1mN7tXwP2sL5cH9dF4gJ6aE0uI3oK8vB1nM5zQ7xC2yT4rW6eS9pD0hG3jL8fA1kU5iO7mN2b",
      "created_at": "2024-03-04T10:12:00.000000Z",
      "updated_at": "2024-06-18T08:45:00.000000Z",
      "destinations_count": 42,
      "token_lookup_url": "https://acme.cx-engine.app/api/smart-routings/ctis/t/q8Zb3kV0yR1m.../%CallerNumber%"
    }
  ],
  "current_page": 1,
  "last_page": 1,
  "per_page": 20,
  "total": 1
}

#GET /api/smart-routings/ctis/{cti}

Renvoie une CTI avec son customer et ses destinations.

Réponse 200

{
  "id": 4,
  "customer_id": 12,
  "name": "VIP callers",
  "token": "q8Zb3kV0yR1m...",
  "created_at": "2024-03-04T10:12:00.000000Z",
  "updated_at": "2024-06-18T08:45:00.000000Z",
  "token_lookup_url": "https://acme.cx-engine.app/api/smart-routings/ctis/t/q8Zb3kV0yR1m.../%CallerNumber%",
  "customer": { ... },
  "destinations": [
    {
      "id": 101,
      "cti_id": 4,
      "origin": "+33612345678",
      "destination": "201",
      "created_at": "2024-03-04T10:15:00.000000Z",
      "updated_at": "2024-03-04T10:15:00.000000Z"
    }
  ]
}

Réponse 403 — la CTI appartient à un autre client ou la permission est manquante


#POST /api/smart-routings/ctis

Crée une CTI. Son token est généré automatiquement.

Corps de la requête

Champ Type Obligatoire Description
name string oui Nom de la CTI (50 caractères max.)

Réponse 201 — l'objet CTI créé


#PUT /api/smart-routings/ctis/{cti}

Modifie une CTI. PATCH est également accepté. Le token ne peut pas être modifié ici : utilisez l'endpoint de régénération ci-dessous.

Corps de la requête

Champ Type Obligatoire Description
name string non Nom de la CTI (50 caractères max.)

Réponse 201 — l'objet CTI modifié


#POST /api/smart-routings/ctis/{cti}/regenerate-token

Remplace le jeton de la CTI par un nouveau jeton aléatoire de 80 caractères. L'ancien jeton et son URL de recherche cessent de fonctionner immédiatement.

Réponse 200 — l'objet CTI modifié, avec le nouveau token et la nouvelle token_lookup_url


#DELETE /api/smart-routings/ctis/{cti}

Supprime une CTI et toutes ses destinations.

Réponse 200

{ "response": "element deleted" }

#Destinations

Une destination associe une origin à une destination au sein d'une CTI.

Champ Type Description
id integer ID de la destination
cti_id integer CTI parente
origin string Valeur comparée lors de la recherche, par exemple le numéro de l'appelant
destination string Valeur renvoyée quand l'origine correspond, par exemple un poste ou un numéro
created_at string Date de création (ISO 8601)
updated_at string Date de dernière modification (ISO 8601)

#GET /api/smart-routings/ctis/{cti}/destinations

Renvoie toutes les destinations de la CTI. Cette liste n'est pas paginée.

Réponse 200

[
  {
    "id": 101,
    "cti_id": 4,
    "origin": "+33612345678",
    "destination": "201",
    "created_at": "2024-03-04T10:15:00.000000Z",
    "updated_at": "2024-03-04T10:15:00.000000Z"
  }
]

#GET /api/smart-routings/ctis/{cti}/destinations/{destination}

Renvoie une destination.

Réponse 200 — objet destination

Réponse 404 — la destination n'appartient pas à cette CTI


#POST /api/smart-routings/ctis/{cti}/destinations

Ajoute une destination à la CTI.

Corps de la requête

Champ Type Obligatoire Description
origin string oui Origine à comparer (50 caractères max.)
destination string oui Destination à renvoyer (50 caractères max.)

Réponse 201 — l'objet destination créé


#PUT /api/smart-routings/ctis/{cti}/destinations/{destination}

Modifie une destination. PATCH est également accepté.

Corps de la requête

Champ Type Obligatoire Description
origin string non Origine à comparer (50 caractères max.)
destination string non Destination à renvoyer (50 caractères max.)

Réponse 201 — l'objet destination modifié


#DELETE /api/smart-routings/ctis/{cti}/destinations/{destination}

Supprime une destination.

Réponse 200

{ "response": "element deleted" }

#Opérations en masse

#GET /api/smart-routings/ctis/export

Télécharge les destinations CTI du client sous forme de fichier Excel (cti_destinations.xlsx).

Paramètres de requête

Paramètre Type Obligatoire Description
cti_id integer non N'exporter que les destinations de cette CTI

Le fichier contient les colonnes id, cti_id, origin et destination.


#POST /api/smart-routings/ctis/import

Importe des destinations CTI depuis un tableur. Envoyez la requête en multipart/form-data.

Corps de la requête

Champ Type Obligatoire Description
customer_id integer oui ID du client. Doit correspondre au compte client sélectionné
document file oui Tableur (Excel, ou CSV avec ; comme séparateur) avec une ligne d'en-tête

La ligne d'en-tête reprend les colonnes de l'export : id, cti_id, origin, destination.

  • Une ligne avec un id existant met à jour cette destination ; une ligne sans id en crée une nouvelle.
  • Les lignes dont la CTI appartient à un autre client, ou dont l'origin ou la destination est vide, sont ignorées.

Réponse 200

{ "response": "Import successful." }

#DELETE /api/smart-routings/ctis/bulk

Supprime des destinations CTI en masse. Les CTI elles-mêmes sont conservées.

Paramètres de requête

Paramètre Type Obligatoire Description
cti_id integer non Ne supprimer que les destinations de cette CTI

Sans cti_id, les destinations de toutes les CTI du client sont supprimées.

Réponse 200

{ "response": "elements deleted" }

#Recherche

#GET /api/smart-routings/ctis/lookup

Renvoie la destination correspondant à une origine dans une CTI. Accepte le scope OAuth client ou cfd. Nécessite la permission cti.lookup.

Paramètres de requête

Paramètre Type Obligatoire Description
customer_account string oui* Compte client
customer_id integer oui* ID du client
cti_id integer oui** ID de la CTI
cti_name string oui** Nom de la CTI
cti_token string oui** Jeton de la CTI
origin string oui Origine à rechercher, par exemple le numéro de l'appelant

*L'un des paramètres customer_account ou customer_id est obligatoire.
**L'un des paramètres cti_id, cti_name ou cti_token est obligatoire. Si plusieurs sont envoyés, cti_id est prioritaire, puis cti_token, puis cti_name.

Réponse 200 — objet destination

{
  "id": 101,
  "cti_id": 4,
  "origin": "+33612345678",
  "destination": "201",
  "created_at": "2024-03-04T10:15:00.000000Z",
  "updated_at": "2024-03-04T10:15:00.000000Z"
}

Réponse 404 — aucun client, aucune CTI ou aucune destination ne correspond aux paramètres

{ "message": "No destination found matching given parameters." }

#GET /api/smart-routings/ctis/t/{token}/{origin}

Recherche par jeton, conçue pour les PBX ou outils CTI qui ne savent appeler qu'une URL simple. Aucun en-tête Authorization n'est requis : le token de la CTI authentifie la requête et identifie le client, customer_account est donc inutile. Utilisez la token_lookup_url de la CTI en remplaçant %CallerNumber% par le numéro de l'appelant.

GET /api/smart-routings/ctis/t/q8Zb3kV0yR1m.../+33612345678

Réponse 200

{
  "id": 101,
  "origin": "+33612345678",
  "destination": "201"
}

Réponse 404 — jeton inconnu, ou aucune destination pour cette origine