Steroipondeur
Projet réalisé par Patrick.
Steroipondeur : un répondeur gonflé aux stéroïdes
Système anti appels intrusifs en provenance de plateformes télémarketing.
Présentation
À longueur de journées, nous recevons tous des appels non sollicités pour des offres d’isolation de combles à 1€, des panneaux solaires, de vérification si la charpente est saine...
Évidement nous ne sommes intéressés par ces offres, souvent teintées d’escroquerie, et nous sommes lassés d’être dérangés.
Le service Bloctel est complètement inefficace car basé sur des principes dépassés par la technologie des plateformes marketing. En effet, rien ne sert de bloquer des numéros (caller id) puisque les plateformes utilisent des numéros bidons qu’ils changent à chaque appel.
J’ai donc un Call Blocker (CPR CallBlocker UK) parfaitement inutile.
J’ai imaginé qu’on pouvait insérer un central téléphonique « intelligent » entre la ligne et les postes de la maison, tel que Asterisk (open source), mais je n’avais pas la moindre idée comment le faire fonctionner. En cherchant avec notre ami Google, j’ai trouvé cet article qui a tout débloqué.
L’auteur a conçu un système de filtrage à partir d’un RaspberryPi et d’un service de téléphonie SIP disponible aux abonnés de Free.
C’était la résolution de 50% du problème car je n’ai qu’une ligne standard Orange. De toute façon, mon but était d’avoir un système universel que toute la famille pourrait installer sur sa ligne de téléphone, quel que soit le fournisseur.
Encore grâce à Google, j’ai compris qu’on pouvait transformer un téléphone standard (POT) en téléphone compatible avec une service SIP, à condition de trouver un routeur CISCO (Linksys) de type SPA3102 (produit qui n’est plus sur catalogue). Le SPA3102 est un Voice Gateway phone Router qui peut être acheté sur eBay pour 40€ environ. Il existe d’autre produit équivalent.
On trouve de la documentation en ligne ainsi que des tutos.
Donc, avec un RPI3 sous Debian et un SPA3102, on a les bases d’un système de filtrage des appels entrants.
L’article du blog (situé préalablement) m’a confirmé ce que j’avais expérimenté (subi) : des appels qui testent la validité du numéro, le robot qui attend qu’on dise allo pour commuter l’appel vers un opérateur … je choisis d’interdire de fait tous les appels non sollicités dont les caller id ne seraient pas dans la liste blanche des personnes autorisées à m’appeler.
Quid des appels imprévus dignes d’intérêt ? Si la personne a une raison valable de me joindre, elle attendra la commutation à la boite vocale, et je rappellerai.
On peut imaginer une version 2 du logiciel, avec demande de code qui bypasserait l’interdiction. Asterisk le permet, mais ce n’est pas implémenté à ce jour.
Architecture
Configuration du logiciel sur RPI
- Debian
- Base de Données redis (noSQL)
- Python pour le script de traitement
- Serveur Apache2
Principe de fonctionnement
- Un appel entrant est capté par le routeur SPA3102
- Le téléphone ne sonne pas
- Le routeur décroche et renvoie une tonalité de type « sonnerie »
- Le robot a détecté le décrochage et l’absence de silence (sonnerie fake), il connecte la ligne au premier opérateur libre
- L’appelant (humain) entend la même sonnerie d’un téléphone qui sonne !
- Il peut attendre ou raccrocher
- Le caller id est capté par le routeur et transmis à Asterisk
- Asterisk va gérer les séquences et passer le caller id au programme qui va vérifier si le caller_id est acceptable ou pas
- Le caller id est transmis au programme python (patapps.py)
- Vérification si le numéro est dans la base redis (white_list)
- Log de l’appel dans la base
- Renvoie un drapeau vers Asterisk pour indiquer quelle suite donner à l’appel
- Asterisk : aiguillage des actions suivantes en fonction du drapeau renvoyé par le programme python.
- Si l’appel est accepté, Asterisk provoque la sonnerie du téléphone maison
- Si l’appel est refusé, raccrochage de l’appel.
C’est une version 1 pour valider le bon fonctionnement du couple routeur/RPI.
On peut imaginer de nouvelles fonctionnalités pour une version 2 avec plus d’interactions avec les appelants ayant de « bonnes intentions ».
Pour faciliter la mise à jour de la white list, un serveur web Apache2 sur le RPI permet de la récupérer, la modifier, la mettre à jour sans avoir à se connecter en ssh sur le RPI.
Le code et le paramétrage de la solution seront disponibles sur le wiki du LOG (section projet).
Je remercie Nico T sans qui ce Steroipondeur serait toujours au stade du projet théorique.