API Webhook du connecteur du lieu de travail

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 5 minutes de lecture
  • L’API Webhook Workplace Connector est une interface générique qui permet de stocker les données de différents types de matériel ou de capteurs du lieu de travail (tels que les systèmes de badges ou les capteurs de présence) dans les tables Workplace Service Delivery.

    Cette API s’exécute dans l’espace de noms sn_wsd_wc . Pour accéder à cette API, le module d’extension Workplace Connectors (com.sn_wsd_wc) doit être activé.

    Avant d’appeler cette API, vous devez configurer les enregistrements dans les tables Configuration du connecteur [sn_wsd_wc_connector_config] et Configuration du fournisseur [sn_wsd_wc_provider_config]. Pour en savoir plus sur la façon de configurer ces enregistrements, reportez-vous à la section Configure Workplace Connectors.

    En outre, vous devez configurer un point d’extension qui définit la conversion/le mappage des données à partir de la charge utile d’événement basée sur le matériel/le capteur vers la table cible ServiceNow , telle que la table Données de présence des employés [sn_wsd_wc_employee_attendance_data].

    Pour en savoir plus sur les webhooks Workplace Connector, reportez-vous à la section Workplace Connectors.

    Webhook du connecteur du lieu de travail - POST /workplace_connector_webhook/event

    Crée un enregistrement dans la table Événements de connecteur [sn_wsd_wc_connector_events], puis stocke les données d’événement basées sur le matériel/les capteurs transmises dans la charge utile du point de terminaison dans le champ Charge utile de cet enregistrement.

    Une fois que le point de terminaison a stocké la charge utile, il définit le champ État dans l’enregistrement des événements du connecteur sur nouveau, indiquant que la charge utile n’a pas été traitée.

    Une tâche planifiée localise les nouveaux enregistrements de badges dans la table des événements du connecteur, les transforme et les écrit dans la table Données de présence des employés [sn_wsd_wc_employee_attendance_data]. Le champ État est ensuite défini sur Traité.

    Le mappage des données entre les données de charge utile de l’enregistrement d’événements du connecteur et l’enregistrement des données de présence des employés est défini dans un point d’extension. Ce point d’extension est identifié dans le champ Définition du point d’extension de la table Configuration du connecteur [sn_wsd_wc_connector_config] associée. Pour ce point de terminaison, il s’agit du point d’extension BadgingDataHandler.

    Remarque :
    Les enregistrements à l’état Traité de la table Événements du connecteur sont purgés deux jours après la date de création. Les enregistrements dans l’état d’erreur sont purgés après sept jours à compter de la date de création. Les enregistrements dans le nouvel état ne sont jamais purgés.

    Format d'URL

    URL versionnée : /api/sn_wsd_wc/v1/workplace_connector_webhook/event

    URL par défaut : /api/sn_wsd_wc/workplace_connector_webhook/event

    Paramètres de demande pris en charge

    Tableau 1. Paramètres de chemin d'accès
    Nom Description
    api_version Facultatif. Version du point de terminaison auquel accéder. Exemple : v1 ou v2. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière.

    Type de données : chaîne

    Tableau 2. Paramètres de requête
    Nom Description
    ni.nolog.id Requis. Sys_id de l’enregistrement de configuration du fournisseur associé au matériel qui a généré les informations sur l’événement. Situé dans la table Configuration du fournisseur [sn_wsd_wc_provider_config].

    Type de données : chaîne

    token_name Nom du jeton de sécurité, tel qu’un nom d’utilisateur ou une autre valeur qui identifie le jeton de sécurité. Utilisé pour authentifier la demande. Situé dans la table Configuration du fournisseur [sn_wsd_wc_provider_config].

    Type de données : chaîne

    token_value Valeur associée au jeton de sécurité, comme un mot de passe. Utilisé pour authentifier la demande. Situé dans la table Configuration du fournisseur [sn_wsd_wc_provider_config].

    Type de données : chaîne

    Tableau 3. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    <charge utile> Paires nom-valeur des données d’événement basées sur le matériel/le capteur.

    Les noms doivent correspondre aux noms identifiés dans le point d’extension BadgingDataHandler.

    Par exemple :

    {
      "Time zone": "(UTC-08:00) Pacific Time (US & Canada)",
      "Event": "Access granted",
      "Door": "L_SJC005_B1.101_ELEVATOR 2 INT",
      "Side": "Reader - In",
      "Cardholder": "ninat.salem",
      "First name": "Nina T",
      "Last name": "Salem",
      "Credential": " ninat.salem's credential",
      "Employee ID (Cardholder)": "10097",
      "Event timestamp": "11/07/2022 00:56:57"
    }

    Vous pouvez transmettre plusieurs données d’événements dans un seul appel de point de terminaison. Transmettez les données de chaque événement dans un objet distinct. Les données relatives à chaque événement sont stockées dans un enregistrement distinct des données de participation des employés.

    Remarque :
    Assurez-vous que l’horodatage fourni respecte le formatage ISO 8601 pour éviter tout problème lors de l’analyse de la date.

    Type de données : objet JSON

    En-têtes

    Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir une liste des en-têtes généraux utilisés dans l’API REST, consultez En-têtes d’API REST pris en charge.

    Tableau 4. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Prend uniquement en charge application/json.
    Content-Type Format de données du corps de la demande. Prend uniquement en charge application/json.
    Tableau 5. En-têtes de réponses
    En-tête Description
    Aucun

    Codes d'état

    Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir une liste des codes d’état possibles utilisés dans l’API REST, consultez Codes de réponse HTTP de l’API REST.

    Tableau 6. Codes d'état
    Code d'état Description
    200 Réussi. La demande a été correctement traitée.
    400 Demande incorrecte. Un type de demande incorrecte ou mal formé a été détecté.
    401 Non autorisé. Les informations d'identification de l'utilisateur sont incorrectes ou n'ont pas été transmises.
    404 Introuvable. L’élément demandé est introuvable.
    500 Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur.

    Paramètres du corps de réponse

    Nom Description
    erreur Description de toute erreur survenue lors du traitement des données.

    Type de données : objet

    "error": {
      "detail": "String",
      "message": "String"
    "status": "String"
    }
    erreur.détail Informations qui fournissent des détails sur l’erreur.

    Type de données : chaîne

    message d’erreur Message d'erreur.

    Type de données : chaîne

    statut État du traitement du point de terminaison.
    Valeurs possibles :
    • échec : échec du point de terminaison. Reportez-vous à l’objet error pour plus de détails.
    • réussite : point de terminaison terminé avec succès. L’enregistrement a été ajouté.

    Type de données : chaîne

    Demande cURL

    L’exemple de code suivant montre comment appeler ce point de terminaison pour ajouter plusieurs événements de lecteur de carte à la table Événements du connecteur. Avant de traiter la demande, la demande est authentifiée.

    curl http://instance.servicenow.com/api/sn_wsd_wc/v1/workplace_connector_webhook/event?token_name=token&ni.nolog.id=8e666cb0a3053110bc6e146546fcdad1&token_value=babugosha  \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data --data "{
      \"Time zone\": \"(UTC+02:00) Jerusalem\",
      \"Event\": \"Access granted\",
      \"Door\": \"L_TLV001_A3.07_KITCHEN AREA INT\",
      \"Side\": \"Reader - In\",
      \"Cardholder\": \" ninat.alem\",
      \"First name\": \" Nina T\",
      \"Last name\": \" Salem\",
      \"Credential\": \" ninat.salem's credential\",
      \"Employee ID (Cardholder)\": 10097,
      \"Event timestamp\": \"11/07/2022 10:57:24\"
    }
    {
      \"Time zone\": \"(UTC+02:00) Jerusalem\",
      \"Event\": \"Access granted\",
      \"Door\": \"L_TLV003_A4.07_FRONT ENT\",
      \"Side\": \"Reader - In\",
      \"Cardholder\": \" joe.blue\",
      \"First name\": \" Joe\",
      \"Last name\": \" Blue\",
      \"Credential\": \" joe.blue's credential\",
      \"Employee ID (Cardholder)\": 24098,
      \"Event timestamp\": \"11/07/2022 10:59:33\"
    }"

    Réponse :

    // Successful response
    {
      "staus": "success"
    }
    
    // Error response
    {
      "error": {
        "message": "Events request is invalid. Events query parms incomplete, some fields are missing",
        "detail": "Missing fields: token_name, token_value"
      }
      "status": "failure"
    }