Base de connaissances Rise Up

Configurer et Gérer les Webhooks dans Rise Up

  • Mise à jour

Pré-requis
Accès administratif à la plateforme Rise Up.
Compréhension de base des technologies web et des API.
Accès à la configuration de l'URL du client ou du connecteur.

Les webhooks sont une standardisation qui permet le transfert de données en direct depuis Rise Up. Vous pouvez vous abonner à des sujets spécifiques pour recevoir un flux de mises à jour en direct (par exemple : chaque fois qu'un utilisateur Rise Up est créé, je reçois l'information en une seconde). Cette fonctionnalité est conçue pour être utilisée par un administrateur ayant des connaissances techniques suffisamment poussée.

Ce qu'il possible de faire :
Les plateformes externes peuvent recevoir des données en direct de Rise Up (utilisateurs, formations, inscriptions aux formations, progression).

Ce qui n'est pas faisable :
Rise Up n'est pas synchronisé avec les données externes.
Ne supprime pas les douleurs d'intégration du client ou du partenaire.

Présentation de la fonctionnalité :
Les webhooks permettent aux applications web de communiquer entre elles, en envoyant des messages automatisés pour notifier les autres qu'un nouvel événement s'est produit. Dans une API typique, l'application côté client appelle l'application côté serveur et consomme des données. Les webhooks sont souvent appelés 'API inversées' car ils inversent cette relation.
Au lieu que le serveur attende des nouvelles du client, l'application côté serveur appellera l'application côté client via une URL de point de terminaison fournie par l'application cliente. Cette URL de point de terminaison (fournie par le client et consommée par l'application côté serveur) est un webhook.

Accéder à la page de création de Webhook

Accédez à la section de gestion des webhooks dans votre tableau de bord administrateur en cliquant sur l'icône engrenage .
Webhook_create_fr.png

Configurer les paramètres du Webhook

Sur la page de création de webhook, il y a plusieurs champs. À l'exception des cases à cocher, ils sont tous obligatoires.

  1. Nom du webhook : Nom qui sera affiché sur la plateforme. Utile pour que l'administrateur identifie rapidement l'élément.
  2. URL du webhook : URL du client ou du connecteur où Rise Up enverra les données. Cette URL doit être valide et accessible à tout moment par Rise Up.
    Exemple  —> 'https://www.riseup.com/integration/Subscriptions/users'
  3. Entité : Liste des éléments sur lesquels le webhook tiendra le client informé, une seule entité peut être sélectionnée.
    Exemple  'Inscription à une formation' —> enverra des informations pour chaque inscription à une formation dans l'entreprise. Cela peut être une création, une suppression, une complétion, etc.
  4. Actions : Filtres sur la liste des actions auxquelles s'abonner, une ou plusieurs actions peuvent être sélectionnées.
  5. Activer l'authentification : Ajoute un en-tête d'autorisation contenant un encodage base64 du mot de passe utilisateur que vous mentionnez. Vous pouvez restreindre votre abonnement pour n'autoriser que les requêtes venant avec cet en-tête.
  6. Activer la signature Hmac : Ajoute un en-tête 'X-RISEUP-SIGNATURE' contenant une signature hmac de la charge utile de l'événement avec le secret de votre choix. C'est un moyen plus sécurisé (mais plus complexe) d'assurer la sécurité de vos webhooks.

Liste d'audit des webhooks :

Une fois qu'un webhook est correctement configuré, les événements commenceront à être envoyés à l'abonnement. Sur cette interface, l'administrateur peut examiner les différents événements qui sont envoyés via ses webhooks. Cela est précieux pour tout débogage requis pendant la phase de développement. Il existe 4 états différents pour un événement :

Programmé : L'événement est sur le point d'être envoyé.
Réussi : L'événement est envoyé avec succès et reçu par le client.
Échoué : Le client répond avec une erreur 5xx ou 4xx.
Annulé : La désactivation d'un webhook annulera les événements programmés.

Liste des événements 

Voici un aperçu rapide de toute la liste des événements. Pour avoir une liste plus complète, veuillez vous référer à la documentation API. Pour chacune de ces entités, nous envoyons un événement lorsqu'un élément est soit créé, mis à jour ou supprimé. En fonction de l'entité, des informations spécifiques peuvent être envoyées via une charge utile ou un type d'événement spécifique. Voici une liste avec les entités et leurs spécificités :

Webhooks_eventlist_fr.png

Gestion des délais et des erreurs des webhooks

