Bonjour !
Dans la leçon précédente, nous avons configuré la tuyauterie qui achemine les appels de Teams vers votre SBC. Vous avez déclaré votre SBC dans Teams et créé les politiques de routage (Voice Routing Policy, PSTN Usage, Voice Route) qui disent à Teams : "Pour ce type de numéro, envoie l'appel à ce SBC".
Nous arrivons maintenant à une étape de configuration tout aussi cruciale, qui se déroule au cœur même de votre SBC.
Introduction
Un appel arrive de Teams sur votre SBC avec un numéro au format E.164 (par exemple, +33123456789). Cependant, votre opérateur téléphonique (le fournisseur de votre ligne SIP/PSTN) s'attend peut-être à recevoir un format national (par exemple, 0123456789). Inversement, un appel entrant du réseau public arrivera peut-être au format national et devra être converti au format E.164 pour que Teams puisse l'identifier.
C'est là qu'intervient la manipulation de numéros (ou Number Translation). L'objectif de cette leçon est de vous apprendre à configurer les règles de manipulation de numéros pour assurer l'interopérabilité entre Teams et le monde extérieur. Votre expérience avec les translation patterns et la manipulation de chiffres en VoIP Cisco vous donnera une excellente base pour aborder ce sujet.
À la fin de cette leçon, vous saurez :
- Pourquoi et où la manipulation de numéros est nécessaire.
- Utiliser les expressions régulières (Regex) pour définir des modèles de numéros.
- Configurer des règles de traduction pour les appels entrants et sortants.
1. Le Principe : Pourquoi et Où Manipuler les Numéros ?
La manipulation de numéros est le processus qui consiste à modifier le numéro de l'appelant ou de l'appelé pendant le transit d'un appel. En Direct Routing, cela est fondamental pour deux raisons principales :
- Appels Sortants (Teams → SBC → PSTN) : Teams fonctionne nativement avec le format E.164. Votre SBC doit traduire ce numéro dans le format attendu par votre opérateur PSTN.
- Exemple :
+33123456789(Teams) → SBC →0123456789(Opérateur).
- Exemple :
- Appels Entrants (PSTN → SBC → Teams) : Pour que Teams puisse acheminer un appel entrant au bon utilisateur via un processus appelé Reverse Number Lookup (RNL), le numéro de l'appelé doit correspondre exactement au
LineURIde l'utilisateur, qui est au format E.164.- Exemple :
0123456789(Opérateur) → SBC →+33123456789(Teams).
- Exemple :
La configuration de ces règles se fait principalement à deux endroits :
- Sur le SBC lui-même : C'est la méthode la plus courante, la plus puissante et la plus flexible. Chaque fabricant de SBC (AudioCodes, Ribbon, Oracle, etc.) propose une interface ou des lignes de commande pour créer des règles de manipulation très granulaires.
- Dans Teams (côté service) : Microsoft permet d'appliquer des règles de traduction simples directement sur l'objet "gateway" (votre SBC déclaré dans Teams). C'est utile pour des ajustements globaux, mais moins flexible que la configuration sur le SBC.
Dans la pratique, la grande majorité des manipulations complexes se fait sur le SBC.
2. L'Outil Indispensable : Les Expressions Régulières (Regex)
Pour définir "quel type de numéro" doit être modifié, on utilise un langage de description de chaînes de caractères appelé Expressions Régulières ou Regex. C'est un concept que vous retrouverez partout en informatique et en télécoms.
La vidéo suivante est une excellente introduction, concise et orientée téléphonie, qui vous expliquera les bases de la syntaxe Regex.
Microsoft Teams Deep Dive into Direct Routing
Cette vidéo de la conférence Commsverse décompose la syntaxe Regex utilisée dans le routage vocal Teams. C'est un excellent point de départ pour comprendre comment construire vos règles.
Regardez attentivement de 27:39 à 35:07. Concentrez-vous sur la signification des symboles : ^, $, \d, [], {}, (), et $ dans les remplacements. Le présentateur donne également des conseils précieux, comme l'importance de tester ses Regex avec des outils en ligne (ex: regex101.com).
Pour résumer les points clés à retenir pour la téléphonie :
| Symbole | Signification | Exemple | Description |
|---|---|---|---|
^ |
Début de chaîne | ^0 |
Commence par un 0. |
$ |
Fin de chaîne | \d{4}$ |
Se termine par 4 chiffres. |
\d |
Un chiffre (digit) | \d\d\d\d |
Exactement 4 chiffres. |
[] |
Un caractère parmi... | [1-5] |
Un chiffre de 1 à 5. |
{n} |
Exactement n fois | \d{9} |
Exactement 9 chiffres. |
() |
Groupe de capture | ^0(\d{9})$ |
Capture les 9 chiffres qui suivent le 0 initial. |
$n |
Référence de capture | $1 |
Fait référence au contenu du premier groupe de capture (). |
3. La Pratique : Configurer les Règles de Traduction
Maintenant que vous avez la théorie et les outils, voyons comment appliquer cela.
Option 1 : Manipulation dans Teams (Simple & Global)
Microsoft permet d'attacher des règles de traduction directement à la configuration de la passerelle PSTN dans Teams. C'est fait via PowerShell.
Translate phone numbers for Direct Routing
La documentation officielle de Microsoft explique ce mécanisme. Elle est très orientée PowerShell, ce qui correspond à votre préférence.
Lisez les sections d'introduction sur la traduction pour les appels sortants et entrants. Ensuite, portez une attention particulière à la section Configuring translation rules with PowerShell et à la section Example SBC configuration. Observez comment la commande New-CsTeamsTranslationRule crée une règle (avec un Pattern et une Translation) et comment elle est ensuite appliquée à une passerelle via New-CSOnlinePSTNGateway et les paramètres -OutboundPSTNNumberTranslationRules et -InboundTeamsNumberTranslationRules.
Voici un exemple concret. Imaginons que vous voulez retirer le + de tous les numéros sortants.
-
Créer la règle de traduction :
New-CsTeamsTranslationRule -Identity "StripPlus" -Pattern "^\+(.*)$" -Translation "$1"Pattern:^\+(.*)$signifie "Commence par un+(le\est un caractère d'échappement), puis capture tout ce qui suit(.*)jusqu'à la fin."Translation:$1signifie "Remplace toute la chaîne par le contenu du premier groupe capturé".- Résultat :
+33123456789devient33123456789.
-
Appliquer la règle au SBC :
Set-CSOnlinePSTNGateway -Identity "sbc.votreentreprise.fr" -OutboundPSTNNumberTranslationRules @{Add="StripPlus"}L'image ci-dessous montre la sortie de la commande
Get-CsOnlinePSTNGatewayoù vous pouvez voir les champs où ces règles sont listées (ici, ils sont vides).

