1 Dernière modification par Kek (01-02-2017 19:49:30)

Sujet : Script automatisation et noobitude

Au taff faut envoyer des SMS aux clients.
Pour éviter de dépendre d'un prestataire tiers, j'ai rajouté un raspberry au réseau de la clinique. Un raspbian qui fait tourner RaspiSMS. Une pauvre clé Free et roule ma poule.
Jusque là tout marche. La machine tourne et peut envoyer des messages.

Maintenant je dois bidouiller un lien entre les machines qui font tourner le soft clientèle et le raspberry qui peut envoyer le SMS.
Sur le soft clientele si j’appuie sur ENVOYER LE SMS, je l'ai configuré pour qu'il me ponde un fichier "caractère random".ini
Dans ce fichier on trouve

[PMS.CM]encoding = 8859-15
country = 
pmsName =
pmsVersion =
specialty = VET
language = FRENCH
timeZone = "GMT+1"
useDST = TRUE
decimalFormat = "."
dateFormat = DDMMYYYY
timeFormat = 2400
weightUnits = KG
lengthUnits = M
currencyUnits = EUR

[SUBSCRIBER.CM]subscriberPmsId =
subscriberLastName  = 
subscriberFirstName  = 
subscriberTitle  = 
useImmediateSms = TRUE

[CLIENT.CM]noFollowUp = FALSE
smsCapablePhone = 33612345678
preferredChannelType = SMS
preferredChannelNumber = 1

[ANIMAL.CM][CLIENTCRITERIA]active.CM = TRUE

[ANIMALACTSANDDIAGNOSTICS]sendSms = "L4AZIL C4EST TRO BIEN§§§§"

[ENDOFFILE]

Les deux lignes qui m'intéressent sont
smsCapablePhone = 33612345678 (numéro du telephone)
sendSms = "L4AZIL C4EST TRO BIEN§§§§" (message a envoyer)

que je peux réutiliser en tapant

http://IPMACHINE/RaspiSMS/smsAPI/?email=UTILISATEUR&password=MOTDEPASSE&numbers=NUMTEL&text=MESSAGEAENVOYER

RaspiSMS ayant une API qui permet directement d'envoyer le SMS via une requete http sur le réseau.

Bref le but c'est
-checker le dossier si des fichiers sms sous format ini sont en attente
-récupérer les deux variables importantes dans le fichier texte (numéro + texte)
-les refoutre dans la requête html que comprendra le raspberry
-effacer le fichier sms traité


Simple?
Comment s'y prendre?
Des idées?
Avant de réinventer la roue, je me suis dit que poser 2-3 questions ici ne ferait pas de mal.

Re : Script automatisation et noobitude

Script python

3

Re : Script automatisation et noobitude

En passant par du python. Ok.

J'y connais queud donc le but c'est qu'au moins j'aille dans le bon sens et que je fasse au plus simple/efficace.

Re : Script automatisation et noobitude

