Skip to main content

Someone wanted to learn this too, so Grasp built them a personal learning path.

You can keep exploring this one or create your own

Ajout de X-Headers SIP Personnalisés avec MMR

Bonjour !

Dans la leçon précédente, vous avez appris à utiliser les Message Manipulation Rules (MMR) pour modifier des en-têtes SIP existants, comme le Request-URI et le To, afin de diriger les appels vers des destinations précises au sein de votre centre de contact NICE.

L'objectif de cette leçon est de passer à l'étape supérieure : ajouter des en-têtes SIP personnalisés (X-Headers) pour transporter des données contextuelles. C'est une compétence cruciale pour les intégrations de CTI (Couplage Téléphonie-Informatique), car elle permet d'enrichir l'appel avec des informations précieuses pour l'agent du centre de contact.


Le Rôle des X-Headers dans les Intégrations CTI

Lorsque vous intégrez une plateforme comme NICE, le simple fait de router l'appel vers la bonne file d'attente n'est que la moitié du travail. Le vrai gain de productivité vient de la capacité à transmettre des informations sur l'appelant ou le contexte de l'appel directement à l'agent.

C'est là que les X-Headers entrent en jeu. Ce sont des en-têtes SIP non-standard, généralement préfixés par X-, qui servent de "véhicules" pour transporter des données applicatives. Par exemple, lorsque l'appel arrive sur le poste de l'agent, son bandeau téléphonique peut afficher :

  • Le numéro de client
  • La langue choisie dans le SVI (Serveur Vocal Interactif)
  • Le produit sur lequel l'appelant demande de l'aide

Ces informations sont transportées dans des en-têtes comme ceux-ci, que vous allez apprendre à insérer dans le message INVITE :

INVITE sip:FileAttente_Ventes_FR@nice.cxone.com SIP/2.0
...
From: <sip:+33123456789@sbc.votreentreprise.fr>;tag=1c12
To: <sip:Ventes_Directes@nice.cxone.com>
X-CustomerID: 87345B
X-Language: fr-FR
X-CampaignID: Ventes_Noel_2024
...

Votre mission est de configurer le SBC AudioCodes pour qu'il ajoute ces en-têtes avant d'envoyer l'appel à NICE.


La Syntaxe pour Ajouter un Nouvel En-tête

La logique pour ajouter un en-tête est très similaire à celle pour en modifier un. Nous utilisons une MMR avec une Action Type spécifique. La clé est de savoir comment nommer un en-tête qui n'existe pas encore.

Pour vous familiariser avec la syntaxe de base, je vous invite à consulter ces extraits de la documentation AudioCodes.

Header Examples - AudioCodes

Cette ressource montre des exemples clairs de la syntaxe utilisée pour la manipulation des en-têtes. Elle contient l'information la plus directe sur la manière de créer un nouvel en-tête.

Dans la première table ('Header Field Syntax Examples'), repérez la ligne header.newheader. C'est la syntaxe qu'AudioCodes utilise pour désigner un en-tête qui n'est pas standard ou qui n'existe pas encore. Dans la seconde table ('Header Field Manipulation Rules Examples'), examinez la ligne qui explique comment ajouter un 'newheader'. Elle vous montre la règle complète en action.

Comme vous l'avez vu, la syntaxe est simple :

  • Action Subject : header.X-NomDeMonHeader
  • Action Type : Add
  • Action Value : Une valeur, soit statique (ex: 'ma_valeur'), soit dynamique.

Étape 1 : Ajouter un X-Header avec une Valeur Statique

Commençons par un cas simple. Imaginons que tous les appels arrivant sur le numéro du service "Premium" (0180807080) doivent être tagués avec un X-Header indiquant ce niveau de service.

Header à ajouter : X-ServiceLevel: Premium

