Documentation technique — Interconnexion SIP

Guide de configuration des trunks SIP sur la plateforme ODOIP

Raccordement d'un IPBX client : tête de ligne (enregistrement) ou identification par IP — appels entrants et sortants. Applicable à FreePBX / Asterisk, 3CX, Yeastar, FreeSWITCH, Cisco et tout IPBX compatible SIP.

Éditeur
ODOIP TELECOM
Plateforme voix
sip.odoip.fr
Destinataires
Clients, intégrateurs, revendeurs
Version du document
1.1
Nature
Guide de paramétrage et d'exploitation
À propos de ce guide. Il décrit, pas à pas, comment raccorder un autocommutateur (IPBX) à la plateforme ODOIP pour émettre et recevoir des appels via nos numéros (SDA). Les valeurs entre chevrons <…> vous sont communiquées par ODOIP (portail client ou service technique). La présentation du numéro appelant respecte les obligations ARCEP : un poste ne peut présenter qu'un numéro réellement rattaché à son trunk et hébergé sur notre plateforme.
ODOIP TELECOM — Document confidentiel à usage des clients et partenaires. Reproduction autorisée dans le cadre de l'exploitation du service.

Sommaire

1. La plateforme ODOIP en bref Architecture & chemin d'un appel 2. Prérequis & paramètres fournis Ports, pare-feu, codecs 3. Mode A — Tête de ligne (enregistrement) 4. Mode B — Identification par IP 5. Configuration par IPBX 5.1 FreePBX / Asterisk 5.2 3CX 5.3 Yeastar 5.4 FreeSWITCH 5.5 Cisco (CUCM / téléphone) 5.6 Autre IPBX (générique) 6. Appels entrants (SDA → postes) 7. Appels sortants & présentation (ARCEP) 8. Vérification & dépannage 9. Annexes

1.La plateforme ODOIP en bref

ODOIP fournit la connectivité voix (numéros géographiques, SDA, minutes) ; votre IPBX gère vos postes et votre plan d'appel interne. Les deux communiquent par un trunk SIP.

Un appel traverse plusieurs équipements. Côté ODOIP, un SBC (contrôleur de session) reçoit et sécurise le trafic de l'opérateur, puis le cœur de plateforme (sip.odoip.fr) applique le routage, la facturation et la présentation du numéro, avant de livrer l'appel à votre IPBX.

Opérateur RTC / SIP amont SBC ODOIP Sécurité / anti-fraude Cœur ODOIP sip.odoip.fr Votre IPBX FreePBX, 3CX, Yeastar… Entrant →  •  ← Sortant (le trafic circule dans les deux sens)
ÉlémentRôle
Numéro tête de ligneNuméro principal du trunk. Sert d'identité d'enregistrement et de numéro présenté par défaut en sortant.
SDA / DIDNuméros additionnels rattachés au trunk. Chacun peut être routé vers un poste différent (entrant) et présenté en sortant (si autorisé).
Trunk SIPLa liaison entre votre IPBX et ODOIP. Deux modes : enregistrement (tête de ligne) ou IP.

2.Prérequis & paramètres fournis par ODOIP

Avant de commencer, munissez-vous des informations transmises par ODOIP pour votre trunk :

ParamètreExemple / valeurUtilisé pour
Serveur SIP (domaine)sip.odoip.frRegistrar / proxy sortant
Port SIP5060 (UDP)Signalisation
TransportUDPUDP par défaut (TCP/TLS sur demande)
Numéro tête de ligne<0183610310>Identifiant / mot de passe d'enregistrement
Mot de passe SIP<secret>Authentification (mode tête de ligne)
SDA / DID<0183610310, 14, 15…>Numéros entrants et présentation sortante
IP de la plateforme<fournie par ODOIP>Mode identification par IP
Codecsalaw (G.711a), ulaw, G.729Média audio
Ouverture pare-feu Depuis votre IPBX vers la plateforme ODOIP, autorisez en sortie : UDP 5060 (signalisation SIP) et la plage UDP 10000–20000 (média RTP). Si votre IPBX est derrière du NAT, activez les options « NAT » / « rewrite contact » de votre PBX (indiquées pour chaque système ci-après). Le mode tête de ligne (enregistrement) est recommandé derrière NAT.

