Contribution RaspiSMS - envoi en masse depuis CSV

Petite contribution autonome écrite en PHP vous permettant d’envoyer en masse des sms depuis une liste de destinataire en format CSV.
Dans la collectivité où je travaille, on s’en sert pour prévenir des administrés inscrits aux activités ( on fait un export du progiciel au format csv que l’on injecte directement dansce script autonome).

Sur RaspiSMS3, il suffit de déposer le contenu du zip dans le dossier /var/www/html

Il faut mettre les bons droits au dossier upload.
il faut modifier le fichier envoi.php avec l’url correcte de votre serveur RaspiSMS ainsi que votre api_key.

Le script traite le CSV en cherchant une colonne contenant le mot « portable » mais vous pouvez personnaliser le nom de la colonne.
Le script modifie le numéro de téléphone automatiquement pour qu’il soit au format adéquate pour RaspiSMS : +33 6 11 22 33 44, il sait gérer un csv avec des numéro au format 0611223344 ou 33 6 11 22 33 44 ( rajout du plus ou modification du 06/07 en +33 6 …)

Il serait sympa que cette fonction soit inclue directement dans raspiSMS car vraiment très utile!

liens vers le formulaire SMS : FomulaireSMS.zip - Petit Fichier

L’envoie de message de masse est idéal pour le Spam :stuck_out_tongue: peut-être pour ça que c’est pas inclus.

Bonjour,
@levelKro effectivement l’envoi de masse pourrait être utilisé pour du spam, mais c’est dans l’absolu le cas pour l’ensemble de RaspiSMS, ce n’est donc pas pour cela que la fonction n’est pas inclus, c’est simplement que le besoin ne c’est encore jamais présenté, et que l’utilisation de groupes de contacts avec import par CSV remplissait cette mission.

@Informatique L’ajout dans l’interface d’envoi d’un SMS d’un champ pour importer un CSV pourrait être intéressant, et la chose a déjà été mise de coté comme une évolution future.

Concernant la normalisation des numéros de téléphone, le choix a été fait d’imposer un format unique, correspondant à la norme internationale en la matière, et qui est globalement le format utilisé par l’industrie. Pour mettre en place un système de reconnaissance des numéros et de transformation automatique au format international qui soit suffisamment robuste, cela demanderait au minimum d’ajouter un réglage supplémentaire pour définir l’indicatif international à utiliser par défaut, et de s’assurer de trouver une solution compatible avec les particularités de chaque pays en terme de numérotation. Ce qui, certes n’est pas impossible, mais demande évidemment pas mal de temps, le tout pour un résultat qui sera toujours moins satisfaisant et sûr que d’imposer une format unique. Cette évolution n’est donc pas à l’ordre du jour pour le moment.

Je me permet tout de même de porter à l’attention de tous qu’il est absolument nécessaire de s’assurer que l’exécution des scripts soit désactivée pour le dossier « upload », sinon ce script ouvre une énorme faille de sécurité de type « unrestricted file upload » qui conduit directement à la possibilité pour l’attaquant d’exécuter n’importe quel code sur le serveur avec les droits de l’utilisateur qui exécute le script PHP (généralement le serveur web).

Une solution possible serait de modifier le script d’upload pour que celui-ci renomme le fichier en .csv plutôt que d’utiliser le nom du fichier de base.

PS : Si jamais vous souhaitez voir la fonctionnalité d’envoi de SMS à un CSV ajoutée à RaspiSMS de façon prioritaire, ou bien la fonctionnalité de reconnaissance automatique des numéro ajoutée tout court, il est tout à fait possible de mettre en place une prestation de développement spécifique, auquel cas vous pouvez me contacter à l’adresse commercial@raspisms.fr.

Merci pour votre réponse,
Je suis bien d’accord qu’il faut un format unique pour les numéros de téléphone dans RaspiSMS, c’est justement pour ça que le script les modifie à la volée lors du traitement pour les rendre compatible avec RaspiSMS ( car dans les progiciels d’où on fait les export, il n’y a pas de norme de saisie, et donc le csv peut contenir du 06xxxxxxxx ou du 06 xx xx xx xx xx ou +336 xx xx xx xx etc…)
Vous avez donc tout le code php nécessaire à la modification à la volée des numéros de téléphones qui est déjà inclus, cela vous fera gagner du temps!

Effectivement, pour la sécurité , il faudrait que le nom de fichier soit généré par le script de façon aléatoire, mais je n’ai pas les connaissances pour aller aussi loin dans la programmation, (je n’avais jamais touché à PHP avant ce script et je suis déjà content de l’avoir rendu fonctionnel, auparavant j’avais créé un exécutable depuis un fichier CMD qui faisait tout ça dans une fenêtre de commande DOS mais c’était moins sexy ) C’était déjà pas simple de rendre le script autonome avec uniquement du PHP…

Je sais que nous pouvons importer des contacts en masse dans raspiSMS, mais cela ne correspondait pas à notre usage, l’idée étant de pouvoir faire un export depuis un logiciel quelqconque ( base de client ou autre, mais dans notre cas, c’est surtout pour les différents cours des écoles artistique de la collectivité, chaque export est spécifique - cours de danse annulé tel jour => on fait un export des gens inscrit pour ce court uniquement et on peut directement les prévenir en fournissant le CSV, c’est bien plus rapide que de cocher les contacts qui auraient été importé dans RaspiSMS et donc pour notre usage, nous n’utilisons pas dutout les contacts. )

Par contre avec RaspiSMS2 je n’avais jamais de soucis, mais sur la version 3 je dois rebooter le serveur de temps en temps , sinon les messages ne partent pas ( restent à l’état inconnu comme si gammu plantait, alors que ça n’arrivait jamais sur mon instance en version2…).