Option 2 : Manipulation sur le SBC (Standard de l'Industrie)
C'est là que la véritable puissance de manipulation réside. Bien que la configuration soit spécifique à chaque vendeur, les concepts sont universels. Nous allons utiliser un guide de configuration pour un SBC AudioCodes comme exemple pour illustrer ces concepts.
Connecting AudioCodes SBC to Microsoft Teams Direct Routing
Ce document technique, bien que spécifique à AudioCodes, est excellent pour comprendre la logique de manipulation sur un SBC. Ne vous concentrez pas sur les clics exacts, mais sur les concepts de 'Dial Plan' et 'Message Manipulation'.
Parcourez les sections 2.11 ('Configuring the Dial Plan'), 2.12 ('Configuring Call Setup Rules') et 2.13 ('Configuring Message Manipulation Rules'). Notez dans la table 10 (section 2.11) comment un 'Dial Plan' associe un Prefix (un modèle de numéro, ex: +19098[0000-9999]) à un Tag. C'est l'étape de 'matching'. Observez dans la section 2.13 comment les 'Message Manipulation Rules' peuvent ensuite modifier des en-têtes SIP (Action Subject, Action Type, Action Value) en fonction de conditions. C'est l'étape de 'manipulation'.
Exemple de Flux Logique sur un SBC :
Imaginons la configuration suivante sur votre SBC pour les appels entre la France (Teams) et un opérateur national.
-
Scénario 1 : Appel Sortant (Teams → Opérateur)
- Réception : Le SBC reçoit un INVITE de Teams pour
sip:+33123456789@... - Règle de manipulation sortante : Une règle est configurée pour le trafic allant vers l'opérateur.
- Condition (Pattern) : Le numéro de destination commence par
+33et est suivi de 9 chiffres. En Regex :^\+33(\d{9})$. - Action (Translation) : Remplacer le numéro par
0suivi des 9 chiffres capturés. En Regex :0$1.
- Condition (Pattern) : Le numéro de destination commence par
- Envoi : Le SBC envoie un nouvel INVITE à l'opérateur pour
sip:0123456789@...
- Réception : Le SBC reçoit un INVITE de Teams pour
-
Scénario 2 : Appel Entrant (Opérateur → Teams)
- Réception : Le SBC reçoit un INVITE de l'opérateur pour
sip:0123456789@... - Règle de manipulation entrante : Une règle est configurée pour le trafic allant vers Teams.
- Condition (Pattern) : Le numéro de destination commence par
0et est suivi de 9 chiffres. En Regex :^0(\d{9})$. - Action (Translation) : Remplacer le numéro par
+33suivi des 9 chiffres capturés. En Regex :+33$1.
- Condition (Pattern) : Le numéro de destination commence par
- Envoi : Le SBC envoie un nouvel INVITE à Teams pour
sip:+33123456789@.... Teams peut alors trouver l'utilisateur et faire sonner son client.
- Réception : Le SBC reçoit un INVITE de l'opérateur pour
Cette logique de match-and-replace est le cœur de la configuration sur n'importe quel SBC certifié pour le Direct Routing.
Conclusion
Vous maîtrisez désormais l'un des aspects les plus techniques et les plus importants du Direct Routing. Sans une manipulation correcte des numéros, les appels ne peuvent tout simplement pas être établis.
Points clés à retenir :
- La manipulation des numéros est essentielle pour adapter les formats entre le monde E.164 de Teams et les formats variés des opérateurs PSTN.
- Cette manipulation se fait principalement sur le SBC pour sa flexibilité, bien que des règles simples puissent être appliquées côté Teams.
- Les expressions régulières (Regex) sont le langage standard pour définir les modèles de numéros à transformer. Maîtriser les bases de Regex est un atout majeur.
- La logique est toujours la même : définir un pattern pour identifier le numéro, et une translation pour le réécrire dans le format désiré.
Prochaine étape :
Nous avons maintenant toutes les pièces du puzzle en place : le SBC est connecté, les routes sont définies et la manipulation des numéros est configurée. Dans la prochaine leçon, nous passerons à la phase la plus satisfaisante : valider le fonctionnement d'un appel entrant et sortant de bout en bout et apprendre à diagnostiquer les premiers problèmes.