Integration mit Push-Connectors

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 3 Minuten Lesedauer
  • Integrieren Sie sie in einen Push-Connector, um eine Verbindung zu einer externen Ereignisquelle herzustellen. Push-Connectors verarbeiten die gesammelten Ereignisnachrichten und wandeln sie in das erforderliche Ereignisformat um.

    Vorbereitungen

    Stellen Sie sicher, dass EreignismanagementPlugin „Connectors“ (sn_em_Connector) ist installiert.

    Erforderliche Rolle: evt_mgmt_admin

    Hinweis:
    Wenn Sie ein Upgrade durchführen Now PlatformInstanz von ParisOder früher können Sie veraltete Listener-Transformationsskripts verwenden. Siehe Verwenden Sie veraltete Listener-TransformationsskriptsFür weitere Informationen.

    Warum und wann dieser Vorgang ausgeführt wird

    Die Push-Connectors akzeptieren Ereignisnachrichten, die von externen Ereignisquellen generiert werden.

    Konfigurieren Sie einen Connector, um eine externe Ereignisquelle zu hören. Senden Sie die Ereignisnachrichten mithilfe eines anwenderdefinierten Push-Connectors entweder über MID-ServerOder die Instanz.

    Hinweis:
    Sie können diese generische JSON-Ziel-URL verwenden, um Ereignisse zu erfassen: https:/<<INSTANCE>>/api/sn_em_Connector/em/inbound_event?Source=genericJson . Diese URL kann unverändert verwendet werden und erfordert die Konfiguration einer Ereignisregel.

    Prozedur

    1. Navigieren zu Alle > Ereignismanagement > Integrationen > Push-Connectorsan.
    2. Klicken Sie Auf Neu Oder klicken Sie auf den Push-Connector, den Sie ändern möchten, z. B. AWSOder Azure.
    3. Füllen Sie im Formular die Felder aus.
      Feld Beschreibung
      Name U Nique-Name für diesen Push-Connector zur einfachen Identifizierung.
      Beschreibung Geben Sie eine Beschreibung für die Verwendung des Push-Connectors ein.
      Headername Geben Sie den Namen des Headers ein, für den Sie den Wert abrufen möchten, z. B. „Set-Header“.
      Header-Wert Der Wert des Header-Namens ein, für den Sie den Wert abrufen möchten, z . B. „Set-Header“.
      Typ Wählen Sie diese Option aus, um auch Ereignisse zu senden Instanz Oder MID . Verwenden Sie in jedem Fall die URL des ausgewählten Typs. Siehe Beschreibung von URL-Parameterwert Feld.
      Aktiv Aktivieren Sie diese Option, um das Abrufen von Ereignissen aus dieser externen Ereignisquelle zu ermöglichen.
      Bestellung Reihenfolge, in der eine Ereignisregel ausgewertet wird, wenn mehrere Regeln für denselben Ereignistyp definiert sind. Ereignisregeln werden in aufsteigender Reihenfolge ausgewertet.
      URL-Parameterwert
      • Senden Sie Ereignisse an die Instanz.

        Verwenden Sie die URL in diesem Format für alle Connectors: https://<<INSTANCE>>/api/sn_em_Connector/em/inbound_event?Source={URL_Parameter_value}

      • Senden Sie Ereignisse über MID-Server.

        Verwenden Sie die URL im folgenden Format: http://{MID_Server_IP}:{MID_Web_Server_Port}/api/MID/em/inbound_event?Transform={Transform_script}

        Hinweis:
        Ereignisse werden an gesendet MID-ServerErfordert die vorherige Konfiguration der MID-Webservice-Ereignis-Listener-Erweiterung.
    4. Im Abschnitt Skript:
      • Wenn der Wert für ausgewählt ist Typ Feld ist MID , Transformationsskript Feld wird angezeigt. Geben Sie in diesem Feld den Namen der MID-Skripteinbindung an, die Ereignisnachrichten akzeptiert, die die erforderliche externe Ereignisquelle generiert und die das Skript in das erforderliche Ereignisformat analysiert. Verwenden Sie diese Benennungskonvention für das Skript: TransformEvents_<your source>
      • Wenn der Wert für ausgewählt ist Typ Feld ist Instanz , Skript Editor wird angezeigt. In Skript Editor: Geben Sie das anwenderdefinierte Skript ein, das Ereignisnachrichten akzeptiert, die die erforderliche externe Ereignisquelle generiert und das Skript in das erforderliche Ereignisformat analysiert.
      Dieses Beispiel Zeigt die Felder an, die transformiert wurden und einem Ereignisformular hinzugefügt werden.
      (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);