Tu as regardé gammu (https://wammu.eu/gammu/) ? Tu peux déposer ton fichier dans un rep et il l'envoie dés que possible. Donc avec un bete partage réseau ca devrait rouler. Tu peux meme utiliser une db pour faire la meme chose en plus propre. En moins propre tu peux aussi l'envoyer en ligne de commande du genre "echo 'L'asile avec Francois Piston' | gammu-smsd-inject TEXT +336666666 -text"

Re : Script automatisation et noobitude

Tu devrais dresser un caniche ou une tête de chat enragé à envoyer les SMS à ta place.



Je ne suis pas Niark²

6

Re : Script automatisation et noobitude

avec python ça devrait prendre genre 5 lignes, Porcin a qu'à te l'écrire pour cette fois. Tu verras que la syntaxe est relativement simple ou semblable à ce que tu connais, et tu t'y mettras. Raspberri / Python je crois que ça marche plutôt bien ensemble en plus, donc tu trouveras plein de ressources en ligne pour faire ce que tu veux exactement.

Tu veux ouvrir chaque fichier .ini et récupérer tes deux données, c'est quoi que t'arrives pas à faire?
Avec un petit script python tu peux faire tout ça, y mettre des commandes bash aussi, donc envoyer la requête http, et effacer le fichier ensuite même, si je me trompe pas...

Re : Script automatisation et noobitude

Devis en mp

8 Dernière modification par Kefka (02-02-2017 12:45:32)

Re : Script automatisation et noobitude

Prends un enfant migrant pour le faire comme au pays sinon

9

Re : Script automatisation et noobitude

#!/bin/sh

src=./
ipmachine=127.0.0.1
user=utilisateur
password=mdp

for f in $src/*.ini; do
    number=$(sed -ne 's/smsCapablePhone *= *\([0-9]\+\)/\1/p' $f)
    content=$(sed -ne 's/.*sendSms *= *\(".\+"\)/\1/p' $f)

    if curl "http://$ipmachine/RaspiSMS/smsAPI/?email=$user&password=$password&numbers=$number&text=$content"; then
        rm $f
    fi
done

Pas testé

su-per

10

Re : Script automatisation et noobitude

Oh merci Plume. J'étais en train de mater les sites "python pour les golios", tu viens de m'épargner pas mal de tâtonnements.
Je ne peux pas tester maintenant mais ça servira de squelette de base pour la suite.

Cœur avec les doigts forever.

11

Re : Script automatisation et noobitude

De rien. Ça sera quand même plus propre avec du python, notamment en ce qui concerne l'échappement de ton texte à envoyer (qui doit être passé via l'url).

su-per

12

Re : Script automatisation et noobitude

tant que personne ne s'appelle ';rm -rf / ça devrait aller.

13 Dernière modification par Aenema (02-02-2017 17:15:55)

Re : Script automatisation et noobitude

Le "soft clientèle" c'est un CRM ? Lequel ? Aussi t'as pas besoin de conserver quelque part l'historique des SMS envoyés ? A moins que RaspiSMS ne le gère par défaut ?

"Today a young man on acid realized that all matter is merely energy condensed to a slow vibration, that we are all one consciousness experiencing itself subjectively, there is no such thing as death, life is only a dream, and we are the imagination of ourselves. Heres Tom with the Weather."

14

Re : Script automatisation et noobitude

Parce que si ce fameux "soft clientèle" est capable de générer un fichier avec toutes ces variables à l'intérieur, n'est-il pas capable de lancer une URL sur un clic bouton contenant 2 variables à l'intérieur ?
Comme ça pas besoin de te faire chier à traiter des fichiers, le mec clic sur le bouton "Envoyer le SMS", ça lui ouvre un nouvel onglet dans son navigateur avec l'URL qui va bien et paf, fin de l'histoire.

"Today a young man on acid realized that all matter is merely energy condensed to a slow vibration, that we are all one consciousness experiencing itself subjectively, there is no such thing as death, life is only a dream, and we are the imagination of ourselves. Heres Tom with the Weather."

15

Re : Script automatisation et noobitude

Kane a écrit:

tant que personne ne s'appelle ';rm -rf / ça devrait aller.

mandatory
http://i.imgur.com/caZvGFp.png

16

Re : Script automatisation et noobitude

Kane a écrit:

tant que personne ne s'appelle ';rm -rf / ça devrait aller.

Tu fais bien d'en parler. Kek le script doit être lancé avec un utilisateur ayant le minimum de droit (c'est une bonne pratique de façon générale).

Bon là en l'occurrence, les guillemets protègent d'une injection de commande dans les différents champs.

su-per

17

Re : Script automatisation et noobitude

T' es toujours en couple avec ta congeleuse de chats ? C'est mignon.

Inséminateur de femmes ménopauséent

18 Dernière modification par Kek (04-02-2017 16:54:16)

Re : Script automatisation et noobitude

Alors j'ai foutu un dossier en partage sur le réseau ou tombent les sms, le raspberry lui lance le script SMS toutes les 10 minutes donc sur ce point c'est ok. Le tout sur une session sans droit admin histoire d'éviter les blagues.
Ton script marche plume, il récupère bien les messages et les numéros MAIS ça chie dans la ligne curl.
Il me renvoie un message d'erreur:
CURLE_URL_MALFORMAT (3)

The URL was not properly formatted.

Ça doit venir des guillemets j'imagine ou il envoie texto http://$ipmachine/RaspiSMS/smsAPI/?email=$user&password=$password&numbers=$number&text=$content sans y rentrer les variables?
Et si je rentre les données à la main, il m'envoie bien le SMS mais seulement le premier mot du texte.

Désolé d'abuser mais faire du bash sans en connaitre les bases, même a coup de google j'arrive vite a mes limites smile

Sinon pour le soft c'est un truc nommé vetopartner et pas sur de pouvoir directement bidouiller la chose. Encore moins demander une modif qui ne doit intéresser que moi.
Et ouais Stany, ca doit bien faire 5 ans là smile

19

Re : Script automatisation et noobitude

Hum essaye de remplacer la ligne

if curl "http://$ipmachine/RaspiSMS/smsAPI/?email=$user&password=$password&numbers=$number&text=$content"; then

Par

if curl --verbose --get --data-urlencode "email=$user" --data-urlencode "password=$password" --data-urlencode "numbers=$number" --data-urlencode "text=$content" "http://$ipmachine/RaspiSMS/smsAPI/"; then

Je mise sur un espace dans ton message qui fout le bordel.

su-per

20

Re : Script automatisation et noobitude

Je teste ca demain. Merci <3

21

Re : Script automatisation et noobitude

Tout marche niquel. Merci encore Plume.

22

Re : Script automatisation et noobitude

Question con (comme d'hab).
Quand un signe éèà se retrouve dans le script, le sms ne se lance pas. J'imagine que c'est une connerie avec l'utf8. J'ai tenté de bidouiller le LOCALE sans succès.
Une idée nobles informatologues?

Re : Script automatisation et noobitude

change ton clavier, man


BÉPOÈ !

No pussy blues.

24

Re : Script automatisation et noobitude

D'après ton 1er post ton fichier est généré en ISO 8859-15

Tu pourrais utiliser iconv pour convertir ça en UTF8.

Dans la boucle postée par Plume :
remplacer
number=$(sed -ne 's/smsCapablePhone *= *\([0-9]\+\)/\1/p' $f)
par
number=$(iconv -f iso-8859-15 -t utf8 $f | sed -ne 's/smsCapablePhone *= *\([0-9]\+\)/\1/p')

pareil pour la ligne content :  content=$(iconv -f iso-8859-15 -t utf8 $f |sed -ne 's/.*sendSms *= *\(".\+"\)/\1/p')


Note que je ne suis pas du tout sûr de la syntaxe.

25

Re : Script automatisation et noobitude

Merci Kane, vais tester ça cet aprem.