Les contacts de routage forment l'annuaire que Smart Routings utilise pour reconnaître un appelant et l'orienter vers une destination dédiée. 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.
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 |
|---|---|
routing-contact.view |
Lire et exporter les contacts |
routing-contact.create |
Créer, importer et supprimer en masse des contacts |
routing-contact.edit |
Modifier des contacts |
routing-contact.delete |
Supprimer un contact |
routing-contact-field-definition.view |
Lire les définitions de champs et leurs options |
routing-contact-field-definition.create |
Créer des définitions de champs |
routing-contact-field-definition.edit |
Modifier des définitions de champs et gérer leurs options |
#Contacts de routage
#L'objet contact
| Champ | Type | Description |
|---|---|---|
id |
integer | ID du contact |
customer_id |
integer | Client auquel appartient le contact |
id_code |
string|null | Votre propre identifiant pour ce contact |
language_code |
string|null | Code de langue du contact |
company |
string|null | Nom de l'entreprise |
first_name |
string|null | Prénom |
last_name |
string|null | Nom |
emails |
string|null | Adresse(s) e-mail servant à reconnaître le contact |
telecoms |
string|null | Numéro(s) de téléphone servant à reconnaître le contact |
email_destination |
string|null | Destination e-mail de ce contact |
telecom_destination |
string|null | Destination téléphonique de ce contact |
fields |
array | Valeurs des champs personnalisés (voir ci-dessous) |
created_at |
string | Date de création (ISO 8601) |
updated_at |
string | Date de dernière modification (ISO 8601) |
Chaque entrée de fields contient sa valeur et sa définition, ce qui évite une seconde requête pour obtenir les libellés :
| Champ | Type | Description |
|---|---|---|
code |
string | Code de la définition de champ |
label |
string|null | Libellé de la définition de champ |
type |
string | telecom, email, boolean ou select |
value |
string | Valeur enregistrée |
options |
array|null | Pour les champs select, les options disponibles sous forme de paires { "name", "value" } ; null sinon |
#GET /api/smart-routings/contacts
Renvoie la liste paginée des contacts de routage du client, du plus récent au plus ancien.
Paramètres de requête
| Paramètre | Description |
|---|---|
filter[id_code] |
Filtrer par code d'identification (correspondance partielle) |
filter[company] |
Filtrer par entreprise (correspondance partielle) |
filter[first_name] |
Filtrer par prénom (correspondance partielle) |
filter[last_name] |
Filtrer par nom (correspondance partielle) |
filter[emails] |
Filtrer par e-mails (correspondance partielle) |
filter[telecoms] |
Filtrer par numéros de téléphone (correspondance partielle) |
filter[telecom_destination] |
Filtrer par destination téléphonique (correspondance exacte) |
filter[language_code] |
Filtrer par code de langue (correspondance exacte) |
filter[search] |
Rechercher dans l'entreprise, le prénom, le nom, les numéros, la destination téléphonique et la destination e-mail |
sort |
Champ de tri : id, company, first_name, last_name, created_at. Préfixez par - pour un tri décroissant. Par défaut : -created_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": 57,
"customer_id": 12,
"id_code": "CUST-0042",
"language_code": "fr",
"company": "Acme Corp",
"first_name": "Alice",
"last_name": "Martin",
"emails": "alice.martin@acme.com",
"telecoms": "+33612345678",
"email_destination": null,
"telecom_destination": "201",
"created_at": "2024-05-02T14:20:00.000000Z",
"updated_at": "2024-05-02T14:20:00.000000Z",
"fields": [
{
"code": "vip",
"label": "VIP",
"type": "boolean",
"value": "1",
"options": null
},
{
"code": "segment",
"label": "Segment",
"type": "select",
"value": "gold",
"options": [
{ "name": "Gold", "value": "gold" },
{ "name": "Silver", "value": "silver" }
]
}
]
}
],
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 1
}
#GET /api/smart-routings/contacts/{contact}
Renvoie un contact de routage avec ses fields.
Réponse 200 — objet contact
Réponse 403 — le contact appartient à un autre client ou la permission est manquante
#POST /api/smart-routings/contacts
Crée un contact de routage.
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
id_code |
string | non | Votre propre identifiant pour ce contact |
language_code |
string | non | Code de langue |
company |
string | non | Nom de l'entreprise |
first_name |
string | non | Prénom |
last_name |
string | non | Nom |
emails |
string | non | Adresse(s) e-mail |
telecoms |
string | non | Numéro(s) de téléphone |
email_destination |
string | non | Destination e-mail |
telecom_destination |
string | non | Destination téléphonique |
fields |
array | non | Valeurs des champs personnalisés |
fields[].code |
string | oui | Code de la définition de champ (lettres, chiffres, - et _ uniquement) |
fields[].value |
string | oui | Valeur à enregistrer |
fields[].type |
string | non | telecom ou email. Utilisé uniquement si le code n'existe pas encore (voir ci-dessous) |
Lorsqu'une entrée de fields fait référence à un code sans définition de champ :
- si
typevauttelecomouemail, la définition est créée automatiquement ; - sinon la requête échoue avec une erreur
422. Les champsbooleanetselectdoivent d'abord être créés via les endpoints des définitions de champs.
Exemple
{
"company": "Acme Corp",
"first_name": "Alice",
"last_name": "Martin",
"telecoms": "+33612345678",
"telecom_destination": "201",
"fields": [
{ "code": "segment", "value": "gold" },
{ "code": "backup_line", "value": "+33142000000", "type": "telecom" }
]
}
Réponse 201 — l'objet contact créé, avec ses fields
Réponse 422 — code de champ boolean ou select inconnu
{
"response": "Unknown field code \"vip\". Boolean/select fields must be created via the field-definition endpoint first.",
"hint": null
}
#PUT /api/smart-routings/contacts/{contact}
Modifie un contact de routage. PATCH est également accepté. Accepte les mêmes champs qu'à la création, tous facultatifs.
Les valeurs envoyées dans fields sont créées ou remplacées une par une ; les champs personnalisés non envoyés conservent leur valeur actuelle.
Réponse 201 — l'objet contact modifié, avec ses fields
#DELETE /api/smart-routings/contacts/{contact}
Supprime un contact de routage.
Réponse 200
{ "response": "element deleted" }
#Opérations en masse
#GET /api/smart-routings/contacts/export
Télécharge les contacts de routage du client sous forme de fichier Excel (routing_contacts.xlsx), triés par entreprise.
Le fichier contient les colonnes id, id_code, language_code, company, first_name, last_name, emails, telecoms, email_destination et telecom_destination, suivies d'une colonne par définition de champ du client (active ou non), triées par position et intitulées avec le code de la définition. Chaque cellule contient la valeur du contact pour ce champ, ou reste vide. Toutes les cellules sont écrites en texte : les numéros de téléphone gardent leur + ou leur 0 initial.
| id | company | telecoms | telecom_destination | vip | segment | destination2 |
|---|---|---|---|---|---|---|
| 12 | Acme | +33612345678 | 200 | 1 | gold | +33600000000 |
Une définition dont le code reprend le nom d'une colonne de base n'est pas exportée.
#POST /api/smart-routings/contacts/import
Importe des contacts de routage 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 : partez d'un export pour construire le fichier.
- Une ligne avec un
idexistant met à jour ce contact ; une ligne sansiden crée un nouveau. - Les lignes dont l'
idappartient à un autre client sont ignorées. - Les lignes sans aucune des valeurs
id_code,company,telecomsouemailssont ignorées. - Une colonne intitulée avec le
coded'une définition de champ renseigne ce champ personnalisé. Une cellule vide supprime la valeur du contact pour ce champ. Un champ sans colonne dans le fichier n'est pas modifié. - Les colonnes qui ne correspondent à aucune définition de champ sont ignorées : créez d'abord les définitions.
- Les champs
booleanacceptent1,true,yes,oui(enregistrés1) et0,false,no,non(enregistrés0). - Les champs
selectacceptent lavalued'une option, ou sonname, enregistré sous sa valeur.
Tout le fichier est validé avant la moindre écriture. Si une ligne contient une valeur de champ personnalisé invalide, rien n'est importé et l'API répond 422.
Réponse 200
{ "response": "Import successful." }
#DELETE /api/smart-routings/contacts/bulk
Supprime des contacts de routage en masse, ainsi que les valeurs de leurs champs personnalisés.
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
ids |
integer[] | non | ID des contacts à supprimer |
Sans
ids, tous les contacts de routage du client sont supprimés.
Réponse 200
{ "response": "elements deleted" }
#Définitions de champs
Les définitions de champs décrivent les champs personnalisés disponibles sur les contacts de routage du client. Une définition ne peut pas être supprimée, car un flux d'appel peut encore faire référence à son code : passez active à false pour la masquer.
#L'objet définition de champ
| Champ | Type | Description |
|---|---|---|
id |
integer | ID de la définition |
customer_id |
integer | Client auquel appartient la définition |
code |
string | Code unique par client, utilisé dans les fields des contacts et dans les flux d'appel. Non modifiable |
label |
string|null | Libellé affiché |
type |
string | telecom, email, boolean ou select. Non modifiable |
position |
integer | Ordre d'affichage |
active |
boolean | Indique si le champ est affiché dans le formulaire du contact |
options |
array | Options d'un champ select (chargées en liste et en détail) |
created_at |
string | Date de création (ISO 8601) |
updated_at |
string | Date de dernière modification (ISO 8601) |
#GET /api/smart-routings/contact-field-definitions
Renvoie la liste paginée des définitions de champs du client, avec leurs options, triées par position.
Paramètres de requête
| Paramètre | Description |
|---|---|
filter[code] |
Filtrer par code (correspondance partielle) |
filter[label] |
Filtrer par libellé (correspondance partielle) |
filter[type] |
Filtrer par type |
filter[active] |
Filtrer par état actif |
sort |
Champ de tri : id, code, label, type, position, created_at. Préfixez par - pour un tri décroissant. Par défaut : position |
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": 3,
"customer_id": 12,
"code": "segment",
"label": "Segment",
"type": "select",
"position": 1,
"active": true,
"created_at": "2024-05-01T09:00:00.000000Z",
"updated_at": "2024-05-01T09:00:00.000000Z",
"options": [
{
"id": 8,
"routing_contact_field_definition_id": 3,
"name": "Gold",
"value": "gold",
"created_at": "2024-05-01T09:01:00.000000Z",
"updated_at": "2024-05-01T09:01:00.000000Z"
}
]
}
],
"current_page": 1,
"last_page": 1,
"per_page": 20,
"total": 1
}
#GET /api/smart-routings/contact-field-definitions/{definition}
Renvoie une définition de champ avec ses options.
Réponse 200 — objet définition de champ
#POST /api/smart-routings/contact-field-definitions
Crée une définition de champ.
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
code |
string | oui | Code unique (255 caractères max. ; lettres, chiffres, - et _ uniquement) |
type |
string | oui | telecom, email, boolean ou select |
label |
string | non | Libellé affiché (255 caractères max.) |
position |
integer | non | Ordre d'affichage (0 min.). Par défaut, après la dernière définition |
active |
boolean | non | Indique si le champ est affiché dans le formulaire du contact |
Réponse 201 — l'objet définition de champ créé
#PUT /api/smart-routings/contact-field-definitions/{definition}
Modifie une définition de champ. PATCH est également accepté. code et type ne sont pas modifiables.
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
label |
string | non | Libellé affiché (255 caractères max.) |
position |
integer | non | Ordre d'affichage (0 min.) |
active |
boolean | non | Indique si le champ est affiché dans le formulaire du contact |
Réponse 201 — l'objet définition de champ modifié
#Options de champ
Les options sont les valeurs autorisées d'une définition de champ select. Appeler ces endpoints sur une définition d'un autre type renvoie une erreur 422.
{ "response": "This field cannot have options.", "hint": null }
#GET /api/smart-routings/contact-field-definitions/{definition}/options
Renvoie toutes les options de la définition. Cette liste n'est pas paginée.
Réponse 200
[
{
"id": 8,
"routing_contact_field_definition_id": 3,
"name": "Gold",
"value": "gold",
"created_at": "2024-05-01T09:01:00.000000Z",
"updated_at": "2024-05-01T09:01:00.000000Z"
}
]
#GET /api/smart-routings/contact-field-definitions/{definition}/options/{option}
Renvoie une option.
Réponse 200 — objet option
Réponse 403 — l'option n'appartient pas à cette définition
#POST /api/smart-routings/contact-field-definitions/{definition}/options
Ajoute une option à une définition select.
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name |
string | oui | Nom affiché (255 caractères max.) |
value |
string | oui | Valeur enregistrée (255 caractères max.) |
Réponse 201 — la liste complète et à jour des options de la définition
#PUT /api/smart-routings/contact-field-definitions/{definition}/options/{option}
Modifie une option. PATCH est également accepté.
Corps de la requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name |
string | non | Nom affiché (255 caractères max.) |
value |
string | non | Valeur enregistrée (255 caractères max.) |
Réponse 201 — la liste complète et à jour des options de la définition
#DELETE /api/smart-routings/contact-field-definitions/{definition}/options/{option}
Supprime une option.
Réponse 200
{ "response": "element deleted" }