J’ai récemment résolu une problématique client en lui mettant en place un système pour envoyer un iMessage avec AppelScript. Je vous propose donc de vous expliquer rapidement le principe.
Applescript est un langage de scripting simple, embarqué dans tous les Mac depuis longtemps (très longtemps même… 1991). et qui permet d’automatiser simplement des tâches du quotidien. C’est un langage haut niveau, facilement compréhensible pour les développeurs ou non et qui rend bien des services comme dans le cas que je vous propose de découvrir aujourd’hui.
Pourquoi fallait-il envoyer un iMessage avec AppleScript ?
La problématique est simple : Mon client possède une adresse email générique sur laquelle il reçoit des appels d’offres. Il m’explique que souvent, dans ce genre de situation, le premier fournisseur qui répond remporte le marché. De plus, ces AO peuvent tomber à n’importe quel moment étant donné la nature de son activité professionnelle.
Mon client voulait donc être alerté par « SMS » lorsqu’un mail arrive dans cette boîte mail. Il possède un iPhone et un Mac mini fixe avec la possibilité d’être allumé en permanence, je lui ai donc proposé une solution simple, rapide à mettre en place, sans coût de facturation de telecom (sms classiques) et qui fonctionne très bien.
Principe de la solution pour envoyer un iMessage avec Applescript
Le système est simple, voici les grandes étapes :
La boite email générique est configurée sur Apple Mail sur le Mac du client.
Nous allons créer une Règle Mail qui execute un AppleScript à la reception d’un email dans cette boîte.
Le script va ouvrir l’application Messages sur le Mac et générer le iMessage.
Ecriture de l’Apple Script
Le script est à placer dans :
/Users/matthieu/Library/Application Scripts/com.apple.mail
Tous les scripts placés dans ce dossier seront affichés dans Mail par la suite, nous permettant de sélectionner le script desiré.
ps : Pour que le script fonctionne, il faut qu’un compte iMessage soit renseigné dans l’application Messages du Mac, cela va de soit.
Bon, pour commencer, ouvrez l’Éditeur de script et copiez le snippet suivant :
tell application "Messages" -- Demande l'ouverture de l'application Messages set targetBuddyPhone to "***************.com" -- 1. mettre entre les guillements le numéro ou l'adresse iMessage du destinataire set targetMessage to "Nouveau mail sur la boite importante" -- 2. mettre entre les guillements le contenu de votre imessage set targetService to 1st account whose service type = iMessage -- precise le mode d'envoi set targetBuddy to participant targetBuddyPhone of targetService send targetMessage to targetBuddy --envoie le message end tell
Je ne vous fait pas l’affront de détailler le script, j’ai ajouté des commentaires qui suffiront.
Voici à quoi cela devrait ressembler dans votre éditeur :
Enregistrez bien votre script avec le nom de votre choix. Dans cet exemple, pour moi c’est Envoyer_imessage_alerte. Déplacez le ensuite dans le dossier des scripts de Mail (pour rappel : /Users/matthieu/Library/Application Scripts/com.apple.mail)
nb : Vous pouvez tester le fonctionnement de votre script avec le bouton « Executer le script ». Si un message est envoyé dans l’application Messages, c’est tout bon.
Configurer la règle dans Mail
Votre script est déjà fonctionnel mais afin de vous montrer mon exemple d’automatisation jusqu’au bout, voici comment executer le lancement du script à la reception du mail dans Apple Mail.
- Lancez Mail puis rendez-vous dans préférences, puis l’onglet « Règles ».
- Cliquez sur « Ajouter une règle ».
- Configurez comme suit en selection votre script :
Et voilà.
Vous pouvez faire le test. Envoyez un email sur l’adresse en question. Mail va executer l’AppleScript et vous recevrez un message d’alerte.
Nous avons ici un exemple d’utilisation avec Mail pour envoyer un iMessage avec AppleScript mais potentiellement ce système pourrait être utilisé comme système de notification pour bien d’autres programmes permettant l’execution d’AppleScript.
A bientôt
5 commentaires
Thibaut Le Cornec · 28 mai 2021 à 20 h 59 min
Même si j’aime Apple Script je trouve que cette solution c’est prendre un tank pour défoncer une pote ouverte !
Moi j’aurais simplement configuré le compte mail en question sur l’iPhone, autorisé les notifications de ce compte (sachant que ça l’est normalement par défaut dans Réglages > Mail > Notifications) et aurais choisi « bannière » ou même « alerte » puis j’aurais configuré la récupération liée à ce compte sur « 15 min » dans Réglages > Mail > Comptes > Nouvelles données.
Ainsi toutes les 15 min l’iPhone fetch les mails de ce compte, et si nouveau mail, il y a une notification sous forme de bannière ou d’alerte !
Le seul inconvénient : ça réduira un peu l’autonomie de l’iPhone de devoir fetcher le serveur mail toutes les 15 mins, mais si ça peut aider à éviter qu’un Mac mini reste allumer en permanence c’est pas plus mal, à moi s que ce soit un Mac mini M1 qui ne consomme quasiment rien ^^.
matthieu · 28 mai 2021 à 23 h 34 min
Salut Thibaut, merci pour ton commentaire.
effectivement, la solution que tu proposes est celle que j’avais annoncé de base au client.
Cependant, contractuellement, mon client a 20 min pour répondre aux mails qui tombent sur la boîte en question. Les 15 min du mode récupération de l’iPhone ne sont pas suffisantes…(là, où sur Mac on peut régler sur chaque minute) et sur ce serveur mail c’est de l’imap classique, pas de mode push comme sur un Exchange par exemple.
Là, le client et ses associés reçoivent tous un iMessages et peuvent réagir en conséquence. 🙂
Je suis d’accord, point négatif, le Mac doit resté allumé en permanence.
Bonne soirée
Michel · 11 août 2021 à 12 h 03 min
Bonjour Mathieu, Je viens de voir votre script qui m’intéresse beaucoup pour envoyer un sms par l’application Message.app. Cependant, la ligne « set targetBuddy to participant targetBuddyPhone of targetService » empêche le script de se compiler. Quand on l’enlève ça compile. Mais bien entendu cela ne doit pas fonctionner. Je suis en OS 10,11 El Capitan. Une idée ?
MAIRE · 5 mai 2022 à 11 h 48 min
Bonjour Michel, j’ai le même problème, avez vous trouvé une solution?
Merci.
Jean-Yves · 18 novembre 2022 à 18 h 52 min
Bonjour.
Merci pour votre partage. Cependant, cela ne fonctionne pas avec des sms, mais uniquement avec iMessage d’Apple. Avez-vous une idée pour résoudre ce problème ?
Merci d’avance.