Integrieren Sie mit Push-Connectors

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 3 Minuten Lesedauer
  • Integrieren Sie mit einem Push-Connector, um eine Verbindung zu einer externen Event-Quelle herzustellen. Push-Connectors verarbeiten die gesammelten Event-Nachrichten und transformieren sie in das erforderliche Event-Format.

    Vorbereitungen

    Stellen Sie sicher, dass das Plugin „Ereignismanagement Connectors“ (sn_em_connector) installiert ist.

    Erforderliche Rolle: evt_mgmt_admin

    Hinweis:
    Beim Upgrade einer Now Platform-Instanz von Paris oder früher können Sie veraltete Listener-Transformationsskripts verwenden. Weitere Informationen finden Sie unter Veraltete Listener-Transformationsskripts verwenden.

    Warum und wann dieser Vorgang ausgeführt wird

    Die Push-Connectors akzeptieren Event-Nachrichten, die von externen Event-Quellen generiert werden.

    Konfigurieren Sie einen Connector für die Überwachung einer externen Event-Quelle. Verwenden Sie einen benutzerdefinierten Push-Connector, um die Event-Nachrichten entweder über den MID-Server oder die Instanz zu senden.

    Hinweis:
    Sie können die folgende generische JSON-Ziel-URL zum Erfassen von Events verwenden: https:/<<INSTANCE>>/api/sn_em_connector/em/inbound_event?source=genericJson. Diese URL kann unverändert verwendet werden und erfordert die Konfiguration einer Event-Regel.

    Prozedur

    1. Navigieren zu Alle > Ereignismanagement > Integrationen > Push-Connectors.
    2. Klicken Sie auf Neu, oder klicken Sie auf den Push-Connector, den Sie ändern möchten, z. B. AWS oder Azure.
    3. Füllen Sie die Felder des Formulars aus.
      Feld Beschreibung
      Name Eindeutiger Name für diesen Push-Connector zur einfachen Identifizierung
      Beschreibung Geben Sie eine Beschreibung für die Verwendung des Push-Connectors ein.
      Header-Name Geben Sie den Header-Namen an, für den der Wert festgelegt werden soll, z. B. Set-Header.
      Header-Wert Der Header-Wert, für den der Wert festgelegt werden soll, z. B. Set-Header.
      Typ Wählen Sie diese Option aus, um Events entweder an die Instanz oder über den MIDzu senden. Verwenden Sie jeweils die URL des ausgewählten Typs. Weitere Informationen finden Sie in der Beschreibung des Felds URL-Parameterwert.
      Aktiv Aktivieren, um das Abrufen von Events aus dieser externen Event-Quelle zu aktivieren.
      Reihenfolge Reihenfolge, in der eine Event-Regel ausgewertet wird, wenn mehrere Regeln für denselben Event-Typ definiert sind. Event-Regeln werden in aufsteigender Reihenfolge ausgewertet.
      URL-Parameterwert
      • Senden Sie Events an die Instanz.

        Verwenden Sie die URL im folgenden Format für alle Connectors:https://<<INSTANCE>>/api/sn_em_connector/em/inbound_event?source={URL_parameter_value}.

      • Senden Sie Events über den MID-Server.

        Verwenden Sie die URL in diesem Format:http://{MID_Server_IP}:{MID_Web_Server_Port}/api/mid/em/inbound_event?Transform={Transform_script}

        Hinweis:
        Das Senden von Events an den MID-Server erfordert die vorherige Konfiguration der Erweiterung für MID-WebService-Event-Listener.
    4. Im Abschnitt Skript:
      • Wenn der für das Feld Typ ausgewählte Wert MID ist, wird das Feld Umwandlungsskript angezeigt. In diesem Feld geben Sie den Namen der MID-Skripteinbindung an, die Event-Nachrichten akzeptiert, die von der erforderlichen externen Event-Quelle generiert werden und die das Skript im erforderlichen Event-Format analysiert, oder suchen Sie nach diesem Namen. Verwenden Sie diese Namenskonvention für das Skript: TransformEvents_<your source>
      • Wenn der für das Feld Typ ausgewählte Wert Instanz ist, wird der Skript-Editor angezeigt. Im Skript-Editor geben Sie das benutzerdefinierte Skript an, das Event-Nachrichten akzeptiert, die von der erforderlichen externen Event-Quelle generiert werden und die das Skript im erforderlichen Event-Format analysiert.
      Dieses Beispiel zeigt, wie die transformierten Felder einem Event-Formular 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);