En effet selon le type de ligne, l'opérateur, la provenance de l'appel, le callerid peut être présenté sous différentes formes: 10 chiffres, 9 chiffres, un zéro de trop, préfixe international malgré que l'appel vienne du même pays.
Ces différences peuvent être gênantes: difficulté de recherche dans les journaux d'appels, multiplication des lignes de dialplan pour gérer les différents formats, etc...
Ce morceau de dialplan permets d'uniformiser le format du callerid:
extensions.conf
Code:
[appels-entrants] exten => _X.,1,noop(appel entrant) same => n,Gosub(correction-callerid,1,1) same => n,Dial(SIP/......) same => n,hangup() [correction-callerid] exten => 1,1,noop(Correction du format du callerid) ; callerid vide same => n,GotoIf($[${CALLERID(num)} = ""]?fincorrection) ; callerid a neuf chiffres (ex: 155779988, le zero est manquant) same => n,GotoIf($[${LEN(${CALLERID(num)})} = 9]?neufchiffres) ; callerid avec le prefixe international (ex: 33155779988) same => n,GotoIf($[${CALLERID(num):0:2} = 33]?debut33) ; callerid avec un zero en trop same => n,GotoIf($[$[${LEN(${CALLERID(num)})} = 11 ] & $[${CALLERID(num):0:2} = 00]]?onzechiffresdeuxzero) ; callerid deja au bon format, ou autre cas non-pris en charge same => n,goto(fincorrection) ; les corrections associees same => n(neufchiffres),Set(CALLERID(num)=0${CALLERID(num)}) same => n(neufchiffres),goto(fincorrection) same => n(debut33),Set(CALLERID(num)=0${CALLERID(num):2}) same => n(debut33),goto(fincorrection) same => n(onzechiffresdeuxzero),Set(CALLERID(num)=${CALLERID(num):1}) same => n(onzechiffresdeuxzero),goto(fincorrection) ; affichage du callerid corrige dans la CLI same => n(fincorrection),NoOP(CALLERID->${CALLERID(num)}) same => n,Return()
- facilité à ajouter des nouvelles corrections dans le contexte [correction-callerid]
- légèreté pour votre dialplan: une simple ligne "gosub..." suffit en début d'appel, pas de redondance de code si vous avez plusieurs contextes entrants.
A vous de rajouter les formats que vous souhaiteriez uniformiser.
Florent
Message vBulletin