NotifyUtil - 전역

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기15분
  • NotifyUtil 스크립트 포함은 서버 측 스크립트를 사용하여 알림 통화 및 SMS 메시지와 상호작용할 때 사용할 유틸리티 메서드를 제공합니다.

    이 스크립트 포함을 사용하려면 알림(com.snc.notify) 플러그인을 활성화해야 합니다.

    NotifyUtil 스크립트 포함을 사용하여 다음을 수행할 수 있습니다.

    • 지정된 소스 기록에서 모든 알림 전화 번호와 관련 알림 정보를 가져옵니다.
    • 고유한 알림 전화 번호 목록을 가져옵니다.
    • 지정된 소스 기록에 대한 활성 컨퍼런스 회의가 있는지 확인합니다.
    • 지정된 알림 사용자와 연결된 SMS 지원 번호를 가져옵니다.
    • 지정된 Notify 전화 번호를 확인합니다.

    알림 유틸리티 - 알림 유틸리티 ()

    NotifyUtil 클래스 개체를 인스턴스화합니다.

    표 1. 매개변수
    이름 유형 설명
    안 함

    이 예제에서는 NotifyUtil 개체를 인스턴스화합니다.

    var notifyUtil = new NotifyUtil(); 
    notifyUtil.getTelephonyProviers();

    알림 유틸리티 - getListOfNotifyNumbersAndProviders(String sourceTable, String sourceSysId, String notifyGroupSelectorSysId, Boolean filterSMSCapableNums)

    인시던트와 같은 지정된 소스 기록에서 모든 알림 전화 번호와 관련 알림 정보를 반환합니다.

    이 정보를 사용하여 특정 소스 기록에서 통화를 시작하거나 SMS 메시지를 보낼 수 있습니다. 반환되는 정보는 알림 제공자 선택기 프레임워크의 구성을 기반으로 합니다. 자세한 내용은 알림을 참조하십시오.

    표 2. 매개변수
    이름 유형 설명
    filterSMSCapableNums 부울 옵션입니다. SMS를 지원하는 번호만 반환해야 하는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: SMS를 사용할 수 있는 전화번호와 정보만 반환합니다.
    • false: 모든 알림 전화 번호와 정보를 반환합니다.

    기본값: false

    notifyGroupSelectorSysId 문자열 옵션입니다. 알림 번호와 정보를 반환할 알림 그룹의 Sys_id입니다.

    기본값: 모든 그룹

    sourceSysId 문자열 알림 번호와 정보를 반환할 소스 기록의 Sys_id입니다. 예를 들어 인시던트 [incident] 테이블에 있는 기록의 sys_id일 수 있습니다.
    sourceTable 문자열 원하는 알림 번호와 정보가 들어 있는 소스 기록이 들어 있는 테이블의 이름입니다.
    표 3. 반환
    유형 설명
    conf제공자 사용 가능한 회의 제공자 목록입니다.

    데이터 유형: 배열

    번호 각각 단일 알림 번호를 설명하는 객체의 목록입니다.

    데이터 유형: 배열

    "numbers": [{
      "defaultFlag": Boolean,
      "name": "String",
      "number": "String",
      "shortCode": Boolean,
      "sysId": "String
    }]
    numbers.defaultFlag 연결된 알림 번호가 기본 번호인지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 기본 번호
    • false: 기본 숫자가 아님

    데이터 유형: 부울

    numbers.name 번호의 이름 또는 레이블입니다.

    데이터 유형: 문자열

    숫자.번호 알림 번호입니다.

    데이터 유형: 문자열

    numbers.shortCode 연결된 알림 번호가 약식 코드인지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 약식 코드
    • false: 짧은 코드가 아님

    데이터 유형: 부울

    numbers.sysId 알림 번호의 Sys_id입니다.

    데이터 유형: 문자열

    이 예시에서는 지정된 소스 기록에서 알림 전화 번호와 관련 알림 정보를 얻는 방법을 보여줍니다.

    function updateConferenceBridges(sourceTable, sourceId) {
    
      var notifyUtil = new global.NotifyUtil();
      var numbersAndProviders = notifyUtil.getListOfNotifyNumbersAndProviders(sourceTable, sourceId);
      var confBridges = [];
      if (numbersAndProviders.confProviders) {
        numbersAndProviders.confProviders.forEach(function(provider){
        confBridges.push(provider);
        });
      }
      if (numbersAndProviders.numbers) {
        numbersAndProviders.numbers.forEach(function(number){
          confBridges.push(number.name);
        });
      }
    } 

    알림 유틸리티 - getSMSNumberForUser(String userGrOrId)

    지정된 알림 사용자와 연결된 SMS 지원 번호를 반환합니다.

    표 4. 매개변수
    이름 유형 설명
    userGROrId 문자열 또는 GlideRecord - 전역 사용자 기록의 Sys_id

    테이블: 사용자 [sys_user] 테이블 또는 SMS 지원 전화 번호를 반환할 사용자의 sys_user GlideRecord입니다.

    표 5. 반환
    유형 설명
    문자열 사용자 SMS 지원 전화 번호입니다. 지정된 사용자를 찾을 수 없는 경우 null을 반환합니다.

    이 예시에서는 연결된 GlideRecord를 사용하여 SMS 지원 전화번호를 얻는 방법을 보여줍니다.

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var nUtil = new NotifyUtil();
      var toNumber = nUtil.getSMSNumberForUser(sourceRecord.assigned_to.getRefRecord());
      var message = 'Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to you.';
      if (fromNumber && nUtil.validateOutboundNotifyPhoneNumber(fromNumber) && toNumber && nUtil.validatePhoneNumber(toNumber)) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToNumber(fromNumber, toNumber, message, sourceRecord);
      }
    }
    
    function getFromNumber() {
      var prop = gs.getProperty('custom_property_name', '');
      if (!prop){
        return getFallbackFromNumber();
      }
      return prop;
    } 
    
    function getFallbackFromNumber() {
      var notifyNumGr = new GlideRecord("notify_number");
      notifyNumGr.addActiveQuery();
      notifyNumGr.addQuery('has_sms_out', 'yes');
      notifyNumGr.query();
      if (notifyNumGr.next()) {
        return notifyNumGr.number + '';
      }
      return '';
    } 

    알림 유틸리티 - getUniquePhoneNumbersForUsersAndGroups(배열 번호, 배열 사용자, 배열 그룹, 문자열 유형, 부울 getData)

    고유한 알림 전화 번호 목록을 반환합니다.

    통화에서 매개변수를 전달하지 않으면 알림 전화 번호 [notify_number] 테이블 내의 모든 알림 번호가 중복되었는지 확인되고 사용 가능한 각 전화 번호는 반환된 목록에 한 번만 나타납니다. 검사할 사용자 또는 그룹 목록을 지정하거나 번호 또는 번호 유형(SMS 또는 음성) 집합을 지정하여 반환 결과를 구체화할 수 있습니다. 각 번호와 연결된 메타데이터가 고유 번호와 함께 반환되도록 요청할 수도 있습니다. 매개 변수를 사용하지 않으려면 null 을 자리 표시자로 전달하기만 하면 됩니다. 예: return nUtil.getUniquePhoneNumbersForUsersAndGroups(null, userIds, null, 'sms', false);.

    표 6. 매개변수
    이름 유형 설명
    getData 부울 옵션입니다. 고유 전화 번호 목록과 함께 메타데이터를 반환할지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 메타데이터를 반환합니다.
    • false: 메타데이터를 반환하지 않습니다.

    기본값: false

    그룹 배열 옵션입니다. 확인할 sys_id 그룹 목록입니다.

    기본값: 모든 그룹을 확인합니다.

    테이블: 그룹 [sys_user_group]

    번호 배열 옵션입니다. 확인할 특정 알림 전화 번호 목록입니다.

    기본값: 모든 전화 번호를 확인합니다.

    유형 문자열 옵션입니다. 확인할 전화번호의 유형입니다.
    유효한 값(대/소문자 구분):
    • voice
    • sms

    기본값: 모든 전화 번호 유형 확인

    사용자 배열 옵션입니다. 확인할 특정 사용자의 sys_ids 목록입니다.

    기본값: 모든 사용자 확인

    테이블: 사용자 [sys_user]

    표 7. 반환
    이름 설명
    번호 고유한 알림 전화 번호입니다.

    데이터 유형: 배열

    결과 true로 설정된 경우에만 getData 반환됩니다. 각 고유 번호와 연결된 메타데이터입니다.
    데이터 유형: 객체
    "result": {
      "number": "String",
      "sysId": "String",
      "type": "String",
      "valid": Boolean
    }
    결과.숫자 고유 알림 전화 번호입니다.

    데이터 유형: 문자열

    결과.sysId 알림 전화 번호가 포함된 기록의 Sys_id입니다.

    데이터 유형: 문자열

    표: 알림 전화 번호 [notify_number]

    결과.유형 사용자에 대해 항상 "u"를 포함합니다.

    데이터 유형: 문자열

    result.valid 알림 전화 번호가 유효한 E.164 형식인지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 유효한 E.164 형식입니다.
    • false: E.164 형식이 아닙니다.

    데이터 유형: 부울

    이 예시에서는 SMS 기능이 있는 고유한 알림 전화 번호의 특정 집합을 요청하는 방법을 보여줍니다.

    var fromNumber = getFromNumber();
    var toNumbers = getRecipientNumbers();
    var message = 'This is an example SMS';
    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var notifySMS = new NotifySMS();
      notifySMS.sendToNumber(fromNumber, toNumbers, message, sourceRecord);
    }
    
    function getRecipientNumbers() {
      var userGr = new GlideRecord('sys_user');
      userGr.addActiveQuery();
      userGr.addQuery('first_name', 'STARTSWITH', 'A');
      userGr.setLimit(5);
      userGr.query(); 
      var userIds = [];
      while (userGr.next()) {
        userIds.push(userGr.getUniqueValue());
      }
      if (userIds.length > 0) {
        var nUtil = new NotifyUtil();
        return nUtil.getUniquePhoneNumbersForUsersAndGroups(null, userIds, null, 'sms', false);
      } 
    }
    
    function getFromNumber() {
      var prop = gs.getProperty('custom_property_name', '');
      if (!prop){
        return getFallbackFromNumber();
      } 
      return prop; 
    }
    
    function getFallbackFromNumber() {
      var notifyNumGr = new GlideRecord("notify_number");
      notifyNumGr.addActiveQuery();
      notifyNumGr.addQuery('has_sms_out', 'yes');
      notifyNumGr.query();
      if (notifyNumGr.next()) {
        return notifyNumGr.number + '';
      }
      return '';
    }

    알림 유틸리티 - hasActiveConferenceCalls(String sourceRecSysId)

    지정된 소스 기록에 대한 활성 컨퍼런스 회의가 있는지 여부를 확인합니다.

    표 8. 매개변수
    이름 유형 설명
    sourceRecSysId 문자열 활성 컨퍼런스 회의를 확인할 기록의 Sys_id입니다. 예를 들어 인시던트 테이블에 있는 기록의 sys_id입니다.
    표 9. 반환
    유형 설명
    부울 지정된 기록에 활성 컨퍼런스 회의가 연결되었는지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 지정된 기록에 대해 활성 컨퍼런스 회의를 사용할 수 있습니다.
    • false: 활성 컨퍼런스 회의가 없습니다.

    이 예에서는 인시던트 기록과 연결된 활성 컨퍼런스 회의가 있는 경우 정보 메시지를 표시합니다.

    (function executeRule(current, previous /*null when async*/) {
      var nUtil = new NotifyUtil();
      if (nUtil.hasActiveConferenceCalls(current.getUniqueValue())) {
        gs.addInfoMessage("There are active conference calls related to this Incident.");
      } 
    })(current, previous);

    알림 유틸리티 - validateOutboundNotifyPhoneNumber(문자열 번호)

    지정된 Notify 전화 번호를 확인합니다.

    이 메서드는 세 가지 유형의 유효성 검사를 수행합니다.
    1. 알림 전화 번호 [notify_number] 테이블에 알림 번호가 있는지 여부입니다.
    2. 알림 번호에 알림 그룹이 연결되어 있는지 나타냅니다.
    3. 알림 번호가 활성 상태인지 여부입니다.
    이러한 유효성 검사 중 하나라도 실패하면 메서드는 예외를 throw합니다.
    표 10. 매개변수
    이름 유형 설명
    번호 문자열 확인할 알림 번호입니다.
    표 11. 반환
    유형 설명
    안 함

    이 예시에서는 알림 번호를 확인하는 방법을 보여줍니다.

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var nUtil = new NotifyUtil();
      var toNumber = nUtil.getSMSNumberForUser(sourceRecord.assigned_to.getRefRecord());
      var message = 'Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to you.';
      if (fromNumber && nUtil.validateOutboundNotifyPhoneNumber(fromNumber) && toNumber && nUtil.validatePhoneNumber(toNumber)) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToNumber(fromNumber, toNumber, message, sourceRecord);
      }
    }
    
    function getFromNumber() {
      var prop = gs.getProperty('custom_property_name', '');
      if (!prop){
        return getFallbackFromNumber();
      }
      return prop;
    } 
    
    function getFallbackFromNumber() {
      var notifyNumGr = new GlideRecord("notify_number");
      notifyNumGr.addActiveQuery();
      notifyNumGr.addQuery('has_sms_out', 'yes');
      notifyNumGr.query();
      if (notifyNumGr.next()) {
        return notifyNumGr.number + '';
      }
      return '';
    } 

    알림 유틸리티 - validatePhoneNumber(문자열 번호)

    지정된 번호가 유효한 E.164 전화 번호인지 확인합니다.

    표 12. 매개변수
    이름 유형 설명
    번호 문자열 확인할 전화 번호입니다.
    표 13. 반환
    유형 설명
    부울 지정된 번호가 유효한 전화 번호인지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 유효한 E.164 전화 번호입니다.
    • false: 잘못된 전화번호입니다.

    이 예제에서는 전화 번호의 유효성을 검사하는 방법을 보여 줍니다.

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var nUtil = new NotifyUtil();
      var toNumber = nUtil.getSMSNumberForUser(sourceRecord.assigned_to.getRefRecord());
      var message = 'Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to you.';
      if (fromNumber && nUtil.validateOutboundNotifyPhoneNumber(fromNumber) && toNumber && nUtil.validatePhoneNumber(toNumber)) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToNumber(fromNumber, toNumber, message, sourceRecord);
      }
    }
    
    function getFromNumber() {
      var prop = gs.getProperty('custom_property_name', '');
      if (!prop){
        return getFallbackFromNumber();
      }
      return prop;
    } 
    
    function getFallbackFromNumber() {
      var notifyNumGr = new GlideRecord("notify_number");
      notifyNumGr.addActiveQuery();
      notifyNumGr.addQuery('has_sms_out', 'yes');
      notifyNumGr.query();
      if (notifyNumGr.next()) {
        return notifyNumGr.number + '';
      }
      return '';
    }