Intégration aux connecteurs push

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 3 minutes de lecture
  • Intégrez un connecteur push pour vous connecter à une source d’événement externe. Les connecteurs push traitent les messages d'événement collectés et les convertissent au format d'événement requis.

    Avant de commencer

    Assurez-vous que le module d'extension Connecteurs Gestion des événements (sn_em_connector) est installé.

    Rôle requis : evt_mgmt_admin

    Remarque :
    si vous mettez à niveau une instance Now Platform à partir de Paris ou d'une version antérieure, vous pouvez utiliser les scripts de conversion d'écouteur hérités. Consultez Utiliser les scripts de conversion d'écouteur hérités pour plus d'informations.

    Pourquoi et quand exécuter cette tâche

    Les connecteurs push acceptent les messages d'événement générés par des sources d'événements externes.

    Configurez un connecteur pour écouter une source d'événement externe. À l'aide d'un connecteur push personnalisé, envoyez les messages d'événement via Serveur MID ou l'instance.

    Remarque :
    vous pouvez utiliser cette URL cible JSON générique pour collecter des événements : https:/<<INSTANCE>>/api/sn_em_connector/em/inbound_event?source=genericJson. Vous pouvez utiliser cette URL telle quelle, mais devez configurer une règle d'événement.

    Procédure

    1. Accédez à la Tous > Gestion des événements > Intégrations > Connecteurs par push.
    2. Cliquez sur Nouveau ou cliquez sur le connecteur push que vous souhaitez modifier, par exemple AWS ou Azure.
    3. Renseignez les champs du formulaire.
      Champ Description
      Nom Nom unique pour ce connecteur push pour en faciliter l'identification.
      Description Saisissez une description pour l'utilisation du connecteur push.
      Nom de l'en-tête Spécifiez le nom de l'en-tête dont vous souhaitez obtenir la valeur, par exemple Set-Header.
      Valeur d'en-tête Valeur du nom d'en-tête dont vous souhaitez obtenir la valeur, par exemple Set-Header.
      Type Sélectionnez cette option pour envoyer des événements : Instance ou MID. Dans chaque cas, utilisez l'URL du type sélectionné. Consultez la description du champ Valeur du paramètre d'URL.
      Active Spécifiez ce champ pour activer la transmission d'événements par pull à partir de cette source d'événement externe.
      Ordre Ordre dans lequel une règle d'événement est évaluée lorsque plusieurs règles sont définies pour le même type d'événement. Les règles d'événements sont évaluées par ordre croissant.
      Valeur du paramètre d'URL
      • Envoi d'événements à l'instance.

        Utilisez l'URL au format suivant pour tous les connecteurs : https://<<INSTANCE>>/api/sn_em_connector/em/inbound_event?source={valeur_paramètre_URL}

      • Envoi d'événements via le Serveur MID.

        Utilisez l'URL au format suivant :http://{IP_MID_Server}:{port_MID_Web_Server}/api/mid/em/inbound_event?Transform={script_conversion}

        Remarque :
        l'envoi d'événements au Serveur MID nécessite la configuration préalable de l'extension Écouteur d'événement MID WebService.
    4. Dans la section Script :
      • Si la valeur sélectionnée pour le champ Type est MID, le champ Script de conversion s'affiche. Dans ce champ, spécifiez ou recherchez le nom du script Include MID qui accepte les messages d'événement générés par la source d'événement externe requise et que le script analyse au format d'événement requis. Utilisez la convention d'affectation de noms suivante pour le script : TransformEvents_<votre source>
      • Si la valeur sélectionnée pour le champ Type est Instance, l'éditeur de script s'affiche. Dans l'éditeur de script, saisissez le script personnalisé qui accepte les messages d'événement générés par la source d'événement externe requise et que le script analyse au format d'événement requis.
      Cet exemple montre les champs qui ont été convertis et qui sont ajoutés à un formulaire d'événement.
      (function process(/*RESTAPIRequest*/ request, body) {
      	/*Function that receives a JSON object, adding all its fields to the Additional information object. The field name is a concatenation of the field key and the parent field key if it exists.*/
      	function updateAdditionalInfo(event, field,jsonObject,additionalInfo) {
              for (var key in jsonObject) {
                  var newKey = key;
                  if (field != "") {
                      newKey = field + '_' + key;
                  }
      			// You can do some transformation here and set fields on the event
      			//if(key == "MySource")
      			//   event.source = jsonObject[key];
                  additionalInfo[newKey] = jsonObject[key];
              }
          }
          
          try
      	{		
              gs.info("TransformEvents_generic received body:" + body);
      		var jsonObject = JSON.parse(body);
              var event = new GlideRecord('em_event');
      		event.source = "GenericJson"; //TODO: Need to define
              event.event_class = "GenericJsonClass"; //TODO: Need to define
              event.severity = "5";
      		
              var additionalInfo = {};
              updateAdditionalInfo(event, "",jsonObject,additionalInfo);
      		/*Iterates over Additional information JSON object and adds all nested objects' fields as fields of the Additional information object*/
              var notDone = true;
              while (notDone) {
                  notDone = false;
                  for (var key in additionalInfo) {
                      if (Object.prototype.toString.call(additionalInfo[key]) == '[object Object]') {
                          notDone = true;
                          updateAdditionalInfo(event, key,additionalInfo[key],additionalInfo);
      					additionalInfo[key] = "";
                      }
                  }
              }
      		gs.info("TransformEvents_generic generated additional information:" + JSON.stringify(additionalInfo));
              event.additional_info = JSON.stringify(additionalInfo);
              event.insert();
      	}
      	catch(er){
      		gs.error(er);
      		status=500;
      		return er;
      	}
      	return "success";
      })(request, body);