L'exécution des webhooks peut échouer en raison de délais d'attente ou d'erreurs.
Pour chaque événement dont l'appel de webhook échoue, les appels sont réessayés jusqu'à 7 fois selon les plannings suivants :
Webhooks_timing_fr.png

Pour marquer une notification de webhook réussie, nous attendons que le code de statut HTTP soit 2XX de l'URL du webhook.
Si nous ne recevons pas de code de réponse 2XX, nous réessayons d'appeler.

Surveiller l'activité du Webhook

Accédez à la section d'audit des webhooks pour examiner les événements envoyés via votre webhook. Cela est crucial pour le débogage et pour assurer un fonctionnement fluide.

Webhooks_auditpist_fr.png

Webhooks_listeaudit_fr.png

Détails des évènements

Les détails des événements incluent des informations spécifiques sur chaque type d'événement, comme les sessions de classe, les inscriptions aux sessions de classe, les formations, les demandes de formation, les inscriptions aux formations, les groupes, les parcours d'apprentissage, etc. Ces détails sont envoyés sous forme de charge utile JSON avec des informations telles que la date de création, la date de mise à jour, l'état, l'identifiant, le titre, la langue, la durée éducative, etc.

Pour plus d'informations, veuillez consulter la documentation API de Rise Up.

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Event creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1, // Classroom session ID
    "title": "session title",
    "start_date": "2024-10-11T00:00:00.000000Z",
    "end_date": "2024-10-12T16:00:00.000000Z",
    "timezone": "Europe/Paris",
    "state": "pending",
    "meeting_url": null,
    "location": "Paris",
    "language": "English",
    "room": null,
    "edu_duration": 6,
    "seats": 30,
    "reference": null
  },
  "sent_at": "2024-10-10T16:14:47.149305Z",
  "event_type": "classroom_session_created",
  "company_id": 6499,
  "id": 237848
}
    

Inscription Session en classe

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "state": "pending",
    "edu_duration": 17,
    "reference": null,
    "attended": null,
    "user": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    },
    "classroom_session": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "title": "session title",
      "start_date": "2024-10-11T00:00:00.000000Z",
      "end_date": "2024-10-12T16:00:00.000000Z",
      "timezone": "Europe/Paris",
      "state": "pending",
      "meeting_url": null,
      "location": "Paris",
      "language": "English",
      "room": null,
      "edu_duration": 6,
      "seats": 30,
      "reference": null
    }
  },
  "sent_at": "2024-10-10T16:17:15.493462Z",
  "event_type": "classroom_session_registration_created",
  "company_id": 6499,
  "id": 237853
}
    

Formation

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Course creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "title": "Training test",
    "language": "English",
    "skills": [
      "skill_one",
      "skill_two"
    ],
    "reference": null,
    "categories": [
      "category_one"
    ],
    "keywords": [],
    "edu_duration": 10
  },
  "sent_at": "2024-10-10T16:18:45.946478Z",
  "event_type": "course_created",
  "company_id": 6499,
  "id": 237856
}
    

Demande de Formation

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Request creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "description": "test description of the training request",
    "reason": "test Reason of the training request",
    "duration": 10,
    "location": "test Location of the training request",
    "theme": null,
    "objectives": "test_objectives",
    "organism_request": null,
    "state": "pending",
    "concerned_users": [],
    "requester": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    },
    "course": null
  },
  "sent_at": "2024-10-10T16:19:20.097978Z",
  "event_type": "course_request_created",
  "company_id": 6499,
  "id": 237858
}
    

Inscription Formation

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "state": "validated",
    "progress": 50,
    "reference": null,
    "score": 10,
    "total_time": 13,
    "user_validator": null,
    "course": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "title": "Training test",
      "language": "English",
      "skills": [
        "skill_one",
        "skill_two"
      ],
      "reference": null,
      "categories": [
        "category_one"
      ],
      "keywords": [],
      "edu_duration": 10
    },
    "user": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    }
  },
  "sent_at": "2024-10-10T16:18:59.116893Z",
  "event_type": "course_registration_created",
  "company_id": 6499,
  "id": 237857
}
    

Groupe

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Group creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "name": "Group test",
    "id_partner": null,
    "reference": null
  },
  "sent_at": "2024-10-10T16:19:34.536209Z",
  "event_type": "group_created",
  "company_id": 6499,
  "id": 237860
}
    

Parcours de Formation

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Path creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "title": "test training path title",
    "id_partner": null
  },
  "sent_at": "2024-10-10T16:22:38.324490Z",
  "event_type": "learning_path_created",
  "company_id": 6499,
  "id": 237867
}
    