3.Mode A — Tête de ligne enregistrement

Votre IPBX s'enregistre sur sip.odoip.fr avec le numéro tête de ligne et son mot de passe. C'est le mode recommandé : il fonctionne derrière NAT et ne nécessite pas d'IP fixe.

Réglage côté IPBXValeur
Nom d'utilisateur / Auth<numéro tête de ligne> (ex. 0183610310)
Mot de passe<secret>
Domaine / Realm / SIP Serversip.odoip.fr
Port5060
Enregistrement (Register)Oui
TransportUDP
Point clé — le domaine doit être « sip.odoip.fr » L'enregistrement doit se faire sous le domaine sip.odoip.fr (et non l'adresse IP). C'est ce domaine qui permet à la plateforme de retrouver votre IPBX pour lui livrer les appels entrants. Renseignez donc sip.odoip.fr comme domaine / realm / from-domain, même si le serveur d'envoi est une IP.
Votre IPBX 0183610310 / secret sip.odoip.fr registrar REGISTER (toutes les ~5 min) 200 OK — trunk « Registered »

4.Mode B — Identification par IP peering

Aucun enregistrement : la plateforme reconnaît votre IPBX à son adresse IP publique fixe. Idéal pour les IPBX à IP dédiée et haut volume.

RéglageCôté ODOIPCôté IPBX
Adresse autoriséevotre IP publique fixe—
Destination des appelsvotre IP:5060—
Trunk sortant—vers <IP plateforme>:5060, sans register
Authentificationpar IP (pas de mot de passe) — l'IP fait foi
Conditions du mode IP Le mode IP exige une IP publique fixe de votre côté, communiquée à ODOIP pour mise en liste blanche. Communiquez tout changement d'IP à l'avance : une IP non déclarée est refusée (protection anti-fraude). Derrière NAT sans IP fixe, préférez le mode tête de ligne.

5.Configuration par IPBX

Les sections suivantes donnent les champs exacts pour chaque système. Le principe est identique partout : 1) créer le trunk vers ODOIP, 2) router les SDA entrants vers les postes, 3) créer la route sortante et régler la présentation du numéro.

5.1  FreePBX / Asterisk (PJSIP) testé & validé

a) Créer le trunk — Connectivity → Trunks → Add SIP (chan_pjsip) Trunk
Onglet / ChampValeur
General → Trunk Nameodoswitch
General → Outbound CallerID<numéro tête de ligne>
pjsip Settings → Username<numéro tête de ligne>
pjsip Settings → Secret<secret>
pjsip Settings → SIP Serversip.odoip.fr
pjsip Settings → SIP Server Port5060
pjsip Settings → RegistrationSend
pjsip → Advanced → From Domainsip.odoip.fr
pjsip → Advanced → Contextfrom-pstn (ou contexte dédié, cf. entrant multi-SDA)
Capture d'écranFreePBX — Trunk PJSIP « odoswitch »Onglets General & pjsip Settings renseignés (Registration = Send, From Domain = sip.odoip.fr).
b) Vérifier l'enregistrement
# En console Asterisk :
asterisk -rx "pjsip show registrations"
# Attendu :  odoswitch/sip:sip.odoip.fr:5060 ... Registered
c) Routes entrantes — Connectivity → Inbound Routes

Créez une route par SDA : DID Number = le numéro, Set Destination = le poste ou groupe voulu.

DID (SDA)Destination
0183610310Poste 2000
0183610314Poste 2001
0183610315Poste 2002
Multi-SDA sur une même tête de ligne Avec le mode per-DID (défaut, voir §6.1), le SDA composé arrive directement dans la Request-URI : vos Inbound Routes par DID suffisent, rien de plus à faire. En complément, le SDA est aussi fourni dans l'en-tête X-DID-Number ; si vous préférez router par en-tête, ce court contexte le lit :
[from-odoswitch]
exten => _[+0-9]!,1,Set(REALDID=${PJSIP_HEADER(read,X-DID-Number)})
 same => n,ExecIf($["${REALDID}"=""]?Set(REALDID=${EXTEN}))
 same => n,Goto(from-pstn,${REALDID},1)
