TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Page 2 sur 4 Précédent  1, 2, 3, 4  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 15/8/2014, 11:56 am

nico2c a écrit:salut,

perso j'ai enlevé la ligne

Code:
threads[i].moveToTrash();

pour ne pas mettre le mail a la poubelle, et pouvoir aller voir le mail en détail apres reception du SMS

Oui et ... non, je pense qu'il y a un risque dans ce cas car le programme il y a
Code:
threads[i].getFirstMessageSubject()
ce qui signifie que s'il y a plusieurs alertes de suite, on ne recevra pas de nouveau un sms et que la fausse alerte risque de masquer les vraies alertes. C'est le cas d'une de mes caméras IP devant laquelle un bel oiseau aime se faire prendre en photo !! au moins cela me permet de voir que le système fonctionne bien !

Pour conserver le message, avant de le supprimer, on peut le renvoyer vers une autre BAL :
Code:
var message = threads[i].getMessages()[0];
message.forward("prenom.nom@fai.com");
threads[i].moveToTrash();

On peut aussi ajouter l'origine.

Je vais faire un peu de recherche archéologique ici
https://developers.google.com/apps-script/reference/gmail/gmail-message
et tester ...

Il faut toutefois garder à l'esprit qu'il y a une limitation, que j'ai déjà atteint avec mes tests !
Le nombre de notifications par SMS que vous pouvez recevoir par jour est limité. Cela ne pose pas de problème à la plupart des utilisateurs, mais vous devez néanmoins garder cette contrainte à l'esprit si vous avez prévu de nombreux événements et que vous ne recevez plus de notifications par SMS.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

adaptations ... (dernier message reçu + non-effacement)

Message  Steelson le 16/8/2014, 10:03 am

Variante (en français aussi pour plus de clarté) :
- ne supprime pas les messages
- marque le message lu et le laisse en place
- prend le dernier de la conversation ... c'est à dire qu'en cas de fausse alerte, les alertes suivantes ne sont pas ignorées pour autant !
Remplacer alertes par le nom de votre calendrier et Envoi SMS par votre propre libellé ...

Code:
//adaptation Steelson forum myfox, libre de droits
function EnvoiSMS() {
  var libelle = GmailApp.getUserLabelByName('Envoi SMS');
  var conversation = libelle.getThreads();
  var maintenant = new Date().getTime();
  var calendrier = CalendarApp.getCalendarsByName('alertes');
  for(i in conversation){
    if(conversation[i].isUnread()){
      var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
      calendrier[0].createEvent('Réception message : '+message.getSubject(), new Date(maintenant+60000), new Date(maintenant+60000)).addSmsReminder(0);
      message.markRead();
    }
  }
}

Voici la version free à toutes fins utiles.
Remplacer Envoi SMS par votre propre libellé ...
Remplacer votre_user par votre login free (pas votre n° de téléphone !) et votre_mdp par votre clé d’identification générée automatiquement par free.
Code:
//adaptation Steelson forum myfox, libre de droits
function EnvoiSMS() {
  var libelle = GmailApp.getUserLabelByName('Envoi SMS');
  var conversation = libelle.getThreads();
  var maintenant = new Date().getTime();
  for(i in conversation){
    if(conversation[i].isUnread()){
      var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
      var response = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=votre_user&pass=votre_mdp&msg="+encodeURIComponent(message.getSubject()));
      message.markRead();
    }
  }
}
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  nico2c le 16/8/2014, 1:50 pm

Steelson a écrit:Variante (en français aussi pour plus de clarté) :
- ne supprime pas les messages
- marque le message lu et le laisse en place
- prend le dernier de la conversation ... c'est à dire qu'en cas de fausse alerte, les alertes suivantes ne sont pas ignorées pour autant !
Remplacer alertes par le nom de votre calendrier et Envoi SMS par votre propre libellé ...