Nous allons ajouter une nouvelle règle au Manipulation Set que nous avons créé dans la leçon précédente (MMR_NICE_Outbound).

  1. Allez dans Setup > Signaling & Media > Message Manipulation > Message Manipulation Sets.
  2. Sélectionnez le set MMR_NICE_Outbound et cliquez sur le lien Message Manipulations.
  3. Cliquez sur New pour créer une nouvelle règle.
  4. Configurez la Règle :
    • Name : Add_XHeader_ServiceLevel
    • Message Type : invite.request
    • Condition : header.request-uri.url.user == '0180807080' (La condition qui déclenche la règle)
    • Action Subject : header.X-ServiceLevel (La syntaxe pour notre nouvel en-tête)
    • Action Type : Add
    • Action Value : 'Premium' (N'oubliez pas les apostrophes pour les chaînes de caractères)
  5. Cliquez sur Apply.

C'est tout ! Comme ce set est déjà appliqué à l'IP Group de NICE, tout appel pour le 0180807080 qui sera routé vers NICE contiendra désormais l'en-tête X-ServiceLevel: Premium.

Manipulation Flow in AudioCodes SBC
Ce diagramme rappelle où s'insèrent les manipulations. Nos MMR agissent dans le bloc 'Message Manipulations' sur le trajet sortant ('outbound'), juste avant que l'INVITE ne quitte le SBC vers sa destination.

Étape 2 : Ajouter un X-Header avec une Valeur Dynamique (Variables)

Le vrai pouvoir de la CTI est de transmettre des données dynamiques. Imaginons qu'un système en amont (par exemple, un SVI) ait déjà identifié le client et passe son ID dans un en-tête X-Customer-ID à votre SBC. Votre SBC doit récupérer cette valeur et la placer dans un en-tête X-UUI (User-to-User Information) que NICE s'attend à recevoir.

  • En-tête entrant : X-Customer-ID: 123456
  • En-tête sortant attendu par NICE : X-UUI: customerId=123456

Pour réaliser cette "copie-transformation", nous allons utiliser des variables de session. Le principe est le suivant :

  1. Une première règle lit la valeur de l'en-tête entrant et la stocke dans une variable.
  2. Une seconde règle lit la valeur de cette variable et l'utilise pour construire le nouvel en-tête sortant.

Le guide de référence suivant est indispensable pour comprendre ce mécanisme.

SIP Message Manipulation, Conditions and Call Setup Rules

Ce guide de référence complet explique en détail les fonctionnalités avancées, y compris l'utilisation des variables pour copier des données entre les messages. C'est un concept fondamental pour les manipulations dynamiques.

Lisez attentivement la section 4.5 'Variables for Copying Data between Messages'. Concentrez-vous sur la section 4.5.3 'Session Variable'. L'exemple avec 'X-credit-card' et 'var.session.SIPRec' est une analogie parfaite de ce que nous allons faire. Notez comment une règle 'Modify' est utilisée pour stocker la valeur dans la variable, et une règle 'Add' est utilisée pour la récupérer.

Mettons cela en pratique en ajoutant deux nouvelles règles à notre set MMR_NICE_Outbound.

Règle A : Stocker l'ID client

  • Name : Store_CustomerID_to_Var
  • Message Type : invite.request
  • Condition : header.X-Customer-ID exists (La règle ne s'exécute que si l'en-tête existe)
  • Action Subject : var.session.CustID (Nous créons une variable de session nommée CustID)
  • Action Type : Modify (On utilise Modify pour écrire dans une variable)
  • Action Value : header.X-Customer-ID (On copie la valeur de l'en-tête dans notre variable)

Règle B : Ajouter l'en-tête UUI

  • Name : Add_XHeader_UUI_from_Var
  • Message Type : invite.request
  • Condition : var.session.CustID != '' (La règle ne s'exécute que si notre variable n'est pas vide)
  • Action Subject : header.X-UUI
  • Action Type : Add
  • Action Value : 'customerId=' + var.session.CustID (On concatène une chaîne de caractères avec la valeur de notre variable)

Assurez-vous que la règle "Store" est positionnée avant la règle "Add" dans la table des manipulations pour garantir l'ordre d'exécution. Avec ces deux règles, votre SBC agit comme un traducteur intelligent, assurant le passage de l'information CTI d'un système à l'autre.


Conclusion

Vous avez maintenant ajouté une compétence très recherchée à votre arsenal. Savoir manipuler et enrichir les messages SIP avec des données CTI est au cœur des projets de téléphonie modernes, en particulier avec les centres de contact.

Points Clés à Retenir :

  • Les X-Headers sont des en-têtes SIP personnalisés utilisés pour transporter des données applicatives (CTI).
  • Pour ajouter un nouvel en-tête, on utilise l'Action Type Add dans une MMR, avec comme Action Subject la syntaxe header.X-MonNouvelHeader.
  • La valeur d'un X-Header peut être statique (une chaîne de caractères fixe) ou dynamique.
  • Les variables de session (var.session.NomVariable) sont un mécanisme puissant pour lire une information d'un en-tête, la stocker temporairement, et la réutiliser pour construire un autre en-tête.

Aperçu de la prochaine leçon :

Nous avons configuré des flux d'appels complexes et des manipulations de messages détaillées. Mais comment superviser tout cela à grande échelle et s'assurer que tout fonctionne correctement ? Dans le prochain module, nous prendrons du recul par rapport à la configuration d'un SBC unique pour explorer les outils de gestion centralisée d'AudioCodes. Nous commencerons par OVOC, la plateforme dédiée à la supervision de la santé, des performances et de la qualité de service (QoE) de l'ensemble de votre parc de SBCs.

Can't find a good explanation? Sign up and we'll make it for you

Sign up