Le ven. 17 avr. 2020 à 03:11, Philippe Verdy <[email protected]> a écrit :
>
> Voir aussi cette expression régulière (syntaxe PCRE) qui mâche le
> travail d'analyse (validée et testée pour plein de pays et plain de
> formats):
> https://regex101.com/r/4wY5xA/48
> utilisée sur Wikidata (comme condition informative, non impérative),
> elle valide plein de numéros et le reste est réellement mal formaté
> (plusieurs numéros accolés, syntaxe ambigüe)

Note: le numéro "0800 130 000" est bien accepté comme valide et
reconnu comme un numéro local (non international non éligible au
préfixe "+CC" du format E.164, donc il n'y a rien dans le groupe de
capture 1 pour le code pays explicite, ou 2 pour le code implicite des
numéros nord-américains +1 ou russes +7)
L'expression détecte tous les groupes de chiffres significatif et
préserve leur groupement (mais crée un groupe dans le dernier groupe
s'il contient plus de 4 chiffres).

Elle détecte aussi certains suffixes d'extension (après "EXT" ou "X")
ajoutés après le numéro
Elle détecte correctement la longueur des codes pays mais ne les
valide pas (elle reconnait des codes encore réservés) et donc ne
traite pas ensuite spécialement les formats selon le code pays reconnu
(pour valider qu'il y a assez de chiffres; de plus divers pays ont des
numéros de téléphone de longueur variable selon les premiers groupes
de chiffres, par exemple l'Allemagne ou l'Italie (les formats
diffèrent aussi selon que c'est un numéro fixe ou mobile plus longs).
Elle ne sait pas dire (selon le pays) s'il faut ou pas composer le 0
initial du numéro national (on ne doit pas le supprimer au Royaume-Uni
par exemple, ce 0 initial est significatif au début du code régional,
dans la plupart des autres dont la France, ce 0 doit être supprimé des
appels internationaux quand on compose le préfixe international et le
code pays "+CC").

Améliorations possibles (à tester, syntaxe à étudier):

Elle ne supporte pas les procédures d'appel sur automates vocaux ("*"
suivi de codes numériques) car elle ne détecte pas encore les codes
"*" et "#" de ces procédures, ni les procédures vocales "pour joindre
un conseiller, dites CONSEILLER" qu'ont pourrait ajouter aussi en
mettant ce mot à prononcer entre guillemets, ou dans une autre
propriété de qualification (wikidata) ou un autre tag (OSM)
Elle pourrait aussi ajouter les codes spéciaux "P[nombre de secondes]"
ou "," pour les pauses nécessaires (codes déjà reconnus par les modem
ou fax via leur interface série).
Elle pourrait supporter toute procédure manuelle (sans automate au
bout pour la réaliser mais à effectuer oralement avec le premier
correspondant pour qu'il renvoie l'appel au bon service/la bonne
personne.
Elle ne détecte pas non plus les horaires possibles "@" suivi d'un
format comme pour opening_hours
D'autres préfixes par pays sont possibles et pourraient être reconnus
(par exemple le 8 en Russie est le code interrégional, le 810 est le
code correspondant au préfixe international "+").

Certains numéros peuvent être appelés en mode interrégional ou en mode
international (au sein du plan nord-américain, le "1" composé seul
appelle n'importe quel pays de la zone, en Russie et plusierus pays
ex-sociétiques, le "8" a aussi cette fonction et il faut analyser le
code régional pour savoir à quel pays cela correspond pour appeler
d'un autre pays, et un numéro kazakhe indiqué par "8(XXX)NNNNN..."
devra remplacer le "8" par + suivi du code du Kazakhstan, ou le "+7"
si c'est un numéro russe...). On a le cas aussi en France pour les
outre-mer et les numéros de Monaco, intégrés au plan français dit "à
10 chiffres" (mais qui ont aussi leur propre préfixe international).

_______________________________________________
Talk-fr mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/talk-fr

Répondre à