Cas d’usage des outils Cloud

Le challenge

Lorsque l’on utilise WordPress et le module Bookly pour gérer les réservations en ligne, il est pratique de pouvoir envoyer automatiquement un SMS la veille du Rendez-vous à son client. Le module Bookly propose un service d’envoi SMS mais celui-ci est assez coûteux.

La Solution

Si vous utilisez les outils Google (Mail, Calendar,…) avec Bookly (synchronisation de l’agenda), il est possible d’envoyer des SMS à partir de Google en utilisant Google script. Attention, cette solution est réservée aux développeurs curieux de connaître les possibilités des outils dans le Cloud.

Une solution pour automatiser vos envoi de SMS

Réservé aux développeurs

Difficulté (1 à 10)

%

Performance

Une solution pour WordPress

Wordpress

Une solution a connecter à votre site WordPress

Mobile ready

Bookly fonctionne avec les mobiles

Automatisé

Permet de gagner un temps précieux

Une des fonctions très appréciées par les utilisateurs d’un service est le rappel par SMS du prochain RDV. De nombreuses professions libérales comme les médecins ou les thérapeutes ont un site Internet pour afficher leur tarifs, leurs spécialités, leurs lieux de consultation et leurs tarifs. Très peu d’entre-eux permettent à leur client de prendre une RDV en ligne en fonction de leur disponibilité. C’est pourtant une fonction très appréciée des clients qui peuvent choisir par eux-même depuis leur téléphone ou leur ordinateur portable, le soir au calme, le meilleur moment pour un RDV.  Une fois le RDV pris, le thérapeute ou le médecin souhaite avec une confirmation du RDV par le client. Un SMS envoyé au numéro de téléphone indiqué par le client lors de la réservation peux servir de rappel et éventuellement de retour pour la confirmation par le client.

Evidemment toutes ces fonctions nécessitent plusieurs outils informatiques.

J’explique ici, dans cet article, une solution mise en oeuvre avec

  • Google Calendar,
  • Google Mail,
  • le module Bookly installé sur une site WordPress,
  • quelques scripts Google exécutés de manière récurrente
  • et un service d’envoi et réception SMS (ici le service SMS OVH)

1 – Prise de RDV en ligne synchronisé avec votre agenda Google

