Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
MSG Modérateur


Inscrit le: 17 Avr 2012 Messages: 2876
|
Posté le: 11 Mar 2023, 01:24 -> Sujet du message: Filtrage des appels entrant |
|
|
Bonsoir ,
Lors d'appels reçus de démarchage ou autres , Free propose une commande (351) pour créer une liste de filtrage d'appels entrants de numéros ou de préfixes indésirables .
https://assistance.free.fr/articles/telephone-fixe-filtrer-les-appels-entrants-548
Malheureusement , si un numéro qu'on ne veut pas filtrer se retrouve par erreur dans cette liste , il n'y a pas d'autre choix que de tout effacer avec le code #351# , puis ressaisir tous les numéros de la liste un à un (si on les a noté quelque part) ou des préfixes (généralement les 6 premiers chiffres) .
Comme je viens de coder un programme similaire pour envoyer des commandes DTMF , mais pour un autre usage et n'ayant plus de Freebox , je me suis dit que ça pourrait intéresser certains .
Le programme est créé en Python3 , du nom de la commande : 351.py
Un fichier contenant la liste de numéros ou préfixes : 351_liste_noire.txt à modifier selon vos besoins
Et les fichiers audio des DTMF correspondant aux touches : DTMF_touche_( 0 à 9 + E et F ).wav et no.wav .
S'assurer de la présence du programme de lecture audio play , (présent sous Linux , sous windows je n'ai pas de quoi tester) .
Dans la console , tester avec la commande : play -q DTMF_touche0.wav
Le son DTMF devrait se faire entendre en sortie d'un HP ou casque audio , il faut juste augmenter le volume pour bien l'entendre.
Les fichiers doivent être dans le même dossier et le programme se lance avec la commande : python3 351.py
Il est possible d'ajuster le temps entre chaque numéro pour pouvoir raccrocher et décrocher sur la variable tp.
Listing du programme 351.py
Code: | #!/usr/bin/python3
#===============================================#
# Reprogrammation filtrage des appels entrant #
# #
# Service : Freebox ligne fixe #
# #
# Programmation : MSG - (c) 03-2023 #
#===============================================#
#///////////////////////////////////////////////
from time import sleep
import os
def DTMF(n):
# Code pour supprimer les espaces entre les chiffres
if n.count(" "): n = n.replace( " " , "" )
print(n)
n = n.replace( "*" , "E" )
n = n.replace( "#" , "F" )
for c in n:
if c in tuple("0123456789EF"):
os.system("play -q DTMF_touche_" + c + ".wav")
else:
os.system("play -q no.wav")
return
#
# lecture du ficher txt associé
#===============================
#//////////////////////////////
liste = ["# 351 #",] # code vider la liste
fo = open( "351_liste_noire.txt" , "r")
l = fo.read()
EOL = l.count( "\n" )
fo.seek(0,0)
for n in range( EOL ):
liste.append( fo.readline()[0:-1] ) # ajoute numéros à la liste
fo.close()
#
# Séquence de programmation
#===========================
#//////////////////////////
tp = 5 # pause (en secondes) raccrocher - décrocher
for n in range( EOL ):
if n == 0:
print("\n--- Décrocher ---")
sleep( tp )
DTMF( liste[n].strip(" ") )
else:
print("--- Raccrocher - Décrocher --- %2i/%i" %( n , EOL ))
sleep ( tp )
DTMF( "* 351 * " + liste[n].strip(" ") + " #" )
print("--- Raccrocher - C'est fini --- %i/%i\n" %( n+1, EOL ))
|
Le résultat de la séquence de préfixes que j'ai programmé :
Citation: | $ python3 351.py
--- Décrocher ---
#351#
--- Raccrocher - Décrocher --- 1/19
*351*018656#
--- Raccrocher - Décrocher --- 2/19
*351*021901#
--- Raccrocher - Décrocher --- 3/19
*351*022164#
--- Raccrocher - Décrocher --- 4/19
*351*025545#
--- Raccrocher - Décrocher --- 5/19
*351*027983#
--- Raccrocher - Décrocher --- 6/19
*351*035349#
--- Raccrocher - Décrocher --- 7/19
*351*036748#
--- Raccrocher - Décrocher --- 8/19
*351*037466#
--- Raccrocher - Décrocher --- 9/19
*351*037933#
--- Raccrocher - Décrocher --- 10/19
*351*042285#
--- Raccrocher - Décrocher --- 11/19
*351*044902#
--- Raccrocher - Décrocher --- 12/19
*351*046563#
--- Raccrocher - Décrocher --- 13/19
*351*048793#
--- Raccrocher - Décrocher --- 14/19
*351*051807#
--- Raccrocher - Décrocher --- 15/19
*351*053294#
--- Raccrocher - Décrocher --- 16/19
*351*055464#
--- Raccrocher - Décrocher --- 17/19
*351*055465#
--- Raccrocher - Décrocher --- 18/19
*351*098829#
--- Raccrocher - C'est fini --- 19/19
$ |
PS: ci-joint le ZIP des fichiers nécessaire pour son fonctionnement .[
_________________ Ex Alicebox, Freebox , Sosh fibre.
Orange fibre coup de pouce - Livebox 4 - 500 Mb/s symétrique .
HP Elitebook 840 G3 - i5 6300u - recyclé AfB . |
|
Revenir en haut |
|
 |
Busyspider Adjoint-Admin


Inscrit le: 06 Sep 2005 Messages: 68354
|
Posté le: 11 Mar 2023, 10:00 -> Sujet du message: |
|
|
Bonjour MSG
Merci de ce tuto.
Faut quand même être très spécialiste pour pouvoir le mettre en place !
_________________ .
............... |
|
Revenir en haut |
|
 |
MSG Modérateur


Inscrit le: 17 Avr 2012 Messages: 2876
|
Posté le: 11 Mar 2023, 11:55 -> Sujet du message: |
|
|
Bonjour ,
Pour être spécialiste (sur système Linux) , il faut savoir : (pour Windows , j'ai pas !)
- Télécharger le fichier ZIP en pièce joointe
- Créer un dossier et Dézipper le fichier téléchargé
- S'assurer d'avoir le language Python3 sur sa machine (présent sur Linux)
- S'assurer de la présence d'un programme permettant la lecture fichiers WAV . Sur Linux il y a play
(play -q fichier_quelconque.wav) . Modifier le programme si vous avez un autre utilitaire de lecture audio .
- Editer le fichier 351_liste_noire.txt pour créer sa propre liste noire .
- Ouvrir une console de commande
- Lancer le programme avec la commade ci-dessous et suivre les instructions en collant la sortie son du PC sur le micro du téléphone fixe .
(python3 351.py)
Je peux compiler le programme pour le rendre exécutable , mais ça empêcherait les usagers potentiels de vérifier que je n'y ais pas mis de commande dangereuse pour leur système ou données de leur ordinateur . Ça permet de comprendre et de le modifier si par exemple l'intervalle entre les numéros est trop court ou autre .
Je suis à l'écoute de vos remarques (pour la version Linux) et si un utilisateur Windows pouvait vérifier le programme sur ça machine , ça aiderait à l'adapter pour ce système . Le langage Python est universel , donc il ne devrait pas y avoir de problème pour le faire tourner sur Windows ,
PS: le contenu du fichier ZIP en pièce jointe .
- 351_liste_noir.txt (fichier contenant la liste des numéros et préfixes à filtrer , un numéro par ligne)
- 351.py (le programme Python qui va exécuter la programmation)
13 fichiers audio WAV correspondant aux sons émis par les touche du téléphone fixe
- DTMF_touche0.wav
- DTMF_touche1.wav
etc
- DTMF_touche9.wav
- DTMF_toucheE.wav (touche étoile)
- DTMF_toucheF.wav (touche dièse)
- no.wav (pour toutes autres touches inexistantes)
Le langage Python se trouve sur le lien ci-dessous (pour les utilisateurs windows) :
https://www.python.org/downloads/windows/
MSG
_________________ Ex Alicebox, Freebox , Sosh fibre.
Orange fibre coup de pouce - Livebox 4 - 500 Mb/s symétrique .
HP Elitebook 840 G3 - i5 6300u - recyclé AfB . |
|
Revenir en haut |
|
 |
mickeul16 Administrateur


Inscrit le: 31 Mar 2008 Messages: 19403
|
|
Revenir en haut |
|
 |
MSG Modérateur


Inscrit le: 17 Avr 2012 Messages: 2876
|
Posté le: 16 Mar 2023, 21:23 -> Sujet du message: |
|
|
Bonsoir ,
Je suis avec la version :
Citation: | Python 3.5.7 (default, Apr 4 2019, 11:58:21)
[GCC 5.5.0] on linux |
Mais peu importe , une version python 3 fera l'affaire , surtout pas du python 2 .
La première ligne sert de path pour le programme python sous Linux et pour l'éditeur de texte qui me colore automatiquement les variables , les mots clefs et gère aussi l'indentation avec les petites flèches bleu à gauche , qui me ferme une partie du code à la demande (boucles , fonctions) , très pratique . Il y a aussi une miniature du code à gauche (ascenseur) , qui permet de se déplacer rapidement lorsque le programme est très long .
Pour la compilation , Linux ne fonctionne pas pareil que windows , Je n'ai qu'à changer une valeur dans les paramètres du fichier pour le rendre exécutable ou pas . Avec Windows , il faut le compiler pour en faire un fichier.exe , à moins que ça ait changer .
Pour la programmation , j'ai une notice en anglais qui me sert souvent : https://www.tutorialspoint.com/python3/index.htm
MSG
_________________ Ex Alicebox, Freebox , Sosh fibre.
Orange fibre coup de pouce - Livebox 4 - 500 Mb/s symétrique .
HP Elitebook 840 G3 - i5 6300u - recyclé AfB . |
|
Revenir en haut |
|
 |
MSG Modérateur


Inscrit le: 17 Avr 2012 Messages: 2876
|
Posté le: 17 Avr 2023, 19:29 -> Sujet du message: |
|
|
Bonjour ,
Voilà , je me suis équipé d'un PC avec Windows 10 , j'ai téléchargé la dernière version de python (3.11.3) , mais une version antérieure ne devrait pas poser de problème .
Il faut lancer l'IDLE(python 3.11) qui est la fenêtre qui affiche le résultat , puis créer un nouveau dossier et ficher pour ce programme . Le soucis c'est qu'il stocke dans le répertoire python , qui n'est pas accessible (caché) , pour y ajouter les fichiers audios des codes DTMF . je l'ai donc créer dans le dossier documents\python\free liste noire
Le nouveau fichier va lancer une seconde fenêtre qui est la fenêtre de codage , coller le listing ci-dessous et l'enregistrer dans le dossier créé . Ajouter les fichiers audio que je vais ajouter et créer un fichier texte contenant la liste des numéros à bloquer , fichier qui devra s'appeler liste_noire.txt
On revient sur la fenêtre de codage et on fait un Run module F5 et le son sort normalement des haut parleurs , si le son n'est pas coupé .
J'ai codé et corrigé quelques bugs que je n'avait pas détecté , et ça donne le code suivant :
Code: | #! python3
from time import sleep
from winsound import *
def DTMF( num ):
sleep( 5 ) # pause en secondes entre chaque numéros
if num.count(" "): num = num.replace( " ", "" )
print(num)
num = num.replace( "*", "E" )
num = num.replace( "#", "F" )
for c in num:
if c in tuple("0123456789EF"): file = "DTMF_" + c + ".wav"
elif c == "+" : file = "DTMF_00.wav"
else : file = "no.wav"
PlaySound(file, SND_FILENAME)
return
# Lecture du fichier txt associé
#================================
liste = ['#351#',]
fo = open( "liste_noire.txt", "r") # ouvre le fichier en lecture
EOF = len( fo.read() ) # taille du fichier
fo.seek(0,0) # repositionne au début
while fo.tell() < EOF: # jusqu'à la fin du fichier
rl = fo.readline() # lire une ligne du fichier
rl = rl.replace( "\n", "" ) # efface le retour à la ligne \n
rl = rl.strip( " " ) # supprime les espaces
if rl != "": # la ligne ne doit pas être vide
liste.append( rl ) # ajoute le numéro à la liste
fo.close() # ferme l'accès au fichier
# Sequence de programmation
#===========================
EOL = len( liste )
for n in range( EOL ):
if n :
print("Raccrocher - Décrocher (%i/%i)" %( n, EOL ))
num = "*351*" + liste[n] + "#"
else :
print("Décrocher")
num = liste[n]
DTMF( num )
print("Raccrocher , c'est fini (%i/%i)" %( n+1, EOL ))
|
Le programme peut être lancé depuis son répertoire en ligne de commande , voir image ci-dessous ,
avec la commande py 351.py .
PS : l'action de raccrocher - décrocher peut se faire simplement en appuyant sur la touche R du combiné .
La séquence commence toujours par le code de vidage #351# .
Le fichier liste_noire.txt ne contient que les numéros à bloquer , le programme s'occupe d'ajouter les commandes *351* du début et # à la fin .
Le contenu de mon fichier liste_noire.txt
Code: | 012345
023456
034567
045678
056789
|
S'assurer que la fonction de filtrage des appels entrants est bien activée chez l'opérateur :
https://assistance.free.fr/articles/548
_________________ Ex Alicebox, Freebox , Sosh fibre.
Orange fibre coup de pouce - Livebox 4 - 500 Mb/s symétrique .
HP Elitebook 840 G3 - i5 6300u - recyclé AfB . |
|
Revenir en haut |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum Vous ne pouvez pas joindre des fichiers Vous ne pouvez pas télécharger des fichiers
|
Les indispensables pour vos demandes d'aide
|