알림 SMS - 전역

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기20분
  • NotifySMS 스크립트 포함은 전화 번호 또는 전화 번호 정보가 포함된 필드가 있는 GlideRecord를 사용하여 Notify 전화 번호에서 장치로 SMS(Short Message Service) 메시지를 보낼 수 있는 메서드를 제공합니다.

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

    알림 SMS - 알림 SMS ()

    NotifySMS 객체의 인스턴스를 만듭니다.

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

    이 예제에서는 NotifySMS 개체를 인스턴스화하는 방법을 보여 줍니다.

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var groupId = sourceRecord.assignment_group + '';
      var toGr = getRecipientGRs(groupId);
      var message = 'An Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to your group';
      if (fromNumber && toGr) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToUsers(fromNumber, toGr, message, sourceRecord);
      } 
    }

    알림 SMS - sendBulkSMS(String fromNumber, Array toNumber, String message, GlideRecord sourceRecord)

    지정된 알림 전화 번호에서 전화 번호 목록으로 SMS(짧은 메시지 서비스) 메시지를 보내는 비동기 플로우 작업을 트리거합니다.

    표 2. 매개변수
    이름 유형 설명
    fromNumber 문자열 SMS 메시지를 보내는 알림 전화 번호입니다.
    toNumber 배열 SMS 메시지를 수신할 전화 번호 목록입니다.
    메시지 문자열 보낼 메시지입니다.
    sourceRecord GlideRecord 옵션입니다. 알림 메시지 [notify_message] 테이블에 있는 연결된 SMS 메시지 기록의 소스 필드에 저장할 인시던트 GlideRecord입니다. 그러면 SMS 메시지가 생성된 인시던트 기록이 해당 SMS 메시지에 연결됩니다.

    기본값: 없음. 이 매개변수가 전달되지 않으면 이 정보가 추적되지 않습니다.

    표 3. 반환
    유형 설명
    ScriptableFlowRunnerResult ScriptableFlowRunnerResult - 범위 지정됨 객체.

    다음 코드 예제에서는 이 메서드를 사용하여 대량 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.sendBulkSMS(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 '';
    }

    알림 SMS - sendToNumber(String fromNumber, String toNumber, String message, Object sourceRecord)

    지정된 알림 전화 번호에서 지정된 전화 번호로 SMS(짧은 메시지 서비스) 메시지를 보냅니다.

    또한 SMS 메시지 생성을 유발한 인시던트 기록을 SMS 메시지와 선택적으로 연결할 수 있습니다.

    표 4. 매개변수
    이름 유형 설명
    fromNumber 문자열 SMS 메시지를 보내는 알림 전화 번호입니다.
    메시지 문자열 보낼 메시지입니다.
    sourceRecord GlideRecord - 전역 옵션입니다. 알림 메시지 [notify_message] 테이블에 있는 연결된 SMS 메시지 기록의 소스 필드에 저장할 인시던트 GlideRecord입니다. 그러면 SMS 메시지가 생성된 인시던트 기록이 해당 SMS 메시지에 연결됩니다.

    기본값: 없음. 이 매개변수가 전달되지 않으면 이 정보가 추적되지 않습니다.

    toNumber 문자열 SMS 메시지를 수신할 장치의 전화 번호입니다.
    표 5. 반환
    유형 설명
    안 함

    다음 예에서는 지정된 전화 번호로 SMS 메시지를 보내고 연결된 인시던트 기록에 메시지 정보를 스탬프 처리하는 방법을 보여줍니다.

    var fromNumber = getFromNumber();  
    var toNumber = '+123456789';  
    var message = 'This is an example SMS';  
    var sourceRecord = new GlideRecord('incident');  
    sourceRecord.query();  
    if (sourceRecord.next()) { 
      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 ''; 
    } 

    알림 SMS - sendToNumbers(String fromNumber, Array toNumber, String message, Object sourceRecord)

    지정된 알림 전화 번호에서 전화 번호 목록으로 SMS(짧은 메시지 서비스) 메시지를 보냅니다.

    또한 SMS 메시지 생성을 유발한 인시던트 기록을 SMS 메시지와 선택적으로 연결할 수 있습니다.

    주:
    내부적으로 이 메서드는 메서드를 사용하여 알림 SMS - sendBulkSMS(String fromNumber, Array toNumber, String message, GlideRecord sourceRecord) 비동기 플로우 작업을 트리거합니다.
    표 6. 매개변수
    이름 유형 설명
    fromNumber 문자열 SMS 메시지를 보내는 알림 전화 번호입니다.
    메시지 문자열 보낼 메시지입니다.
    sourceRecord GlideRecord - 전역 옵션입니다. 알림 메시지 [notify_message] 테이블에 있는 연결된 SMS 메시지 기록의 소스 필드에 저장할 인시던트 GlideRecord입니다. 그러면 SMS 메시지가 생성된 인시던트 기록이 해당 SMS 메시지에 연결됩니다.

    기본값: 없음. 이 매개변수가 전달되지 않으면 이 정보가 추적되지 않습니다.

    toNumber 배열 SMS 메시지를 수신할 전화 번호 목록입니다.
    표 7. 반환
    유형 설명
    안 함

    다음 예는 여러 전화 번호로 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.sendToNumbers(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 '';
    } 

    알림 SMS - sendToUser(String fromNumber, Object toGr, String message, Object sourceRecord)

    지정된 GlideRecord에서 식별된 사용자에게 지정된 전화 번호에서 SMS(짧은 메시지 서비스) 메시지를 보냅니다.

    이 메서드는 지정된 GlideRecord에서 전화 번호를 추출합니다. 또한 SMS 메시지 생성을 유발한 인시던트 기록을 SMS 메시지와 선택적으로 연결할 수 있습니다.

    표 8. 매개변수
    이름 유형 설명
    fromNumber 문자열 SMS 메시지를 보내는 알림 전화 번호입니다.
    메시지 문자열 보낼 메시지입니다.
    sourceRecord GlideRecord - 전역 옵션입니다. 알림 메시지 [notify_message] 테이블에 있는 연결된 SMS 메시지 기록의 소스 필드에 저장할 인시던트 GlideRecord입니다. 그러면 SMS 메시지가 생성된 인시던트 기록이 해당 SMS 메시지에 연결됩니다.

    기본값: 없음. 이 매개변수가 전달되지 않으면 이 정보가 추적되지 않습니다.

    toGr GlideRecord - 전역 사용자의 전화 번호로 확인되는 필드를 포함하는 기록 유형의 GlideRecord 기록 유형은 현재 구현된 전화 번호 확인자가 사용하는 기록 유형과 상관관계가 있어야 합니다. 전화 번호 확인자는 사용자 기록 또는 케이스 기록과 같은 특정 유형의 GlideRecord에서 사용자 전화 번호를 가져오는 단순한 방법입니다. 기본 해결 프로그램을 사용하는 경우 기록은 사용자 [sys_user] 테이블에 해당합니다.

    확인자가 전화 번호를 가져오는 데 사용하는 레코드 유형을 변경하려면 해당 알림 SMS - setRecordToNumberResolver(Object scriptIncludeInstance, String methodName) 메서드를 사용합니다.

    표 9. 반환
    유형 설명
    안 함

    다음 예는 연결된 인시던트 기록에서 식별된 사용자에게 SMS 메시지를 보내고 연결된 인시던트 기록에 메시지 정보를 스탬프 처리하는 방법을 보여줍니다.

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var toGr = sourceRecord.assigned_to.getRefRecord();
      var message = 'An Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to you'; 
      if (fromNumber && toGr.isValidRecord()) { 
        var notifySMS = new NotifySMS();
        notifySMS.sendToUser(fromNumber, toGr, 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 ''; 
    } 

    알림 SMS - sendToUsers(String fromNumber, Object toGr, String message, Object sourceRecord)

    지정된 GlideRecord에 있는 사용자에게 지정된 알림 전화 번호에서 SMS(짧은 메시지 서비스) 메시지를 보냅니다.

    이 메서드는 전달된 GlideRecord에서 대상 전화 번호를 추출합니다. 또한 SMS 메시지 생성을 유발한 인시던트 기록을 SMS 메시지와 선택적으로 연결할 수 있습니다.

    주:
    내부적으로 이 메서드는 메서드를 사용하여 알림 SMS - sendBulkSMS(String fromNumber, Array toNumber, String message, GlideRecord sourceRecord) 비동기 플로우 작업을 트리거합니다.
    표 10. 매개변수
    이름 유형 설명
    fromNumber 문자열 SMS 메시지를 보내는 알림 전화 번호입니다.
    메시지 문자열 보낼 메시지입니다.
    sourceRecord GlideRecord - 전역 옵션입니다. 알림 메시지 [notify_message] 테이블에 있는 연결된 SMS 메시지 기록의 소스 필드에 저장할 인시던트 GlideRecord입니다. 그러면 SMS 메시지가 생성된 인시던트 기록이 해당 SMS 메시지에 연결됩니다.

    기본값: 없음. 이 매개변수가 전달되지 않으면 이 정보가 추적되지 않습니다.

    toGr GlideRecord - 전역 사용자의 전화 번호로 확인되는 필드를 포함하는 기록 유형의 GlideRecord 기록 유형은 현재 구현된 전화 번호 확인자가 사용하는 기록 유형과 상관관계가 있어야 합니다. 전화 번호 확인자는 사용자 기록 또는 케이스 기록과 같은 특정 유형의 GlideRecord에서 사용자 전화 번호를 가져오는 단순한 방법입니다. 기본 해결 프로그램을 사용하는 경우 기록은 사용자 [sys_user] 테이블에 해당합니다.

    확인자가 전화 번호를 가져오는 데 사용하는 레코드 유형을 변경하려면 해당 알림 SMS - setRecordToNumberResolver(Object scriptIncludeInstance, String methodName) 메서드를 사용합니다.

    표 11. 반환
    유형 설명
    안 함

    이 예시에서는 지정된 인시던트 기록 내의 사용자에게 SMS 메시지를 보내는 방법을 보여줍니다.

    var sourceRecord = new GlideRecord('incident');
    sourceRecord.query();
    if (sourceRecord.next()) {
      var fromNumber = getFromNumber();
      var groupId = sourceRecord.assignment_group + '';
      var toGr = getRecipientGRs(groupId);
      var message = 'An Incident ' + sourceRecord.getDisplayValue() + ' has been assigned to your group';
      if (fromNumber && toGr) {
        var notifySMS = new NotifySMS();
        notifySMS.sendToUsers(fromNumber, toGr, 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 ''; 
    }
    
    function getRecipientGRs(groupId) {
      if (!groupId)
        return;
      var userMemberGr = new GlideRecord('sys_user_grmember');
      userMemberGr.addQuery('group', groupId);
      userMemberGr.query();
      var userIds = [];
      while (userMemberGr.next()) {
        userIds.push(userMemberGr.user + ''); 
      }
      var userGr = new GlideRecord('sys_user');
      userGr.addActiveQuery();
      userGr.addQuery('sys_id', 'IN', userIds.join(','));
      userGr.query();
      return userGr; 
    } 

    알림 SMS - setRecordToNumberResolver(Object scriptIncludeInstance, String methodName)

    NotifySMS.sendToUser()NotifySMS.sendToUsers() 메서드에 전달된 GlideRecord에서 대상 전화 번호를 가져오는 데 사용할 스크립트 포함 메서드를 설정합니다.

    기본적으로 NotifyUtil.getSMSNumberForUser() 메서드는 GlideRecord 기반의 [sys_user] 사용자로부터 전화 번호를 가져오는 데 사용됩니다. 케이스 기록과 같은 다른 기록 유형에서 이 정보를 얻기 위해 사용자 지정 메서드를 만들어야 하는 경우 setRecordToNumberResolver() 메서드를 사용합니다.

    표 12. 매개변수
    이름 유형 설명
    메소드 이름 문자열 GlideRecord에서 대상 전화 번호를 가져오는 데 사용할 메서드의 이름입니다.
    scriptIncludeInstance 객체 지정된 수의 해결 방법을 포함하는 스크립트 포함 인스턴스입니다.
    표 13. 반환
    유형 설명
    안 함

    이 예제에서는 csmUtils 스크립트 포함 내에서 전화 번호 확인자를 getSMSNumberForConsumer() 메서드로 설정하는 방법을 보여줍니다.

    // Script include that contains the logic to retrieve a phone number for a consumer.
    var csmUtils = new global.CSMExampleUtils();
     
    // Example Case record used as source for sending SMS
    var caseGr = new GlideRecord('sn_customerservice_case');
    caseGr.get('3af265b3d1cb5010f877cb055160faxx'); // Case sys_id
     
    var notifySms = new global.NotifySMS();
     
    // Use the getSMSNumberForConsumer method of the csmUtils script include (CSMExampleUtils) to obtain the phone number of the consumer.
    notifySms.setRecordToNumberResolver(csmUtils, 'getSMSNumberForConsumer');
     
    // Send an SMS message to a user whose telephone number is in the specified Case GlideRecord.
    var smsText = 'This is a test message for ' + caseGr.getValue('number');
    notifySms.sendToUser('+1xxxxxxxxxx', caseGr.getValue('consumer'), smsText, caseGr); // First param is the Notify phone number

    이 예제에서는 전화 확인자 메서드 getSMSNumberForConsumer()에 필요한 코드를 보여 줍니다.

    getSMSNumberForConsumer: function(consumerGrOrId) {
      if (!consumerGrOrId)
        return;
     
      var consumerId, consumerGr;
      if (typeof consumerGrOrId === "string")
        consumerId = consumerGrOrId;
      if (typeof consumerGrOrId === "object" && consumerGrOrId["isValidRecord"]) {
        consumerGr = consumerGrOrId;
        consumerId = consumerGr.getUniqueValue();
      }
              
      if (!consumerId)
        return;
              
      if (!consumerGr) {
        consumerGr = new GlideRecord('csm_consumer');
        consumerGr.get(consumerId);
      }
              
      if (consumerGr.isValidRecord()) {
        return consumerGr.getValue('mobile_phone');
      }
    }