Affectez ensuite ce contexte (from-odoswitch) au trunk, à la place de from-pstn.
d) Route sortante — Connectivity → Outbound Routes
ChampValeur
Trunk Sequenceodoswitch
Dial PatternsX.   et   +X. (numéros nationaux et E.164)
Override ExtensionNo (pour un CID par poste, cf. ci-dessous)
e) Présentation du numéro par poste (conforme ARCEP)

Renseignez le champ Outbound CID de chaque poste (Applications → Extensions) avec le SDA qu'il doit présenter. Pour que ce numéro soit réellement transmis à ODOIP, activez l'envoi du P-Asserted-Identity sur le trunk :

Champ (trunk pjsip → Advanced)Valeur
Send RPID/PAIP-Asserted-Identity (PAI)
Trust RPID/PAIYes
From User (identité d'enreg.)<numéro tête de ligne>
Résultat Le poste 2001 (Outbound CID = 0183610314) présente 0183610314 ; le poste 2002 présente 0183610315 ; etc. L'identité d'enregistrement reste la tête de ligne (autorisation), et ODOIP valide que le numéro présenté est bien un SDA de votre trunk avant de le laisser passer (ARCEP).

5.2  3CX

Menu SIP Trunks → Add SIP Trunk → Generic → Generic SIP Trunk.

Champ 3CXValeur
Main Trunk No.<numéro tête de ligne>
Registrar/Server/Proxy Hostnamesip.odoip.fr
SIP Server Port5060
Type of AuthenticationRegister/Account (tête de ligne)  |  IP Based (mode IP)
Authentication ID (SIP user)<numéro tête de ligne>
Authentication Password<secret>
Onglet DID → DIDsun DID par SDA (0183610310, 14, 15…)
Onglet Outbound Parameters → Caller IDOutboundCallerId (présente le CID du poste) ; sinon Main Trunk No.

Routez chaque DID (onglet DID → « Route to ») vers l'extension voulue. Pour le sortant, créez une Outbound Rule pointant vers ce trunk et laissez 3CX propager le Caller ID du poste (défini dans les propriétés de l'extension → Outbound Caller ID).

Multi-SDA natif Grâce au mode per-DID (§6.1), chaque SDA arrive dans la Request-URI : les DID rules de 3CX matchent directement, aucun en-tête spécial requis.
Capture d'écran3CX — SIP Trunk générique vers sip.odoip.frOnglets General / DID / Outbound Parameters.

5.3  Yeastar (série P / S)

Menu Extension and Trunk → Trunk → Add.

Champ YeastarValeur
Trunk TypeRegister Trunk (tête de ligne)  |  Peer Trunk (mode IP)
TransportUDP
Hostname/IPsip.odoip.fr  — Port 5060
Domainsip.odoip.fr
Username<numéro tête de ligne>
Password<secret>
Authentication Name<numéro tête de ligne>
DID / DODDID = SDA entrants ; DOD (Direct Outward Dialing) = numéro présenté par poste

Le mappage DID → extension se règle dans les paramètres du trunk (onglet Inbound / DID Pattern). Le DOD associe à chaque poste le SDA présenté en sortant (conforme à la validation ARCEP côté ODOIP).

Multi-SDA natif En mode per-DID (§6.1), le SDA composé est dans la Request-URI : le DID Pattern Yeastar matche nativement, y compris en Register Trunk (tête de ligne).
Capture d'écranYeastar — Register Trunk + table DID/DOD

5.4  FreeSWITCH

Déclarez une gateway dans un profil sofia (ex. external) :

