밀어넣기 커넥터와 통합

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 5분
  • 외부 이벤트 소스와 연결하도록 밀어넣기 커넥터와 통합합니다. 밀어넣기 커넥터는 수집된 이벤트 메시지를 처리하고 필요한 이벤트 형식으로 변환합니다.

    시작하기 전에

    이벤트 관리 커넥터(sn_em_connector) 플러그인이 설치되어 있는지 확인합니다.

    필요한 역할: evt_mgmt_admin

    주:
    ServiceNow AI Platform 인스턴스를 Paris 이전 버전에서 업그레이드하는 경우 레거시 수신기 변환 스크립트를 사용할 수 있습니다. 자세한 내용은 레거시 수신기 변환 스크립트 사용 문서를 참조하십시오.

    이 태스크 정보

    밀어넣기 커넥터는 외부 이벤트 소스에서 생성되는 이벤트 메시지를 수신합니다.

    외부 이벤트 소스를 수신하도록 커넥터를 구성합니다. 사용자 지정 밀어넣기 커넥터를 사용하여 MID 서버 또는 인스턴스를 통해 이벤트 메시지를 전송합니다.

    주:
    이 일반 JSON 대상 URL을 사용하여 이벤트를 수집할 수 있습니다.https:/<<INSTANCE>>/api/sn_em_connector/em/inbound_event?source=genericJson. 이 URL은 있는 그대로 사용할 수 있으며 이벤트 규칙을 구성해야 합니다.

    프로시저

    1. 다음으로 이동 모두 > 이벤트 관리 > 통합 > 밀어넣기 커넥터.
    2. 새로 만들기를 클릭하거나 수정하려는 밀어넣기 커넥터(예: AWS 또는 Azure)를 클릭합니다.
    3. 양식의 필드에 내용을 입력합니다.
      필드 설명
      이름 쉽게 식별하기 위한 이 밀어넣기 커넥터의 고유한 이름입니다.
      설명 밀어넣기 커넥터 사용에 대한 설명을 입력합니다.
      헤더 이름 Set-Header처럼 값을 원하는 헤더의 이름을 지정합니다.
      헤더 값 Set-Header처럼 값을 원하는 헤더 이름의 값입니다.
      유형 인스턴스 또는 MID로 이벤트를 보내려면 선택합니다. 각각의 경우 선택한 유형의 URL을 사용합니다. URL 매개변수 값 필드에 대한 설명을 참조하십시오.
      활성 이 외부 이벤트 소스에서 이벤트 끌어오기를 활성화하려면 선택합니다.
      순서 같은 형식의 이벤트에 대해 여러 규칙이 정의 된 경우 이벤트 규칙을 평가하는 순서입니다. 이벤트 규칙은 오름차순으로 평가됩니다.
      URL 매개변수 값
      • 인스턴스에 이벤트를 보냅니다.

        모든 커넥터에 다음 형식의 URL을 사용하십시오. https://<<INSTANCE>>/api/sn_em_connector/em/inbound_event?source={URL_parameter_value}

      • MID 서버를 통해 이벤트를 보냅니다.

        다음 형식의 URL을 사용하십시오. http://{MID_Server_IP}:{MID_Web_Server_Port}/api/mid/em/inbound_event?Transform={Transform_script}

        주:
        MID 서버에 이벤트를 보내려면 MID WebService 이벤트 수신기 확장의 이전 구성이 필요합니다.
    4. 스크립트 섹션에서 다음을 수행합니다.
      • 유형 필드에 선택한 값이 MID인 경우 변환 스크립트 필드가 나타납니다. 필수 외부 이벤트 소스가 생성하고 스크립트가 필수 이벤트 형식으로 구문 분석하는 이벤트 메시지를 승인하는 MID 스크립트 포함 이름을 이 필드에 지정하거나 검색합니다. 스크립트에 다음 명명 규칙을 사용하십시오. TransformEvents_<your source>
      • 유형 필드에 선택한 값이 인스턴스인 경우 스크립트 편집기가 나타납니다. 필수 외부 이벤트 소스가 생성하고, 스크립트가 필수 이벤트 형식으로 구문 분석하는 이벤트 메시지를 승인하는 사용자 지정 스크립트를 스크립트 편집기에 입력합니다.
      이 예시는 변환된 필드를 이벤트 양식에 추가하는 것을 보여줍니다.
      (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);