Guide de Configuration
đź“– Retour Ă la Documentation Principale
Ce document fournit une référence complète de configuration pour le TAS Application Server.
Documentation Connexe​
Configuration de Base​
- 📋 README Principal - Vue d'ensemble et démarrage rapide
- 🔧 Guide des Opérations - Surveillance et tâches opérationnelles
- 📊 Référence des Métriques - Métriques Prometheus et surveillance
Interfaces d'Intégration​
- 👥 Interface Sh - Récupération des données des abonnés depuis HSS/Dépôt
- 💳 Chargement en Ligne (Ro) - Intégration OCS et contrôle de crédit
- 📡 SS7 MAP - Requêtes HLR pour le roaming et le renvoi d'appels
Traitement des Appels​
- 🔀 Configuration du Dialplan - Dialplan XML et logique de routage des appels
- 🔢 Traduction de Numéros - Règles de normalisation E.164
- ⚙️ Services Complémentaires - Renvoi d'appels, blocage CLI, urgence
Services à Valeur Ajoutée​
- 📞 Messagerie Vocale - Service de messagerie vocale avec notifications SMS
- 🔊 Invites TTS - Configuration des invites Text-to-Speech
- 👥 Serveur de Conférence IMS - Conférences multi-parties
Tests & Conformité​
- đź§Ş HLR & Simulateur d'Appels - Outils de test
- 📜 Conformité ANSSI R226 - Conformité pour le marché français
Config​
Le serveur d'application a besoin de :
- Se connecter aux SIP Trunks / SBCs pour les appels vers/depuis le réseau externe
- Se connecter au DRA ou HSS pour obtenir le
Sh - Se connecter optionnellement au DRA ou OCS pour le chargement en ligne
Ro - Configuration du Dialplan
- Configuration autour des règles de numérotation / traduction de numéros
- Configuration de la messagerie vocale
- Invites
- Tests
- Métriques (Prometheus)
Configuration du Socket d'Événements​
Le socket d'événements est utilisé pour le contrôle des appels, la surveillance des appels actifs et l'interaction avec le moteur de téléphonie. Cette connexion permet au TAS de contrôler le routage des appels, de récupérer des variables de canal et de gérer des sessions actives.
Emplacement de Configuration : config/runtime.exs
config :tas,
fs_event_socket: %{
host: "127.0.0.1",
port: 8021,
secret: "YourSecretPassword"
}
Paramètres de Configuration :
-
host(string, requis) : Nom d'hôte ou adresse IP du serveur de socket d'événements- Par défaut :
"127.0.0.1"(localhost) - Utilisez localhost si le moteur de téléphonie fonctionne sur le même serveur que TAS
- Utilisez l'IP distante pour les déploiements distribués
- Exemple :
"10.8.82.60"pour une connexion distante
- Par défaut :
-
port(integer, requis) : Port TCP pour les connexions de socket d'événements- Par défaut :
8021 - Le port standard de socket d'événements est 8021
- Doit correspondre à la configuration du socket d'événements dans votre moteur de téléphonie
- Exemple :
8021
- Par défaut :
-
secret(string, requis) : Mot de passe d'authentification pour le socket d'événements- Doit correspondre au mot de passe configuré dans votre moteur de téléphonie
- Utilisé pour l'authentification des connexions ESL
- Remarque de Sécurité : Utilisez un mot de passe aléatoire fort et gardez-le sécurisé
- Exemple :
"cd463RZ8qMk9AHMMDGT3V"
Cas d'Utilisation :
- Contrôle et routage des appels en temps réel
- Récupération des informations d'appel actif pour la vue
/callsdans le Panneau de Contrôle - Exécution d'applications de dialplan de manière programmatique
- Surveillance des changements d'état des appels et des événements
- Gestion des conférences téléphoniques
Comportement de Connexion :
- TAS établit des connexions persistantes au socket d'événements
- Se reconnecte automatiquement en cas d'échec de connexion
- Utilisé pour les modes entrants (recevoir des événements) et sortants (contrôler des appels)
- Les délais d'attente de connexion et la logique de réessai sont intégrés
Considérations de Sécurité :
- Utilisez toujours un mot de passe fort et unique pour le paramètre
secret - Si vous utilisez des connexions distantes, assurez-vous que les règles de pare-feu n'autorisent que les serveurs TAS de confiance
- Envisagez d'utiliser des connexions localhost uniquement lorsque TAS et le moteur de téléphonie sont co-localisés
- Ne pas exposer le port du socket d'événements aux réseaux publics
Dépannage :
- Connexion Refusée : Vérifiez que le moteur de téléphonie fonctionne et que le socket d'événements est activé
- Échec de l'Authentification : Vérifiez que le
secretcorrespond à la configuration du moteur de téléphonie - Erreurs de Délai d'Attente : Vérifiez la connectivité réseau et les règles de pare-feu
- Impossible de Contrôler les Appels : Assurez-vous que TAS est connecté avec succès (vérifiez les journaux)
Configuration du Panneau de Contrôle​
Le Panneau de Contrôle fournit une interface web pour surveiller et gérer le système TAS. Cela inclut la visualisation des abonnés, des CDR, des appels actifs, des pairs Diameter, des passerelles et de la configuration système.
Emplacement de Configuration : config/runtime.exs
config :control_panel,
page_order: ["/application", "/configuration"]
config :control_panel, ControlPanelWeb.Endpoint,
url: [host: "0.0.0.0", path: "/"],
https: [
port: 443,
keyfile: "priv/cert/server.key",
certfile: "priv/cert/server.crt"
]
Paramètres de Configuration :
Configuration de l'Ordre des Pages​
page_order(liste de chaînes) : Contrôle l'ordre d'affichage des pages de configuration dans le Panneau de Contrôle- Spécifie quelles pages apparaissent dans la navigation et leur ordre
- Exemple :
["/application", "/configuration"] - Par défaut : Si non défini, les pages apparaissent dans l'ordre alphabétique par défaut
Configuration de l'Endpoint Web​
-
url(carte) : Configuration de l'URL publique pour le Panneau de Contrôlehost: Nom d'hôte pour générer des URLs (par exemple,"tas.example.com"ou"0.0.0.0")path: Chemin de base pour toutes les routes du Panneau de Contrôle (par défaut :"/")- Utilisé pour générer des URLs absolues dans les redirections et les liens
-
https(carte) : Configuration HTTPS/TLS pour un accès sécuriséport(integer) : Numéro de port HTTPS (le standard est443)keyfile(string) : Chemin vers le fichier de clé privée TLS (format PEM)certfile(string) : Chemin vers le fichier de certificat TLS (format PEM)- Les deux fichiers doivent être lisibles par l'application TAS
Gestion des Certificats :
Le Panneau de Contrôle nécessite des certificats TLS valides pour un accès HTTPS :
-
Certificats Auto-Signés (Développement/Test) :
openssl req -x509 -newkey rsa:4096 -keyout priv/cert/server.key \
-out priv/cert/server.crt -days 365 -nodes -
Certificats de Production :
- Utilisez des certificats d'une Autorité de Certification (CA) de confiance
- Fournisseurs courants : Let's Encrypt (gratuit), CAs commerciaux
- Assurez-vous que les certificats incluent la chaîne complète pour la confiance du navigateur
- Gardez les clés privées sécurisées avec des permissions de fichier appropriées (
chmod 600)
Contrôle d'Accès :
Le Panneau de Contrôle fournit un accès à des données opérationnelles sensibles :
- Informations sur les Abonnés : Détails d'enregistrement, historique des appels, emplacements
- Registres de Détails d'Appels : Enregistrements d'appels complets avec données MSISDN
- Configuration Système : Pairs Diameter, passerelles, routage
- Appels Actifs : Surveillance en temps réel des sessions en cours
Mesures de Sécurité Recommandées :
- Déployez derrière un pare-feu ou un VPN pour les environnements de production
- Utilisez des certificats TLS forts d'une CA de confiance
- Mettez en œuvre des contrôles d'accès au niveau du réseau (liste blanche IP)
- Envisagez des couches d'authentification supplémentaires si exposé à l'extérieur
- Auditez régulièrement les journaux d'accès
- Utilisez uniquement HTTPS - ne jamais servir sur HTTP en clair
Modèles de Déploiement Courants :
-
Accès Interne Uniquement :
url: [host: "10.8.82.60", path: "/"] # Réseau interne uniquement -
Accès Externe avec Domaine :
url: [host: "tas.operator.com", path: "/"]
https: [port: 443, ...] -
Derrière un Proxy Inverse :
url: [host: "tas.internal", path: "/panel"] # Nginx/Apache redirige vers ceci
Dépannage :
- Erreurs de Certificat : Vérifiez que les chemins vers
keyfileetcertfilesont corrects et que les fichiers sont lisibles - Port Déjà Utilisé : Vérifiez si un autre service utilise le port 443, ou changez-le pour un autre port
- Impossible d'Accéder à l'UI : Vérifiez que les règles de pare-feu permettent l'accès au port HTTPS configuré
- Échecs de Handshake SSL : Assurez-vous que le certificat et la clé correspondent et sont au format PEM
Configuration de l'API​
Le TAS inclut une API REST pour un accès programmatique aux fonctions système, à la gestion des abonnés et aux données opérationnelles. L'API prend en charge la documentation OpenAPI/Swagger et est sécurisée avec TLS.
Emplacement de Configuration : config/runtime.exs
config :api_ex,
api: %{
port: 8444,
listen_ip: "0.0.0.0",
product_name: "OmniTAS",
title: "API - OmniTAS",
hostname: "localhost",
enable_tls: true,
tls_cert_path: "priv/cert/server.crt",
tls_key_path: "priv/cert/server.key"
}
Paramètres de Configuration :
-
port(integer, requis) : Port TCP pour le serveur API- Par défaut :
8444 - Choisissez un port qui ne rentre pas en conflit avec d'autres services
- Le port HTTPS standard est 443, mais des ports personnalisés sont courants pour les API
- Exemple :
8444,8443,9443
- Par défaut :
-
listen_ip(string, requis) : Adresse IP à lier au serveur API"0.0.0.0": Écoute sur toutes les interfaces réseau (accès externe)"127.0.0.1": Écoute uniquement sur localhost (accès interne uniquement)- IP spécifique : Lier à une interface particulière (par exemple,
"10.8.82.60") - Sécurité : Utilisez
"127.0.0.1"si l'API n'est nécessaire qu'en interne
-
product_name(string) : Identifiant du produit pour les métadonnées de l'API- Utilisé dans les réponses et la documentation de l'API
- Exemple :
"OmniTAS","MyOperator-IMS"
-
title(string) : Titre lisible par l'homme pour la documentation de l'API- Affiché dans l'en-tête de l'UI OpenAPI/Swagger
- Exemple :
"API - OmniTAS","IMS Application Server API"
-
hostname(string) : Nom d'hôte pour le serveur API dans la documentation- Utilisé dans la spécification OpenAPI pour générer des URLs d'exemple
- Doit correspondre à la façon dont les clients accèdent à l'API
- Exemples :
"localhost","api.operator.com","10.8.82.60"
-
enable_tls(boolean) : Activer ou désactiver TLS/HTTPS pour l'APItrue: Servir l'API sur HTTPS (recommandé pour la production)false: Servir l'API sur HTTP (uniquement pour les tests/développement)- Sécurité : Utilisez toujours
truedans les environnements de production
-
tls_cert_path(string) : Chemin vers le fichier de certificat TLS (format PEM)- Requis lorsque
enable_tls: true - Doit ĂŞtre lisible par l'application TAS
- Exemple :
"priv/cert/server.crt"
- Requis lorsque
-
tls_key_path(string) : Chemin vers le fichier de clé privée TLS (format PEM)- Requis lorsque
enable_tls: true - Doit ĂŞtre lisible par l'application TAS
- Sécurité : Protégez avec des permissions de fichier (
chmod 600) - Exemple :
"priv/cert/server.key"
- Requis lorsque
Fonctionnalités de l'API :
L'API REST fournit un accès programmatique à :
- Gestion et provisionnement des abonnés
- Requêtes de Registres de Détails d'Appels (CDR)
- État et vérifications de santé du système
- État des pairs Diameter
- État et statistiques des passerelles
- Surveillance des appels actifs
- Gestion de la configuration
Documentation OpenAPI/Swagger :
L'API inclut une documentation OpenAPI (Swagger) intégrée :
- Accédez à l'UI Swagger à :
https://hostname:port/api/swaggerui - Spécification JSON OpenAPI à :
https://hostname:port/api/openapi - Test API interactif directement depuis le navigateur
- Documentation complète des points de terminaison avec schémas de requête/réponse
Considérations de Sécurité :
- Authentification : Implémentez une authentification API en fonction de vos exigences de sécurité
- Accès Réseau : Utilisez des règles de pare-feu pour restreindre l'accès API aux clients autorisés
- TLS Requis : Activez toujours TLS en production (
enable_tls: true) - Validation des Certificats : Utilisez des certificats de confiance pour les API de production
- Limitation de Taux : Envisagez d'implémenter une limitation de taux pour les API exposées au public
- Journaux d'Accès : Surveillez les journaux d'accès API pour une activité suspecte
Exemple d'Utilisation :
# Interroger l'API avec curl (remplacez par le point de terminaison réel)
curl -k https://localhost:8444/api/health
# Accéder à la documentation Swagger
https://localhost:8444/api/swaggerui
Scénarios de Déploiement Courants :
-
API Interne Uniquement :
listen_ip: "127.0.0.1" # Accessible uniquement depuis localhost
enable_tls: false # HTTP pour les tests internes -
API de Production avec TLS :
listen_ip: "0.0.0.0" # Accessible depuis le réseau
enable_tls: true # HTTPS requis
hostname: "api.operator.com" -
Développement/Test :
listen_ip: "0.0.0.0"
enable_tls: false # HTTP pour faciliter les tests
port: 8080 # Port non privilégié
Dépannage :
- Échec de Liaison de Port : Vérifiez que le port n'est pas utilisé par un autre service, ou exécutez en tant que root pour les ports < 1024
- Erreurs TLS : Vérifiez que les chemins de certificat et de clé sont corrects et que les fichiers sont lisibles
- Impossible de Se Connecter : Vérifiez que le pare-feu permet l'accès au port configuré
- Mismatch de Certificat : Assurez-vous que
hostnamecorrespond au Nom Commun (CN) ou SAN du certificat - API Retourne 404 : Vérifiez que l'application API a démarré avec succès dans les journaux
Configuration des SIP Trunks​
Ansible est responsable de la création de la configuration XML pour chaque passerelle sortante, visible dans l'onglet Passerelles, qui sont utilisées pour les appels sortants.
Les adresses CSCF et les adresses de passerelle doivent être incluses dans la configuration visible à l'exécution, afin que nous sachions quelles IP autoriser pour les appels, nous faisons cela dans allowed_sbc_source_ips pour les Passerelles / SBCs (sources qui enverront du trafic MT vers le réseau) et allowed_cscf_ips pour les CSCFs (sources d'où le trafic MO sera originaire).
Remarque - Si vous allez router des appels de votre TAS vers lui-même (c'est-à -dire un appel MO vers un abonné sur le réseau qui retourne dans le dialplan MT), alors votre IP TAS doit également être dans la liste des IP sources autorisées.
config :tas,
allowed_sbc_source_ips: ["10.5.198.200", "103.26.174.36"],
allowed_cscf_ips: ["10.8.3.34"],
Depuis l'interface Web, nous pouvons voir l'état de chaque passerelle, et :
- Statut d'enregistrement SIP (si l'enregistrement est activé)
- Domaine SIP
- Adresse Proxy SIP (si utilisée)
- Nom d'utilisateur
- Temps de Ping (Temps de réponse moyen des OPTIONS SIP (si OPTIONS SIP activées))
- Temps de Fonctionnement (Secondes depuis que le profil a été redémarré ou est monté)
- Appels entrants / Appels sortants / Appels échoués entrants / Appels échoués sortants
- Dernier temps de ping OPTIONS SIP (Epoch)
- Fréquence de ping OPTIONS SIP
- Plus d'infos dans le bouton détails