Code:
//adaptation Steelson forum myfox, libre de droits
function EnvoiSMS() {
  var libelle = GmailApp.getUserLabelByName('Envoi SMS');
  var conversation = libelle.getThreads();
  var maintenant = new Date().getTime();
  var calendrier = CalendarApp.getCalendarsByName('alertes');
  for(i in conversation){
    if(conversation[i].isUnread()){
      var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
      calendrier[0].createEvent('Réception message : '+message.getSubject(), new Date(maintenant+60000), new Date(maintenant+60000)).addSmsReminder(0);
      message.markRead();
    }
  }
}

pas mal la version API Free

par contre, on arriverais a mettre un peu plus dans le SMS ?

comme:
expediteur: sujet
avatar
nico2c
Habitué
Habitué

Messages : 628
Date d'inscription : 18/12/2013

http://www.n-azambre.info

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 16/8/2014, 2:31 pm

... on peut le mettre en ajoutant message.getFrom()

Code:
calendrier[0].createEvent('Réception de : '+message.getFrom()+' : '+message.getSubject(), new Date(maintenant+60000), new Date(maintenant+60000)).addSmsReminder(0);

Je n'ai repris ici que le titre, sinon il faudrait faire des manips sur le texte (message.getPlainBody()) car les sms sont plus "bruts".

Et n'oubliez pas de supprimer les événements ... à programmer tous les jours.
-86400000 signifie -24h, c'est à dire que tous les événements passés il y a plus d'un jour seront supprimés !
xxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com est à remplacer par l'identifiant de votre calendrier, l'application vous l'indique mais ce n'est pas évident à trouver.
Code:
function SupprimerEvenements() {
 
  var maintenant = new Date().getTime();
  var debut = new Date("January 1, 2014 GMT");
  var fin = new Date(maintenant-86400000);

  var moncalendrierID = "xxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com";

  var moncalendrier=CalendarApp.getCalendarById(moncalendrierID);
  var evenements = moncalendrier.getEvents(debut, fin);

  for (i in evenements) {
    evenements[i].deleteEvent();
  }

}
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 23/8/2014, 12:14 pm

J'ai fait un test cette semaine entre :
- Gmail -> calendar -> sms via Google
- IFTTT depuis Gmail -> sms (selon messages reçus labellisés)

Les sms arrivent tous les 2 en même temps.
MAIS, Google s'arrête d'émettre après un certain nombre de sms envoyés, pas plus de 3/jour, alors qu'IFTTT continue.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  bz/myfox1 le 25/8/2014, 11:37 am

Bonjour à tous et merci pour ces tutos.
J'ai repris les tutos de Steelson, étant free mobile et intéressé à utiliser cette fonctionnalité. (car aucune limitation de nombre de SMS)
Si le script utilisant le calendrier fonctionne à merveille, je ne parviens pas à obtenir de SMS en utilisant celui "dédié free".
J'ai bien mis les bons libellés, ceux qui fonctionnent dans le script "Google".
Par ailleurs, lorsque je recopie la ligne propre à l'envoi du SMS par Free( https://.......), après l'avoir renseignée de mes identifiant/mot de passe, et que je la colle dans un navigateur, je reçois bien le SMS.
Donc ce n'est pas cette partie du script qui me pose problème mais bien l'action qui déclenche cet envoi par la ligne de commande.
Je ne suis pas très doué pour aller plus loin dans les investigations.
Pouvez vous m'aider?
Merci d'avance

bz/myfox1
Habitué
Habitué

Messages : 19
Date d'inscription : 23/08/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 25/8/2014, 1:23 pm

Est-ce que les messages reçus sont bien "lus" après déroulé du script ?

Essaie de remettre le message en "non lu" à partir de Gmail et refais tourner le script.

Envoie en MP ou ici le script (sans tes identifiants free bien sûr, je veux bien regarder ce soir ... sauf si qqun était plus compétent).
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

SMS avec Free

Message  bz/myfox1 le 25/8/2014, 1:51 pm

Merci de vous intéresser à mon cas.
Les SMS sont lus après exécution du script.
Voilà le script que j'utilise:

