Navigation
API CX-Engine · 12 min de lecture

Smart Routings — Contacts de routage

Gérez les contacts de routage utilisés par Smart Routings et leurs champs personnalisés, et importez-les ou exportez-les en masse.

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 type vaut telecom ou email, la définition est créée automatiquement ;
  • sinon la requête échoue avec une erreur 422. Les champs boolean et select doivent 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 id existant met à jour ce contact ; une ligne sans id en crée un nouveau.
  • Les lignes dont l'id appartient à un autre client sont ignorées.
  • Les lignes sans aucune des valeurs id_code, company, telecoms ou emails sont ignorées.
  • Une colonne intitulée avec le code d'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 boolean acceptent 1, true, yes, oui (enregistrés 1) et 0, false, no, non (enregistrés 0).
  • Les champs select acceptent la value d'une option, ou son name, 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" }