Tout le monde (ou presque) utilise un agenda connecté sur son smartphone ou son ordinateur. L’un des outils fournis par Google s’intègre très facilement sur votre smartphone. Si en plus, vous avez un site Internet créé avec le fameux WordPress, je vous conseille vivement le module Bookly (45$ pour une licence complète) disponible à l’adresse  (https://wordpress.org/plugins/bookly-responsive-appointment-booking-tool/). Ce module très simple à configurer et très joli vous permet de synchroniser de manière bidirectionnelle votre agenda Google avec l’agenda de Bookly. Cette synchronisation dans le deux sens vous permettra de gérer vos RDV depuis voter téléphone sans être obligé d’aller votre site Internet.  La configuration de la synchronisation est bien expliqué dans le module et passe par l’activation de l’API dans votre compte Google, la création d’une authentification OAuth et la création d’un Token pour le renseigner dans la configuration de Bookly. Ensuite, il faudra lié votre agenda avec le compte de l’utilisateur Bookly (Staff).

Je passe sur la description des fonctionnalités du module Bookly qui répond à un certain nombre de besoins car l’essentiel est cette fonctionnalité de synchronisation avec Google Calendar. Si vous utilisez un autre système de réservation, assurez-vous qu’il utilise une synchronisation bi directionnelle avec Google Calendar.

2- Envoi d’un SMS pour demander la confirmation du RDV

Le module Bookly comporte un service d’envoi de SMS intégré mais malheureusement ce service ne permet pas la réception et le traitement des réponses. J’ai donc utilisé les services de OVH, le fournisseur qui héberge le site WordPress de mon client.

Le service SMS de OVH permet de gérer les réponses aux SMS en transmettant par exemple le retour à une adresse email. J’ai donc décidé ici d’envoyer la réponse à l’adresse de messagerie du compte Google configuré pour ce service (le même compte qui possède le calendrier).

Si vous avez déjà un compte Gmail, je vous préconise de créer un agenda spécifique pour vos RDV (https://support.google.com/calendar/answer/37095?hl=fr) et de créer un filtre qui applique le label RetourSMS aux messages qui correspondent aux retours SMS.

Vous souhaitez envoyer un SMS la veille du RDV pour informer votre client et lui demander de confirmer sa présence ?

Nous avons utilisé un script Google, écrit sur mesure et exécuté tous les jours entre 12h et 13h pour envoyer un SMS au client ayant un RDV le lendemain. Pour ce faire, ce script effectue les actions suivantes :

Pour tous les RDV planifiés le lendemain :
– Récupération du numéro de téléphone dans le titre (Si vous avez noté vos rendez-vous manuellement ou dans le corps du RDV (Si le RDV est créé par le module de réservation en ligne).
– Récupération de l’heure du début du RDV
– Construction du message de 160 caractères maxi (pour utiliser un seul SMS) avec l’heure du RDV
– Envoi du SMS en utilisant l’API de OVH (ou du fournisseur d’envoi de message SMS)
– Eventuellement envoi d’un mail au praticien pour l’informer de l’envoi du SMS avec succès ou de l’échec de l’envoi.

function sendSMS() {
var EmailPraticien = “email”;
var now = new Date();
var tenHoursFromNow = new Date(now.getTime() + (10 * 60 * 60 * 1000));
var thirtyfourHoursFromNow = new Date(now.getTime() + (34 * 60 * 60 * 1000));
var events = CalendarApp.getDefaultCalendar().getEvents(tenHoursFromNow, thirtyfourHoursFromNow);
//Logger.log(‘Number of events: ‘ + events.length);
for (var i=0;i<events.length;i++) {
//http://www.google.com/google-d-s/scripts/class_calendarevent.html
var StartTime=[[events[i].getStartTime()]];
var EndTime=[[events[i].getEndTime()]];
var Titre=[[events[i].getTitle()]];
var Description=[[events[i].getDescription()]];
var eventId=[[events[i].getId()]];
var row=i+1;
//Logger.log(‘StartTime: ‘ + StartTime);
Logger.log(‘Titre: ‘ + Titre);
Logger.log(‘Description: ‘ + Description);
var regExp = new RegExp(“([0-9]+){1}”);
var numtel = regExp.exec(Titre);
if ( numtel === null ) {
var regExp = new RegExp(“Téléphone: ([+0-9]+){1}”);
var numtel = regExp.exec(Description);
var LeNumero = numtel[1];
var MonNumero = LeNumero;
} else {
// Cas du numero trouvé dans le titre sous format 06xxxxxxxx ou 07xxxxxxxx
var LeNumero = numtel[1];
// remplacé les premier 0 par +33
var regExp = new RegExp(“(^[0]){1}”);
var MonNumero = LeNumero.replace(regExp, “+33″);
}

Logger.log(‘Numéro trouvé: ‘ + MonNumero);

var StartDate = new Date(StartTime);
//Logger.log(‘StartDate: ‘ + StartDate);
var FUS1=new Date(StartTime).toString().substr(25,6)+”:00″;
//Logger.log(‘GMTPlus: ‘ + FUS1);
var heure = Utilities.formatDate(StartDate, FUS1, “HH”);
Logger.log(‘Heure: ‘ + heure);

var messageSMS = “Votre RDV demain à ” + heure + “h au [adresse].\nInterphone [ID] 1er etage et à droite. \nMerci de confirmer par SMS, SVP”;
Logger.log(‘Message: ‘ + messageSMS);

var url=”https://www.ovh.com/cgi-bin/sms/http2sms.cgi”

var payload =
{
“account”:SMSAccount,
“login”:SMSLogin,
“password”:SMSPassword,
“from” : SMSFrom,
“to” : MonNumero,
“message” : messageSMS,
“noStop”:”1″,
“tag”:eventId
};

var options =
{
“method” : “GET”,
“payload” : payload
}

var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());

var dataAll = response.getContentText();
var result = dataAll.search(/OK/);
Logger.log(“result: ” + result);

if (result == “0”) {
// Envoi d’un mail de confirmation d’envoi du SMS à EmailPraticien
MailApp.sendEmail(EmailPraticien,
“SMS envoyé avec succès pour RDV : ” + Titre,
“SMS envoyé avc succès pour le RDV du ” + StartDate + “: \n\n” + Description + “\n” + “Envoyé au ” + MonNumero + “\n” + messageSMS);
} else {
// Envoi d’un mail d’erreur d’envoi du SMS à EmailPraticien
MailApp.sendEmail(EmailPraticien,
“ERREUR de SMS pour RDV : ” + Titre,
“SMS non transmis pour le RDV du ” + StartDate + “: \n\n” + Description + “\n” + “Envoyé au ” + MonNumero + “\n” + messageSMS + “\nRésultat de l’envoi : ” + dataAll);
}
}
}

support
icon
Besoin de support ?
Close
call
0685334644
menu-icon
Support Ticket