NotifySMS - 전역

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

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

    NotifySMS - 알림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(문자열 fromNumber, 배열 toNumber, 문자열 메시지, 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 '';
    }

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

    NotifySMS - sendToNumbers(문자열 fromNumber, 배열 toNumber, 문자열 메시지, 객체 sourceRecord)

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

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

    주:
    내부적으로 이 메서드는 메서드를 사용하여 알림SMS - sendBulkSMS(문자열 fromNumber, 배열 toNumber, 문자열 메시지, 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 '';
    } 

    NotifySMS - 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] 테이블에 해당합니다.

    확인자가 전화 번호를 가져오는 데 사용하는 레코드 유형을 변경하려면 이 NotifySMS - 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 ''; 
    } 

    NotifySMS - sendToUsers(String fromNumber, Object toGr, String message, Object sourceRecord)

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

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

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

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

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

    확인자가 전화 번호를 가져오는 데 사용하는 레코드 유형을 변경하려면 이 NotifySMS - 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; 
    } 

    NotifySMS - setRecordToNumberResolver(Object, scriptIncludeInstance, String, methodName)

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

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

    표 12. 매개변수
    이름 유형 설명
    메서드 이름 문자열 GlideRecord에서 대상 전화 번호를 가져오는 데 사용할 메서드의 이름입니다.
    scriptInclude인스턴스 객체 지정된 번호 해결 프로그램 메서드를 포함하는 스크립트 포함의 인스턴스입니다.
    표 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');
      }
    }