<!-- conf/sip_profiles/external/odoip.xml -->
<include>
  <gateway name="odoip">
    <param name="username"    value="<tête de ligne>"/>
    <param name="password"    value="<secret>"/>
    <param name="realm"       value="sip.odoip.fr"/>
    <param name="proxy"       value="sip.odoip.fr"/>
    <param name="from-domain" value="sip.odoip.fr"/>
    <param name="register"    value="true"/>   <!-- false = mode IP -->
    <param name="expire-seconds" value="300"/>
  </gateway>
</include>

Sortant : bridge sofia/gateway/odoip/${destination_number}, en positionnant effective_caller_id_number sur le SDA du poste. Entrant : routez selon ${destination_number} (le SDA appelé) vers l'utilisateur voulu.

5.5  Cisco (CUCM / téléphones)

Sur CUCM (Call Manager), le raccordement se fait via un SIP Trunk pointant vers ODOIP (généralement en mode IP, CUCM ayant une IP fixe) :

Objet CUCMRéglage
SIP Trunk Security ProfileNon-Secure, port 5060, UDP
SIP Trunk → Destination Address<IP plateforme ODOIP> : 5060
SIP ProfileStandard SIP Profile (RFC-compliant)
Significant Digits / Called Party Transformprésenter le numéro en national (0…) ou E.164 (+33…)
Route Patternmotifs sortants → Route List → SIP Trunk ODOIP
Calling Party Transformationforcer le SDA autorisé comme Calling Number (ARCEP)

Un téléphone SIP Cisco autonome (gamme SPA/MPP) s'enregistre directement : Line 1 → Proxy sip.odoip.fr, User ID = tête de ligne, Password = secret, Register = Yes.

Mode IP côté CUCMCommuniquez l'IP publique du CUCM (ou du SBC/CUBE en frontal) à ODOIP pour mise en liste blanche. Un CUBE (Cisco Unified Border Element) est recommandé en frontal pour la normalisation SIP et le NAT.

5.6  Autre IPBX (Grandstream, Wildix, Vodia, Sangoma, PBX open source…)

Tout IPBX compatible SIP se raccorde avec les mêmes valeurs. Cherchez dans son interface un « SIP Trunk / VoIP Provider / Gateway » et renseignez :

Notion génériqueValeur ODOIP
Registrar / Proxy / SIP Server / Domainsip.odoip.fr : 5060 (UDP)
Auth user / User ID / Account<numéro tête de ligne>
Password / Secret<secret>
RegisterOui (tête de ligne) / Non (mode IP)
Caller ID / CLIPun SDA autorisé du trunk

6.Appels entrants — routage des SDA vers les postes

Un appel vers l'un de vos SDA est livré à votre IPBX ; c'est votre plan de numérotation qui décide du poste sonné.

Appelant SBC ODOIP Cœur ODOIP Votre IPBX appel → 0183610314 route vers le trunk du client INVITE sip:0183610314@… (per-DID) sonne le poste 2001
6.1 — Comment ODOIP livre le SDA : mode per-DID / DDI universel

Par défaut, ODOIP place le numéro réellement composé dans la Request-URI de l'INVITE (le champ standard DNIS), y compris en mode tête de ligne (un seul enregistrement, plusieurs SDA). C'est le fonctionnement attendu par tous les IPBX : chacun voit le bon SDA sans configuration exotique.

INVITE sip:0183610318@votre-ipbx SIP/2.0     ← le SDA composé, lisible nativement partout

En complément, ODOIP ajoute aussi l'en-tête X-DID-Number: 0183610318 (utile aux PBX de la famille Asterisk qui préfèrent router par en-tête).

IPBXOù il lit le SDA (nativement)Multi-SDA sur tête de ligne
Asterisk / FreePBX${EXTEN} (user de la Request-URI) ou X-DID-Number✅ natif
FreeSWITCH / FusionPBXdestination_number✅ natif
3CXDID/DDI (Request-URI / To)✅ natif
YeastarDID Pattern (Request-URI / To)✅ natif
Cisco (CUCM / téléphone)Called Number (Request-URI)✅ natif
Conséquence Avec le mode per-DID, un trunk à plusieurs SDA fonctionne sur n'importe quel IPBX : il suffit de créer une route entrante par SDA. La lecture de X-DID-Number (§5.1) reste possible mais n'est plus indispensable.
Option tête de ligne strict Sur demande, ODOIP peut repasser un trunk en mode « tête de ligne strict » (tous les SDA présentés sous le numéro principal + X-DID-Number) pour des intégrations spécifiques.

