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
tokend'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
idexistant met à jour cette destination ; une ligne sansiden crée une nouvelle. - Les lignes dont la CTI appartient à un autre client, ou dont l'
originou ladestinationest 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