//adaptation Steelson forum myfox, libre de droits
function EnvoiSMS() {
var libelle = GmailApp.getUserLabelByName('Envoi SMS');
var conversation = libelle.getThreads();
var maintenant = new Date().getTime();
for(i in conversation){
if(conversation[i].isUnread()){
var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
var response = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=xxxxxxxx&pass=xxxxxxxxxxxxxx&msg="+encodeURIComponent(message.getSubject()));
message.markRead();
}
}
}

bz/myfox1
Habitué
Habitué

Messages : 19
Date d'inscription : 23/08/2014

Revenir en haut Aller en bas

sms avec free

Message  bz/myfox1 le 25/8/2014, 2:26 pm

Bizarre.
J'ai forcé le mail en non lu, forcé l'exécution du script et j'ai reçu un SMS.
Depuis......ça fonctionne normalement avec la réception des mails!?
Comprends pas.
Le script permet d'envoyer l'intitulé du mail.
Que faut il ajouter au script pour avoir le corps du message? (qui précise le N° du capteur, l'heure du déclenchement...)
Merci si tu veux bien encore me consacrer un peu de ton temps.

bz/myfox1
Habitué
Habitué

Messages : 19
Date d'inscription : 23/08/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 25/8/2014, 6:04 pm

C'est déjà bien !
Pour le code, il y a une erreur (de ma part), ce n'est pas critique mais ce n'est pas cohérent; il faut remplacer
Code:
 message.markRead();
par
Code:
 conversation[i].markRead();

Pour avoir le contenu du message en plus du titre ou à la place du titre, il faut aller chercher les informations dans le message, ici je ne traite que le sujet (getSubject) dans
Code:
encodeURIComponent(message.getSubject())
et tenir compte que le codage d'un sms n'a rien à voir ni en longueur ni en format avec un courriel (en html).
Je vais regarder cela (avec la difficulté que mes 2 cartes sim free ne me sont pas actuellement sous la main = 1 en clé 3G/box TP-LINK wifi associée à mes 2 Cam Bewan et 1 prêtée à ma fille, donc je vais faire un bout de code en aveugle, à toi de le tester ensuite).
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 25/8/2014, 6:23 pm

Essaie ceci ...
Code:
//adaptation Steelson forum myfox, libre de droits
function EnvoiSMS() {
 var libelle = GmailApp.getUserLabelByName('Envoi SMS');
 var conversation = libelle.getThreads();
 var maintenant = new Date().getTime();
 for(i in conversation){
 if(conversation[i].isUnread()){
 var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
 var texte = (message.getSubject() + ' | ' + message.getPlainBody()).replace(/(\r\n|\n|\r)/gm," ").substring(0,480);
 var response = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=xxxxxxxx&pass=xxxxxxxxxxxxxx&msg="+encodeURIComponent(texte));
 conversation[i].markRead();
 }
 }
}

Voire même, simplifie la ligne en ne mettant que le corps du texte si le titre est redondant avec le corps
Code:
 var texte = message.getPlainBody().replace(/(\r\n|\n|\r)/gm," ").substring(0,480);

Désolé, pas testé de mon côté, dis nous si OK.
Et gloup, j'ose espérer qu'il n'y a pas de limitation à l'adresse URL https:// sinon il faudra abaisser le chiffre de 480 ...

Amicalement, ...
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

SMS avec Free

Message  bz/myfox1 le 25/8/2014, 6:54 pm

Heuuuuue.... je suis prêt à essayer mais, bien que tout continue à fonctionner (avec seulement les entêtes de mail biens sûr), je suis pas foutu de retrouver le script dans Google Drive pour le modifier....

bz/myfox1
Habitué
Habitué

Messages : 19
Date d'inscription : 23/08/2014

Revenir en haut Aller en bas

SMS avec Free

Message  bz/myfox1 le 26/8/2014, 10:17 am

Bon j'ai retrouvé mes petits.
J'ai modifié le script et en effet on va un peu plus loin dans le texte du mail reproduit par le SMS.
Et en effet si je supprime la requête pour l'entête et que je ne laisse que "getPlainBody" je ne reçois plus l'entête, logique.
Mais "get plainBody" se borne à retranscrire dans le mail que la première partie du corps du message qui est en fait la redite de l'intitulé du mail.
Il manque la partie intéressante, à savoir, par exemple:
Lundi 25 Août 2014 22h23 : Désactivation de la protection de votre site XXXXXXX par la télécommande « YYYYYY »

 Merci encore.

Facebook Twitter YouTube Blog Notre service client est à votre disposition
par téléphone au 09 69 39 42 00
ou par email à contact@myfox.fr
Fichiers joints
Document1.pdf Vous n'avez pas la permission de télécharger les fichiers joints.(29 Ko) Téléchargé 17 fois

bz/myfox1
Habitué
Habitué

Messages : 19
Date d'inscription : 23/08/2014

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 26/8/2014, 1:13 pm

Voir en MP pour m'envoyer copie du mail ... j'en perds mon latin !
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 27/8/2014, 5:14 pm

bz/myfox1 a écrit:Mais "get plainBody" se borne à retranscrire dans le mail que la première partie du corps du message qui est en fait la redite de l'intitulé du mail.
Il manque la partie intéressante, à savoir, par exemple:
Lundi 25 Août 2014 22h23 : Désactivation de la protection de votre site XXXXXXX par la télécommande « YYYYYY »

 Merci encore.

Après de longues recherches et essais menés en commun, la cause de la troncature du message est la présence d'un espace insécable dans le mail reçu de myfox.

Cet espace insécable s'écrit & n b s p ; (je suis obligé de séparer par des blancs sinon on ne le verrait pas dans ce post) et donc commence par & : c'est là tout le problème.

En effet, l'api sms de free est basée sur une URL https avec les arguments passés dans l'URL (méthode "get"); ces arguments sont séparés par & ... et donc free comprends au début du mot & n b s p ; qu'il a fini de recevoir le texte du sms à envoyer. Il faut donc neutraliser ces & !

Par ailleurs, les accents passent mal, mais c'est sans doute un moindre mal.
Je vais poster à l'usage de celui qui veut la correction après quelques derniers tests.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 30/8/2014, 8:29 am

Pour les possesseurs de carte Sim free :

Code:
//adaptation Steelson forum myfox, libre de droits
function EnvoiSMS() {
  var libelle = GmailApp.getUserLabelByName('Envoi SMS');
  var conversation = libelle.getThreads();
  for(i in conversation){
    if(conversation[i].isUnread()){
      var message = conversation[i].getMessages()[Number(conversation[i].getMessageCount()-1)];
      var texte = message.getPlainBody().replace(/(\r\n|\n|\r)/gm," ");
      texte = texte.replace(/(\s{2,})/gm," ");
      texte = texte.replace(/([^a-zA-Z0-9 ;])/gm,"_");
      texte = texte.replace(/((_nbsp;){1,})/gm,"|");
      texte = texte.substring(0,320);
      var response = UrlFetchApp.fetch("https://smsapi.free-mobile.fr/sendmsg?user=xxxxxxxx&pass=xyxyxyxyxyx&msg="+encodeURIComponent(texte));
      conversation[i].markRead();
    }
  }
}

Ceci supprime les retours à la ligne (incompatible avec méthode get dans l'URL), supprime les blancs consécutifs et évite les coupures du message aux blancs insécables (commençant par &) qui ponctuent le mail de myfox (nécessaire aux remplissage virtuel de cases de tableaux).
Néanmoins ceci ne permet pas de faire passer les caractères accentués.
La raison est que le mail de myfox n'est pas encodé Unicode et donc encodeURIComponent renverrait des ?.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 1/9/2014, 7:02 pm

Pour un poil plus de pertinence :

Remplacer
Code:
      texte = texte.substring(0,320);
par
Code:
      var depuis = Math.max(texte.indexOf("Myfox"),0);
      var jusque = Math.min(texte.indexOf("Facebook"),320 + depuis);
      texte = texte.substring(depuis,jusque);
où “Myfox” serait le début (inclus) pertinent du message et “Facebook” la fin (exclue) … à paramétrer.
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

envoi SMS par google

Message  jamaique62 le 3/9/2014, 12:01 pm

Bonjour
Je ne reçois pas les SMS d'alerte par google, alors que le script de google drive fonctionne, le filtre est ouvert et les alertes mail sont bien éliminées de la boite de réception ( preuve que le script a bien été exécuté).
merci

jamaique62
Habitué
Habitué

Messages : 63
Date d'inscription : 14/01/2014
Localisation : Pas de Calais

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 3/9/2014, 1:23 pm

Tu n'en a jamais reçu, ou tu ne les reçois plus ?

Via free :

Essaie ceci dans la barre d'adresse des URL de ton navigateur :
https://smsapi.free-mobile.fr/sendmsg?user=xxxxxxxx&pass=xyxyxyxyxyx&msg=test%20myfox%20Google

Et vois si tu reçois un sms "test myfox Google"

Via calendrier : il faut savoir que Google limite à 2 ou 3 sms/jour. Ton n° de tel est-il bien déclaré en 00336xxxxxxxx pour la France ?
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  jamaique62 le 3/9/2014, 2:14 pm

bonjour Steelson
Effectivement je ne les reçois plus: maxi 1 à 2 par jour et encore!
Alors qu auparavant c etait plutot une dizaine par jour!

jamaique62
Habitué
Habitué

Messages : 63
Date d'inscription : 14/01/2014
Localisation : Pas de Calais

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Steelson le 3/9/2014, 2:16 pm

Solution = IFTTT, mais risque (encore léger) sur délai du sms !! ou free
avatar
Steelson
Habitué
Habitué

Messages : 137
Date d'inscription : 02/08/2014

http://www.geodelos.com

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  steph44 le 3/9/2014, 2:20 pm

Steelson a écrit:Via calendrier : il faut savoir que Google limite à 2 ou 3 sms/jour.
J'ai posté une question à ce sujet ICI
avatar
steph44
Modérateur

Messages : 2897
Date d'inscription : 30/10/2012
Localisation : 44

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  jamaique62 le 3/9/2014, 2:21 pm

Oupps! suis pas encore familiarisé avec IFTT....
mais faut que je l y colle!
Merci

jamaique62
Habitué
Habitué

Messages : 63
Date d'inscription : 14/01/2014
Localisation : Pas de Calais

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  phil90 le 4/9/2014, 9:45 pm

Concernant IFTTT , dans un autre domaine, j'ai activé des alertes SMS lors des declenchement d'un pluviometre NETATMO ainsi que l'atteinte de seuils de temperature et j'ai remarqué qu'il n'y avait une limitation à 100 du nombre de SMS envoyés dans le mois.
Avec cet été bien arrosé en juillet, le 15 j'ai été prévenu par un SMS que mon quota du mois etait bientot atteint. Et effectivement 1 ou 2 jours plus tard, je ne recevait plus rien. Les SMS ont été à nouveau envoyé début aout.

Du coup, je suis revenu à l'envoi sur l'adresse mail en @blackberry.orange.fr qui push en quasi instantané sans limitation.
J'ai cherché s'il existait un compte plus "premium" sur IFTTT sans limitation mais je n'ai rien trouvé.....

phil90
Habitué
Habitué

Messages : 15
Date d'inscription : 31/08/2014

Revenir en haut Aller en bas

envoi SMS par free

Message  jamaique62 le 7/9/2014, 10:54 pm

Bonjour
Je confirme que google depuis quelques semaines limite les SMS à 3 par jour.
Disposant d une freebox, je voudrai utiliser le script "free" correspondant.
Comment dois je le configurer?
Merci

jamaique62
Habitué
Habitué

Messages : 63
Date d'inscription : 14/01/2014
Localisation : Pas de Calais

Revenir en haut Aller en bas

Re: TUTORIEL : Utiliser Google pour envoyer un SMS à la réception d’une alerte mail

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 2 sur 4 Précédent  1, 2, 3, 4  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum