Facebook Pixel
Fit'DistanceDocumentation
Ouvrir l'app
Sur cette page

Un programme se termine cette semaine → une alerte

Chaque lundi, reçois sur Telegram la liste des programmes qui se terminent dans la semaine, avec n8n ou Make.

Chaque lundi à 8 h, tu reçois sur Telegram la liste des programmes qui se terminent dans la semaine : l'élève, le programme, le jour de fin. Tu as le temps de préparer le suivant. Le cas pratique ne fait que lire : le message part du nœud Telegram de ton outil, pas de l'API. Il te faut une clé avec Entraînement › Lire (training:read) et Élèves › Lire (students:read). Si tu n'en as pas, crée-la dans l'app.

Ce que fait ce cas pratique

  1. Déclencheur : chaque lundi à 8 h. La fenêtre est la semaine, du lundi au dimanche compris.
  2. Programmes : GET /programs avec limit=50, toutes les pages. On garde ceux dont status vaut in_progress et dont le dernier jour, la date de end_at, est dans la fenêtre. Un programme sans élève (student_id à null) est ignoré.
  3. Élèves : s'il reste un programme, GET /students, toutes les pages, pour afficher prénom et nom. Si l'élève n'est pas dans la liste (parti, ou pas encore accepté), son programme est ignoré.
  4. Envoi : un message, une ligne par programme ; rien si aucun programme ne se termine.
curl "https://api.fitdistance.io/api/partner/v1/programs?limit=50" \
  -H "Authorization: Bearer fd_live_xxxxxxxx"

Le message

Programmes qui se terminent cette semaine :
— Léa Martin · Prise de masse · fin le mardi 27 octobre
— Tom Durand · Sèche été · fin le vendredi 30 octobre

Le jour affiché est le dernier jour du programme. Les fenêtres se suivent sans se recouvrir : un programme n'est annoncé qu'une fois, le lundi de la semaine de son dernier jour. Si ton outil est éteint un lundi, les programmes de la semaine ne sont pas rattrapés.

Ce que ça coûte

Une page lue coûte un crédit, débité avant l'appel. GET /programs rend tous les programmes, finis et brouillons compris, 50 par page. Un lundi sans programme à annoncer coûte ces pages ; sinon, s'y ajoute au moins une page d'élèves, une par tranche de 50. L'envoi sur Telegram ou WhatsApp ne coûte rien côté API. Un paramètre refusé coûte quand même un crédit ; un 401, un 403 ou un 429 ne coûtent rien.

Dans n8n

  1. Choisis Import from URL… et colle https://fitdistance.io/documentation/api/cas-pratiques/programme-fin-semaine.n8n.json, ou télécharge le workflow et choisis Import from File…. Choisis l'identifiant Fit'Distance API de Brancher n8n dans chaque nœud HTTP Request.
  2. Dans Send alert, crée l'identifiant Telegram Fit'Distance alerts avec le jeton du bot, ou choisis-le s'il existe déjà, et remplace ta_conversation par ton chat_id. Le bot, son jeton et le chat_id s'obtiennent comme dans le récap du lundi.
  3. Exécute le workflow et lis le texte de Build the alert, puis active-le. Lancé à la main un autre jour, il montre la semaine en cours.

Chaque liste est une boucle de Brancher n8n. Programs ending garde, à chaque page lue, les programmes dont le dernier jour est dans la semaine : end_at vaut ce jour à 23 h 59 UTC, et le nœud en lit la date sans la décaler. Anything to say? arrête le workflow s'il n'y en a aucun. Le texte et la langue des jours sont en haut du code de Build the alert. Les heures et les fenêtres suivent le fuseau horaire du workflow (Timezone dans ses paramètres, New York par défaut).

Le fichier envoie sur Telegram. Pour WhatsApp, remplace Send alert par WhatsApp Business Cloud › Send Template. WhatsApp n'accepte qu'un modèle de message approuvé par Meta hors des 24 heures qui suivent un message de ton correspondant : le détail est dans le récap du lundi, où tu retires aussi esc() du code de Build the alert. Meta facture chaque modèle envoyé.

Dans Make

  1. HTTP › Make a request (planning : chaque lundi à 8 h) : GET sur https://api.fitdistance.io/api/partner/v1/programs, limit = 200, Parse response sur Yes.
  2. Iterator sur data, puis un filtre : status égal à in_progress, end_at postérieur ou égal à {{now}} et antérieur à {{addDays(now; 7)}}. Puis un Flow Control › Array aggregator sur name.
  3. Un filtre : length du tableau agrégé supérieur à 0. Puis Telegram Bot › Send a Text Message or Reply, avec ton Chat ID et join(map(<tableau agrégé>; name); ", ") dans Text. Pour WhatsApp, WhatsApp Business Cloud › Send a Template Message.

Make compte sept jours à partir du passage, s'arrête à 200 programmes et cite le programme sans le nom de l'élève. Référence : entraînement, élèves.

Page suivanteÉlève depuis 90 jours → une demande d'avisChaque lundi, demande un avis Google aux élèves arrivés il y a trois mois, après un premier passage sans envoi, avec n8n ou Make.