Référence de Configuration des Passerelles​
Les passerelles sont configurées au format XML. Chaque passerelle représente une connexion SIP trunk à un SBC externe, un opérateur ou une passerelle PSTN.
Exemple de Passerelle de Base :
<include>
<gateway name="carrier_trunk">
<param name="proxy" value="203.0.113.50;transport=tcp"/>
<param name="register" value="true"/>
<param name="caller-id-in-from" value="true"/>
<param name="username" value="trunk_user"/>
<param name="password" value="secure_password"/>
<param name="register-transport" value="tcp"/>
<param name="retry-seconds" value="30"/>
<param name="ping" value="25"/>
</gateway>
</include>
Passerelle sans Enregistrement :
<include>
<gateway name="sbc_static">
<param name="proxy" value="198.51.100.10"/>
<param name="register" value="false"/>
<param name="caller-id-in-from" value="true"/>
</gateway>
</include>
Paramètres de Passerelle​
Paramètres Requis​
name (attribut de passerelle)
- L'identifiant unique pour cette passerelle
- Utilisé dans le dialplan pour référencer la passerelle :
sofia/gateway/name/destination - Exemple :
<gateway name="my_trunk">
proxy
- Adresse IP ou nom d'hĂ´te du proxy/passerelle SIP
- Peut inclure le port et le protocole de transport
- Exemples :
value="203.0.113.50"(port par défaut 5060, UDP)value="203.0.113.50:5061"(port personnalisé)value="203.0.113.50;transport=tcp"(transport TCP)value="203.0.113.50:5061;transport=tls"(TLS sur le port 5061)
register
- Indique s'il faut envoyer un SIP REGISTER Ă la passerelle
- Valeurs :
true|false - Défini sur
truesi le trunk nécessite un enregistrement - Défini sur
falsepour les trunks basés sur IP statique
Paramètres d'Authentification​
username
- Nom d'utilisateur d'authentification SIP
- Utilisé dans l'enregistrement et pour l'authentification par digest
- Requis si
register="true" - Exemple :
value="trunk_account_123"
password
- Mot de passe d'authentification SIP
- Utilisé pour les défis d'authentification par digest
- Requis si
register="true" - Exemple :
value="MySecureP@ssw0rd"
realm
- Domaine SIP pour l'authentification
- Optionnel - généralement détecté automatiquement depuis le défi
- Exemple :
value="sip.carrier.com"
auth-username
- Nom d'utilisateur alternatif pour l'authentification (si différent de
username) - Rarement nécessaire - uniquement si l'opérateur exige un utilisateur différent dans l'auth par rapport à l'en-tête From
- Exemple :
value="auth_user_456"
Paramètres d'Enregistrement​
register-transport
- Protocole de transport pour les messages REGISTER
- Valeurs :
udp|tcp|tls - Doit correspondre au transport spécifié dans le paramètre
proxy - Exemple :
value="tcp"
register-proxy
- Adresse proxy alternative pour l'enregistrement (si différente du routage des appels)
- Utile lorsque le serveur d'enregistrement diffère du serveur de routage des appels
- Exemple :
value="register.carrier.com:5060"
retry-seconds
- Secondes à attendre avant de réessayer un enregistrement échoué
- Par défaut :
30 - Plage :
5Ă3600 - Exemple :
value="30"
expire-seconds
- Temps d'expiration de l'enregistrement en secondes
- Par défaut :
3600(1 heure) - La passerelle se réenregistrera avant l'expiration
- Exemple :
value="1800"(30 minutes)
caller-id-in-from
- Inclure l'identifiant de l'appelant dans l'en-tĂŞte From SIP
- Valeurs :
true|false true: L'en-tête From inclut le numéro d'appelant réel (exigé par la plupart des opérateurs)false: L'en-tête From utilise le nom d'utilisateur de la passerelle- Recommandation : Défini sur
truepour la plupart des déploiements - Exemple :
value="true"
Paramètres de Surveillance​
ping
- Envoyer un ping SIP OPTIONS toutes les N secondes
- Surveille la disponibilité de la passerelle et mesure la latence
- D��sactivé si non spécifié ou défini sur
0 - Valeurs typiques :
15Ă60secondes - Visible dans l'UI d'État de la Passerelle comme "Temps de Ping"
- Exemple :
value="25"
ping-max
- Temps maximum (secondes) pour réessayer les pings avant de marquer la passerelle comme hors service
- Par défaut : Calculé à partir de l'intervalle
ping - Exemple :
value="3"
Paramètres de Routage des Appels​
extension
- Numéro de destination fixe à composer toujours sur cette passerelle
- Rarement utilisé - généralement la destination provient du dialplan
- Exemple :
value="+12125551234"
extension-in-contact
- Inclure l'extension dans l'en-tĂŞte Contact
- Valeurs :
true|false - Par défaut :
false - Exemple :
value="false"
contact-params
- Paramètres supplémentaires à ajouter à l'en-tête Contact
- Utile pour les exigences spécifiques à l'opérateur
- Exemple :
value="line=1;isup=true"
Paramètres Avancés​
from-user
- Remplacer le nom d'utilisateur dans l'en-tĂŞte From
- Par défaut : Utilise le numéro d'appel ou le nom d'utilisateur de la passerelle
- Exemple :
value="trunk_pilot"
from-domain
- Remplacer le domaine dans l'en-tĂŞte From
- Par défaut : Utilise le domaine du proxy
- Exemple :
value="my-domain.com"
outbound-proxy
- Proxy sortant pour tous les messages SIP
- Différent de
proxy- utilisé comme cible de l'en-tête Route - Exemple :
value="edge-proxy.carrier.com:5060"
context
- Contexte de dialplan pour les appels entrants de cette passerelle
- Par défaut :
public - Permet un routage des appels entrants différent par passerelle
- Exemple :
value="from-carrier"
channels
- Nombre maximum d'appels simultanés sur cette passerelle
- Par défaut : Illimité
- Utilisé pour la gestion de la capacité
- Exemple :
value="100"
dtmf-type
- Méthode de transmission DTMF
- Valeurs :
rfc2833|info|inband|auto - Par défaut :
rfc2833(recommandé) rfc2833: Événements téléphoniques RTP (le plus courant)info: Messages SIP INFOinband: Tons audio- Exemple :
value="rfc2833"
codec-prefs
- Liste de codecs préférés pour cette passerelle
- Liste séparée par des virgules dans l'ordre de préférence
- Exemple :
value="PCMU,PCMA,G729" - Codecs courants :
PCMU,PCMA,G729,AMR,AMR-WB,G722,OPUS
rtp-timeout-sec
- Raccrocher l'appel si aucun RTP reçu pendant N secondes
- Par défaut :
0(désactivé) - Utile pour détecter les appels morts
- Exemple :
value="120"
rtp-hold-timeout-sec
- Délai d'attente pour les appels en attente sans RTP
- Par défaut :
0(désactivé) - Exemple :
value="1800"(30 minutes)
Options de Signalisation SIP​
sip-port
- Port SIP local Ă utiliser pour cette passerelle
- Par défaut : Port du profil
- Rarement nécessaire
- Exemple :
value="5060"
rtp-ip
- Adresse IP locale pour les médias RTP
- Par défaut : IP RTP du profil
- Exemple :
value="10.0.0.5"
register-proxy-port
- Port pour le proxy d'enregistrement
- Nécessaire uniquement si différent du port proxy
- Exemple :
value="5061"
contact-host
- Remplacer la partie hĂ´te de l'en-tĂŞte Contact
- Utile pour les scénarios NAT
- Exemple :
value="public-ip.example.com"
distinct-to
- Utiliser un en-tête To distinct (différent de Request-URI)
- Valeurs :
true|false - Exigence spécifique à l'opérateur
- Exemple :
value="false"
cid-type
- Type d'identifiant de l'appelant dans les en-tĂŞtes Remote-Party-ID ou P-Asserted-Identity
- Valeurs :
rpid|pid|none rpid: En-tĂŞte Remote-Party-IDpid: En-tĂŞte P-Asserted-Identity- Exemple :
value="pid"
extension-in-contact
- Ajouter un paramètre d'extension à l'URI Contact
- Valeurs :
true|false - Exemple :
value="true"
Sécurité de Transport​
transport (dans le paramètre proxy)
- Protocole de transport
- Valeurs :
udp|tcp|tls|ws|wss - Spécifié comme partie de la valeur du proxy
- Exemple :
proxy="203.0.113.50;transport=tcp"
Pour les connexions TLS, une configuration de certificat supplémentaire peut être requise dans le profil SIP.
Exemple Complet avec Options Courantes​
<include>
<gateway name="primary_carrier">
<!-- Requis : Connexion de base -->
<param name="proxy" value="sbc.carrier.com:5060;transport=tcp"/>
<param name="register" value="true"/>
<!-- Authentification -->
<param name="username" value="customer_trunk_01"/>
<param name="password" value="SecurePassword123"/>
<!-- Enregistrement -->
<param name="register-transport" value="tcp"/>
<param name="expire-seconds" value="1800"/>
<param name="retry-seconds" value="30"/>
<!-- Identifiant de l'appelant -->
<param name="caller-id-in-from" value="true"/>
<!-- Surveillance -->
<param name="ping" value="30"/>
<!-- Médias -->
<param name="codec-prefs" value="PCMU,PCMA,G729"/>
<param name="dtmf-type" value="rfc2833"/>
<!-- Limites d'appels -->
<param name="channels" value="100"/>
<!-- Délais d'attente RTP -->
<param name="rtp-timeout-sec" value="300"/>
</gateway>
</include>
Utilisation de la Passerelle dans le Dialplan​
Référencez les passerelles dans votre dialplan en utilisant le format sofia/gateway/name/destination :
<!-- Route vers une passerelle spécifique -->
<action application="bridge" data="sofia/gateway/primary_carrier/+12125551234"/>
<!-- Route utilisant une variable -->
<action application="bridge" data="sofia/gateway/primary_carrier/${tas_destination_number}"/>
<!-- Route avec des en-têtes SIP personnalisés -->
<action application="bridge" data="{sip_h_X-Custom=Value}sofia/gateway/primary_carrier/${tas_destination_number}"/>
<!-- Failover entre passerelles -->
<action application="bridge" data="sofia/gateway/primary_carrier/${tas_destination_number}|sofia/gateway/backup_carrier/${tas_destination_number}"/>
Dépannage des Problèmes de Passerelle​
La Passerelle ne S'enregistre Pas :
- Vérifiez que
usernameetpasswordsont corrects - Vérifiez que l'adresse
proxyest accessible - Confirmez que
register-transportcorrespond aux exigences de l'opérateur - Consultez les journaux pour les échecs d'authentification
Les Appels Échouent :
- Vérifiez l'état de la passerelle dans l'UI Web (
/gw) - Vérifiez que le paramètre
caller-id-in-fromcorrespond à l'exigence de l'opérateur - Confirmez la compatibilité des codecs avec
codec-prefs - Vérifiez que le pare-feu autorise le trafic SIP et RTP
Qualité d'Appel Médiocre :
- Consultez les temps de
pingdans l'État de la Passerelle - Vérifiez que
rtp-timeout-secn'est pas trop agressif - Confirmez que les préférences de codec correspondent aux capacités du réseau
- Surveillez la latence réseau et la perte de paquets
Configuration des Pairs Diameter​
Les pairs Diameter doivent être définis dans la configuration à l'exécution.
Cette configuration est largement standard.
L'interface Ro n'a pas besoin d'être incluse dans les Applications si Ro n'est pas utilisé dans votre déploiement.
config :diameter_ex,
diameter: %{
service_name: :omnitouch_tas,
listen_ip: "10.8.82.60",
listen_port: 3868,
decode_format: :map,
host: "example-dc01-as01",
realm: "epc.mnc001.mcc001.3gppnetwork.org",
product_name: "OmniTAS",
request_timeout: 5000,
peer_selection_algorithm: :random,
allow_undefined_peers_to_connect: true,
log_unauthorized_peer_connection_attempts: true,
control_module: Tas.Control.Diameter,
processor_module: DiameterEx.Processor,
auth_application_ids: [],
acct_application_ids: [],
vendor_id: 10415,
supported_vendor_ids: [10415],
# Optionnel : Domaine de destination global pour toutes les applications
# destination_realm: "global.destination.realm",
applications: [
%{
application_name: :sh,
application_dictionary: :diameter_gen_3gpp_sh,
# Optionnel : Domaine de destination spécifique à l'application pour les requêtes Sh
# destination_realm: "sh.destination.realm",
vendor_specific_application_ids: [
%{
vendor_id: 10415,
auth_application_id: 16_777_217,
acct_application_id: nil
}
]
},
%{
application_name: :ro,
application_dictionary: :diameter_gen_3gpp_ro,
# Optionnel : Domaine de destination spécifique à l'application pour les requêtes Ro
# destination_realm: "ocs.destination.realm",
vendor_specific_application_ids: [
%{
vendor_id: 0,
auth_application_id: 4,
acct_application_id: nil
}
]
}
],
peers: [
%{
port: 3868,
host: "example-dc01-dra01.epc.mnc001.mcc001.3gppnetwork.org",
ip: "1.2.3.4",
realm: "epc.mnc001.mcc001.3gppnetwork.org",
tls: false,
transport: :diameter_tcp,
initiate_connection: true
},
%{
port: 3869,
host: "example-dc01-dra02.epc.mnc001.mcc001.3gppnetwork.org",
ip: "1.2.3.44",
realm: "epc.mnc001.mcc001.3gppnetwork.org",
tls: false,
transport: :diameter_tcp,
initiate_connection: true
}
]
}
Paramètres de Configuration Diameter​
Configuration du Service :
-
service_name(atom) : Identifiant unique pour cette instance de service Diameter- Exemple :
:omnitouch_tas - Utilisé en interne pour la gestion du service
- Exemple :
-
listen_ip(string) : Adresse IP Ă lier pour les connexions Diameter- Exemple :
"10.8.82.60" - Utilisez
"0.0.0.0"pour écouter sur toutes les interfaces - Les pairs se connecteront à cette IP
- Exemple :
-
listen_port(integer) : Port TCP pour les connexions Diameter- Port standard Diameter :
3868 - Ne doit pas entrer en conflit avec d'autres services
- Port standard Diameter :
-
host(string) : Identité d'hôte Diameter (sans domaine)- Exemple :
"example-dc01-as01" - Combiné avec
realmpour former l'AVP Origin-Host - Doit être unique dans le réseau Diameter
- Exemple :
-
realm(string) : Identité de domaine Diameter- Exemple :
"epc.mnc001.mcc001.3gppnetwork.org" - Utilisé dans l'AVP Origin-Realm
- Doit correspondre aux conventions d'identification du réseau 3GPP
- Exemple :
-
product_name(string) : Identifiant du produit dans les messages CER/CEA- Exemple :
"OmniTAS" - Utilisé dans les messages d'échange de capacités
- Exemple :
-
request_timeout(integer) : Délai d'attente en millisecondes pour les requêtes Diameter- Exemple :
5000(5 secondes) - Les requêtes sans réponse dans ce délai expireront
- Exemple :
-
peer_selection_algorithm(atom) : Algorithme pour sélectionner un pair lorsque plusieurs sont disponibles- Valeurs :
:random|:round_robin|:priority :random: Sélection aléatoire de pairs:round_robin: Distribution des requêtes de manière uniforme entre les pairs
- Valeurs :
-
vendor_id(integer) : ID du fournisseur 3GPP- ID de fournisseur 3GPP standard :
10415 - Utilisé dans l'AVP Vendor-Specific-Application-Id
- ID de fournisseur 3GPP standard :
Configuration du Domaine de Destination​
Le paramètre destination_realm contrôle l'AVP Destination-Realm inclus dans les requêtes Diameter. Cet AVP indique à l'Agent de Routage Diameter (DRA) où router la requête.
Trois niveaux de configuration :
- Spécifique à l'application (priorité la plus élevée) : Définir
destination_realmdans chaque configuration d'application - Global : Définir
destination_realmau niveau supérieur de la configuration diameter - Fallback (priorité la plus basse) : Utilise la valeur
realmsi aucune des deux précédentes n'est configurée
Exemples de Configuration :
# Exemple 1 : Domaines de destination spécifiques à l'application
config :diameter_ex,
diameter: %{
realm: "epc.mnc001.mcc001.3gppnetwork.org",
applications: [
%{
application_name: :sh,
destination_realm: "hss.epc.mnc001.mcc001.3gppnetwork.org",
# ... autre config
},
%{
application_name: :ro,
destination_realm: "ocs.epc.mnc001.mcc001.3gppnetwork.org",
# ... autre config
}
]
}
# Exemple 2 : Domaine de destination global avec remplacement spécifique à l'application
config :diameter_ex,
diameter: %{
realm: "epc.mnc001.mcc001.3gppnetwork.org",
destination_realm: "dra.epc.mnc001.mcc001.3gppnetwork.org", # Par défaut pour toutes les applications
applications: [
%{
application_name: :sh,
# Utilisera le global : "dra.epc.mnc001.mcc001.3gppnetwork.org"
},
%{
application_name: :ro,
destination_realm: "ocs.epc.mnc001.mcc001.3gppnetwork.org", # Remplacement
}
]
}
# Exemple 3 : Aucun domaine de destination configuré (utilise le domaine)
config :diameter_ex,
diameter: %{
realm: "epc.mnc001.mcc001.3gppnetwork.org",
# Aucun domaine de destination spécifié nulle part
applications: [
%{
application_name: :sh,
# Utilisera le fallback de domaine : "epc.mnc001.mcc001.3gppnetwork.org"
}
]
}
Quand Utiliser le Domaine de Destination :
- Différents systèmes backend : Lorsque Sh va vers HSS et Ro va vers OCS dans différents domaines
- Routage DRA : Lorsque DRA utilise Destination-Realm pour router vers différents clusters backend
- Déploiements multi-locataires : Router différentes applications vers différents domaines de locataires
- Scénarios de test : Remplacer le domaine de destination par application pour tester sans changer les pairs
Hiérarchie de Fallback :
Domaine de destination spécifique à l'application
↓ (si non défini)
Domaine de destination global
↓ (si non défini)
domaine
Cela garantit que l'AVP Destination-Realm obligatoire est toujours présent dans les requêtes sortantes.
Vous pouvez vérifier l'état des pairs Diameter depuis l'onglet Diameter dans l'UI Web.

Vous pouvez également tester la récupération des données Sh depuis l'onglet Sh dans l'UI Web pour essayer de récupérer des données depuis Sh.
