Conversion nat -> int

Les appels sont remis reçus à l'interconnexion avec les numéros au format national en SS7, international en SIP. Il peut être nécessaire de faire des conversions entre ces formats.

Le plan de numérotation français est découpé en 6 codes pays.

Pour convertir du format national au format international, dans regexroute.conf :

[analyze-nat]

; remove our own portability prefix if present, continue analyzis
${called}^50777\(.*\)                                         = ; called = \1

; perform conversion to international
${called}^.*                                                  = include convert-nat-to-int ; i-number=\0
${called}^.*                                                  = return ; called=${o-number} ; callednumtype=international


[convert-nat-to-int]

${i-number}^\(\(26[29]\)\|\(639\)\|\(69[23]\)\|\(700[79]\)\|\(976[239]\)\).*			= return ; o-number = 262\0
${i-number}^508.*                                               				= return ; o-number = \0
${i-number}^\(\(590\)\|\(69[01]\)\|\(7005\)\|\(976[018]\)\).*          			= return ; o-number = 590\0
${i-number}^\(\(594\)\|\(694\)\|\(7008\)\|\(976[45]\)\).*          				= return ; o-number = 594\0
${i-number}^\(\(596\)\|\(69[67]\)\|\(7006\)\|\(976[67]\)\).*       				= return ; o-number = 596\0
${i-number}.*                                                   				= return ; o-number = 33\0

shimaore: de mémoire la situation pour Mayotte est compliquée par le fait que des préfixes mobiles ont été pris dans les blocs des Comores; il faut que je recherche ça plus en détail. (Mais comme c'est de l'entrant ce ne sera pas un problème tant qu'on n'aura pas un FAI mahorais qui en aura besoin.. ;D )

Appel entrant

Call flow par défaut de Yate :

IAM               --> SIP INVITE
ACM               <--
CPR (alerting)    <-- 180 Ringing

Call flow des tests SPIROU (et de RFC3398, section 8):

IAM               --> SIP INVITE
ACM (called-free) <-- 180 Ringing

Un patch est à appliquer sur les sources. Puis il faut mettre le paramètre accept_call=false lorsque vous routez l'appel (ici vers un client SIP enregistré directement sur Yate).

regexroute.conf :

[extra]
; intercept call.ringing message to add parameters to the ACM
call.ringing = 15

[call.ringing]
;for calls sending ACM when ringing
.* = ; message-oprefix=osig.
.* = ; osig.BackwardCallIndicators=called-ordinary
.* = return

[contexts]

${module}^sig$ = in-isup

[in-isup]
; calls from ISUP trunk

; accept_call=false prevents Yate from sending ACM until the callee is ringing
^123456789$ = lateroute/+33123456789 ; accept_call=false