Inscription Parcours de Formation

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "state": "cancelled",
    "progress": 75,
    "score": 1250,
    "total_time": 15,
    "learning_path": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "title": "test training path title",
      "id_partner": null
    },
    "user": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    }
  },
  "sent_at": "2024-10-10T16:25:05.054835Z",
  "event_type": "learning_path_registration_created",
  "company_id": 6499,
  "id": 237878
}
    

Etape Progression

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // When Learner is registered to course
    "updated_date": "2024-10-10T13:00:00.000000Z", // When Last step was performed
    "deleted_date": null,
    "id": 1, // userstepstate Id (See API definition)
    "course_subscription_id": 1, // Course subscription Id (see API definition)
    "progression": 0, // From 0 to 100 is the % of completion
    "timespent": 0 // Number of seconds passed on training
  },
  "sent_at": "2024-10-10T13:16:35.118826Z",
  "event_type": "step_progress",
  "company_id": 6499,
  "id": 236761 // Unique ID of webhook, used for idempotency
}
    

Utilisateur

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // User creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "firstname": "test_firstname",
    "lastname": "test_lastname",
    "email": "test_email",
    "username": "test_username",
    "role": "admin",
    "id_partner": null,
    "language": "english",
    "rhid": null
  },
  "sent_at": "2024-10-10T16:23:20.428155Z",
  "event_type": "user_created",
  "company_id": 6499,
  "id": 237870
}
    

Inscription Objectif

voir
{
  "webhook_version": "1.0.0",
  "content": {
    "created_date": "2024-10-09T00:00:00.000000Z", // Registration creation date
    "updated_date": "2024-10-10T16:00:00.000000Z", // Last update date
    "deleted_date": null,
    "id": 1,
    "state": "validated",
    "progress": 50,
    "end_date": "2024-10-11T00:00:00.000000Z",
    "experience_points": 1000,
    "objective": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "title": "Test objective",
      "start_date": "2024-10-11T00:00:00.000000Z",
      "end_date": "2024-10-12T16:00:00.000000Z",
      "experience_points": 1500
    },
    "user": {
      "created_date": "2024-10-09T00:00:00.000000Z",
      "updated_date": "2024-10-10T16:00:00.000000Z",
      "deleted_date": null,
      "id": 1,
      "firstname": "test_firstname",
      "lastname": "test_lastname",
      "email": "test_email",
      "username": "test_username",
      "role": "admin",
      "id_partner": null,
      "language": "english",
      "rhid": null
    }
  },
  "sent_at": "2024-10-10T16:23:05.907077Z",
  "event_type": "objective_registration_created",
  "company_id": 6499,
  "id": 237868
}
    
  • Problème : Le webhook ne se déclenche pas comme prévu.
    Solution : Vérifiez l'accessibilité de l'URL du webhook et assurez-vous que les actions et entités sélectionnées correspondent aux événements que vous souhaitez capturer. Consultez les journaux du webhook pour détecter d'éventuelles erreurs.
    Problème : Erreurs lors de la réception des données côté client.
    Solution : Vérifiez que le point de terminaison du client est configuré pour accepter les requêtes POST et peut gérer les formats de données entrants. Vérifiez les éventuelles incompatibilités d'authentification ou de signature.
  • Peut-on configurer plusieurs webhooks pour différentes entités ?
    - Oui, vous pouvez configurer plusieurs webhooks, chacun pour différentes entités et actions selon vos besoins.
    Puis-je configurer plus de 5 webhooks ?
    - Oui, vous pouvez, mais uniquement après avoir contacté le support client. Après avoir atteint le niveau 3, nous pouvons augmenter le nombre de webhooks.
    La livraison des webhooks est-elle rapide ?
    - La livraison des webhooks est relative à l'environnement. Tous nos webhooks en production devraient être envoyés en moins d'une minute. En préproduction, l'objectif est de 10 minutes.
    Les webhooks sont-ils sécurisés ?
    - Les webhooks peuvent être sécurisés à l'aide d'en-têtes d'authentification et de signatures HMAC pour garantir que les données ne sont accessibles qu'aux destinataires autorisés.
  • [Documentation technique des webhooks Documentation API pour la liste détaillée des entités et des actions]

    Pour plus d'assistance, soumettez une demande :
    [Demande de support Rise Up]

Cet article vous a-t-il été utile ?

Utilisateurs qui ont trouvé cela utile : 0 sur 0

Vous avez d’autres questions ? Envoyer une demande