7.Appels sortants & présentation du numéro (ARCEP)

En sortant, deux choses comptent : l'autorisation (ODOIP reconnaît votre trunk) et la présentation (quel numéro voit l'appelé).

NotionComment ça marche chez ODOIP
AutorisationL'appel est autorisé au titre de l'identité du trunk (tête de ligne enregistrée, ou IP en liste blanche). C'est le socle anti-fraude.
Présentation (CLIP)Le numéro affiché à l'appelé peut être n'importe quel SDA rattaché à votre trunk : numéro principal par défaut, ou un SDA par poste si votre IPBX le transmet (Outbound CID + P-Asserted-Identity).
Validation ARCEPODOIP vérifie que le numéro présenté est bien un DID rattaché à ce trunk et hébergé sur la plateforme. Sinon, repli automatique sur le numéro principal. Aucune usurpation possible.
Présentation par poste — la bonne recette 1) Sur chaque poste, définir l'Outbound CID = le SDA à présenter. 2) Sur le trunk, envoyer le P-Asserted-Identity (PAI) tout en gardant la tête de ligne comme identité d'enregistrement. ODOIP lit le PAI, le valide contre vos SDA, et le présente à l'opérateur au format E.164 (+33…).
À éviter Ne configurez pas votre IPBX pour présenter un numéro qui n'est pas sur votre trunk : l'appel serait ramené au numéro principal (ou refusé). La conformité ARCEP est une obligation légale — ODOIP l'applique systématiquement.

8.Vérification & dépannage

Le trunk ne s'enregistre pas
Appel entrant qui n'aboutit pas / mauvais poste
Sortant : mauvais numéro présenté
Analyser un appel (SIP)

L'outil sngrep (sur un serveur SIP) affiche le flux d'un appel (INVITE, 100, 180/183, 200 OK, ou codes d'erreur). Les codes utiles :

Code SIPSignificationPiste
401 / 407Authentification demandéeidentifiants / mot de passe
403 ForbiddenRefusé (IP/identité non autorisée, CID interdit)liste blanche IP, SDA du trunk
404 / 484Numéro inconnu / incompletformat du numéro composé
480 Temporarily UnavailableDestination injoignableIPBX non enregistré / poste absent
486 BusyOccupéposte ou canaux saturés
488Codec incompatibleautoriser alaw/ulaw/G.729

9.Annexes

9.1  Ports & pare-feu (sens IPBX → ODOIP)
FluxProtocole / port
Signalisation SIPUDP 5060
Média (voix) RTPUDP 10000–20000
9.2  Codecs recommandés

alaw (G.711a) pour la meilleure qualité en national, ulaw (G.711u), et G.729 pour économiser la bande passante. Laissez la négociation ouverte à ces trois codecs.

9.3  Glossaire
TermeDéfinition
Tête de ligneNuméro principal d'un trunk, servant d'identité d'enregistrement.
SDA / DIDNuméro de sélection directe à l'arrivée / Direct Inward Dialing — un numéro joignable de l'extérieur.
DODDirect Outward Dialing — numéro présenté en sortie, par poste.
Trunk SIPFaisceau de lignes virtuelles entre deux systèmes SIP.
RegistrarServeur auprès duquel un IPBX s'enregistre (ici sip.odoip.fr).
PAIP-Asserted-Identity — en-tête SIP portant l'identité vérifiée de l'appelant.
ARCEPAutorité française de régulation des télécoms ; impose la présentation d'un numéro légitime.
SBCSession Border Controller — équipement de sécurité en bordure de réseau voix.
ODOIP TELECOM — Guide de configuration des trunks SIP — v1.1.   Assistance technique : voir portail client.   Les valeurs entre <…> sont propres à votre trunk et fournies par ODOIP.