밀어넣기 커넥터와 통합

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

    시작하기 전에

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

    필요한 역할: evt_mgmt_admin

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

    이 태스크 정보

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

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

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

    프로시저

    1. 다음으로 이동 모두 > 이벤트 관리 > 통합 > 밀어넣기 커넥터.
    2. 새로 만들기를 클릭하거나 수정하려는 밀어넣기 커넥터(예AWS: Azure 또는 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_script}

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