NotifyUtil - 전역

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기16분
  • NotifyUtil API는 서버 측 스크립트를 사용하여 Notify 통화 및 SMS 메시지와 상호 작용할 때 사용할 유틸리티 메서드를 제공합니다.

    이 API를 사용하려면 Notify(com.snc.notify) 플러그인을 활성화해야 합니다.

    NotifyUtil API를 사용하여 다음을 수행할 수 있습니다.

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

    NotifyUtil - NotifyUtil()

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

    표 1. 매개변수
    이름 유형 설명
    없음

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

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

    NotifyUtil - getListOfNotifyNumbersAndProviders(sourceTable 문자열, sourceSysId 문자열, notifyGroupSelectorSysId 문자열, 부울 filterSMSCapableNums)

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

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

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

    기본값: false

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

    기본값: 모든 그룹

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

    데이터 유형: 배열

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

    데이터 유형: 배열

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

    데이터 유형: 부울

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

    데이터 유형: 문자열

    numbers.number 알림 번호.

    데이터 유형: 문자열

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

    데이터 유형: 부울

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

    데이터 유형: 문자열

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

    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);
        });
      }
    } 

    NotifyUtil - getSMSNumberForUser(userGrOrId 문자열)

    지정된 Notify 사용자와 연결된 SMS 가능 번호를 반환합니다.

    표 4. 매개변수
    이름 유형 설명
    userGROrId String 또는 GlideRecord - 전역 사용자[sys_user] 테이블에 있는 사용자 기록의 Sys_id 또는 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 '';
    } 

    NotifyUtil - getUniquePhoneNumbersForUsersAndGroups(배열 번호, 배열 사용자, 배열 그룹, 문자열 유형, 부울 getData)

    고유 Notify 전화 번호 목록을 반환합니다.

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

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

    기본값: false

    그룹 배열 옵션입니다. 확인할 sys_id 그룹 목록입니다. 그룹 [sys_user_group] 테이블에 있습니다.

    기본값: 모든 그룹을 선택합니다.

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

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

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

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

    사용자 배열 옵션입니다. 확인할 특정 사용자의 sys_ids 목록입니다. 사용자 [sys_user] 테이블에 있습니다.

    기본값: 모든 사용자 선택

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

    데이터 유형: 배열

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

    데이터 유형: 문자열

    결과.sysId Notify 전화 번호가 포함된 기록의 Sys_id입니다. Notify 전화 번호[notify_number] 테이블에 있습니다.

    데이터 유형: 문자열

    결과.유형 사용자를 나타내는 "u"는 항상 포함합니다.

    데이터 유형: 문자열

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

    데이터 유형: 부울

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

    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 '';
    }

    NotifyUtil - hasActiveConferenceCalls(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);

    NotifyUtil - validateOutboundNotifyPhoneNumber(문자열 번호)

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

    이 메서드는 다음과 같은 세 가지 유형의 유효성 검사를 수행합니다.
    1. 알림 번호가 알림 전화 번호[notify_number] 테이블에 있는지 여부입니다.
    2. Notify 번호에 연결된 Notify 그룹이 있는지 여부입니다.
    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 '';
    } 

    NotifyUtil - validatePhoneNumber(number 문자열)

    지정된 번호가 유효한 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 '';
    }