NotifySMS : global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 10 minutes de lecture
  • L’API NotifySMS fournit des méthodes qui vous permettent d’envoyer des messages SMS (Short Message Service) à partir de numéros de téléphone Notify vers des appareils à l’aide de leurs numéros de téléphone ou d’un GlideRecord dont le champ contient des informations sur les numéros de téléphone.

    Pour utiliser cette API, vous devez activer le module d’extension Notify (com.snc.notify).

    NotifySMS : NotifySMS()

    Crée l’instance d’un objet NotifySMS.

    Tableau 1. Paramètres
    Nom Type Description
    Néant

    Cet exemple montre comment instancier un objet 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);
      } 
    }

    NotifySMS : sendBulkSMS(String fromNumber, Array toNumber, String message, GlideRecord sourceRecord)

    Déclenche une action de flux asynchrone qui envoie un message SMS (Short Message Service) à partir d’un numéro de téléphone Notify spécifié vers une liste de numéros de téléphone.

    Tableau 2. Paramètres
    Nom Type Description
    fromNumber Chaîne Numéro de téléphone de Notification qui envoie le SMS.
    toNumber Tableau Liste des numéros de téléphone pour recevoir le SMS.
    message Chaîne Message à envoyer.
    sourceRecord GlideRecord Facultatif. GlideRecord d’incident à stocker dans le champ Source de l’enregistrement de message SMS associé dans la table Message de notification [notify_message]. Ceci relie l’enregistrement d’incident qui a provoqué la génération du message SMS à ce message SMS.

    Par défaut : aucun. Si ce paramètre n’est pas transmis, ces informations ne sont pas suivies.

    Tableau 3. Renvoie
    Type Description
    ScriptableFlowRunnerResult ScriptableFlowRunnerResult : inclus dans le périmètre Objet.

    L’exemple de code de suivi montre comment vous pouvez utiliser cette méthode pour envoyer un message SMS en bloc.

    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)

    Envoie un message SMS (Short Message Service) à partir d’un numéro de téléphone Notify spécifié vers un numéro de téléphone spécifié.

    En outre, vous pouvez éventuellement associer l’enregistrement d’incident à l’origine de la génération du message SMS au message SMS.

    Tableau 4. Paramètres
    Nom Type Description
    fromNumber Chaîne Numéro de téléphone de Notification qui envoie le SMS.
    message Chaîne Message à envoyer.
    sourceRecord GlideRecord : global Facultatif. GlideRecord d’incident à stocker dans le champ Source de l’enregistrement de message SMS associé dans la table Message de notification [notify_message]. Ceci relie l’enregistrement d’incident qui a provoqué la génération du message SMS à ce message SMS.

    Par défaut : aucun. Si ce paramètre n’est pas transmis, ces informations ne sont pas suivies.

    toNumber Chaîne Numéro de téléphone de l’appareil qui doit recevoir le SMS.
    Tableau 5. Renvoie
    Type Description
    Néant

    L’exemple suivant illustre comment envoyer un SMS à un numéro de téléphone spécifié et tamponner l’enregistrement d’incident associé avec les informations du message.

    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(String fromNumber, Array toNumber, String message, Object sourceRecord)

    Envoie un message SMS (Short Message Service) à partir d’un numéro de téléphone Notify spécifié vers une liste de numéros de téléphone.

    En outre, vous pouvez éventuellement associer l’enregistrement d’incident à l’origine de la génération du message SMS au message SMS.

    Remarque :
    En interne, cette méthode utilise la NotifySMS : sendBulkSMS(String fromNumber, Array toNumber, String message, GlideRecord sourceRecord) méthode pour déclencher une action de flux asynchrone.
    Tableau 6. Paramètres
    Nom Type Description
    fromNumber Chaîne Numéro de téléphone de Notification qui envoie le SMS.
    message Chaîne Message à envoyer.
    sourceRecord GlideRecord : global Facultatif. GlideRecord d’incident à stocker dans le champ Source de l’enregistrement de message SMS associé dans la table Message de notification [notify_message]. Ceci relie l’enregistrement d’incident qui a provoqué la génération du message SMS à ce message SMS.

    Par défaut : aucun. Si ce paramètre n’est pas transmis, ces informations ne sont pas suivies.

    toNumber Tableau Liste des numéros de téléphone pour recevoir le SMS.
    Tableau 7. Renvoie
    Type Description
    Néant

    L’exemple suivant illustre comment envoyer un SMS à plusieurs numéros de téléphone et stocker les informations dans l’enregistrement d’incident associé.

    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)

    Envoie un message SMS (Short Message Service) à partir d’un numéro de téléphone spécifié à l’utilisateur identifié dans un GlideRecord spécifié.

    Cette méthode extrait le numéro de téléphone du GlideRecord spécifié. En outre, vous pouvez éventuellement associer l’enregistrement d’incident à l’origine de la génération du message SMS au message SMS.

    Tableau 8. Paramètres
    Nom Type Description
    fromNumber Chaîne Numéro de téléphone de Notification qui envoie le SMS.
    message Chaîne Message à envoyer.
    sourceRecord GlideRecord : global Facultatif. GlideRecord d’incident à stocker dans le champ Source de l’enregistrement de message SMS associé dans la table Message de notification [notify_message]. Ceci relie l’enregistrement d’incident qui a provoqué la génération du message SMS à ce message SMS.

    Par défaut : aucun. Si ce paramètre n’est pas transmis, ces informations ne sont pas suivies.

    toGr GlideRecord : global GlideRecord d’un type d’enregistrement qui contient un champ qui se résout en numéro de téléphone d’un utilisateur. Le type d’enregistrement doit être mis en corrélation avec le type d’enregistrement utilisé par le programme de résolution de numéro de téléphone actuellement implémenté. Un résolveur de numéro de téléphone est simplement une méthode qui obtient le numéro de téléphone de l’utilisateur à partir d’un type spécifique de GlideRecord, tel qu’un enregistrement Utilisateur ou un enregistrement Ticket. Lors de l’utilisation du programme de résolution par défaut, les enregistrements correspondent à la table Utilisateur [sys_user].

    Pour modifier le type d’enregistrement que le programme de résolution utilise pour obtenir le numéro de téléphone, utilisez la NotifySMS : setRecordToNumberResolver(Object scriptIncludeInstance, String methodName) méthode.

    Tableau 9. Renvoie
    Type Description
    Néant

    L’exemple suivant illustre comment envoyer un message SMS à un utilisateur identifié dans l’enregistrement d’incident associé et tamponner l’enregistrement d’incident associé avec les informations du message.

    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)

    Envoie un message SMS (Short Message Service) à partir d’un numéro de téléphone Notify spécifié aux utilisateurs trouvés dans un GlideRecord spécifié.

    Cette méthode extrait les numéros de téléphone de destination du GlideRecord transmis. En outre, vous pouvez éventuellement associer l’enregistrement d’incident à l’origine de la génération du message SMS au message SMS.

    Remarque :
    En interne, cette méthode utilise la NotifySMS : sendBulkSMS(String fromNumber, Array toNumber, String message, GlideRecord sourceRecord) méthode pour déclencher une action de flux asynchrone.
    Tableau 10. Paramètres
    Nom Type Description
    fromNumber Chaîne Numéro de téléphone de Notification qui envoie le SMS.
    message Chaîne Message à envoyer.
    sourceRecord GlideRecord : global Facultatif. GlideRecord d’incident à stocker dans le champ Source de l’enregistrement de message SMS associé dans la table Message de notification [notify_message]. Ceci relie l’enregistrement d’incident qui a provoqué la génération du message SMS à ce message SMS.

    Par défaut : aucun. Si ce paramètre n’est pas transmis, ces informations ne sont pas suivies.

    toGr GlideRecord : global GlideRecord d’un type d’enregistrement qui contient un champ qui se résout en numéro de téléphone d’un utilisateur. Le type d’enregistrement doit être mis en corrélation avec le type d’enregistrement utilisé par le programme de résolution de numéro de téléphone actuellement implémenté. Un résolveur de numéro de téléphone est simplement une méthode qui obtient le numéro de téléphone de l’utilisateur à partir d’un type spécifique de GlideRecord, tel qu’un enregistrement Utilisateur ou un enregistrement Ticket. Lors de l’utilisation du programme de résolution par défaut, les enregistrements correspondent à la table Utilisateur [sys_user].

    Pour modifier le type d’enregistrement que le programme de résolution utilise pour obtenir le numéro de téléphone, utilisez la NotifySMS : setRecordToNumberResolver(Object scriptIncludeInstance, String methodName) méthode.

    Tableau 11. Renvoie
    Type Description
    Néant

    Cet exemple montre comment envoyer un message SMS aux utilisateurs dans un enregistrement d’incident spécifié.

    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)

    Définit la méthode au sein d’un script include à utiliser pour obtenir le numéro de téléphone cible dans le GlideRecord qui est transmis dans les méthodes NotifySMS.sendToUser() et NotifySMS.sendToUsers().

    Par défaut, la méthode NotifyUtil.getSMSNumberForUser() est utilisée pour obtenir le numéro de téléphone d’un GlideRecord basé sur l’utilisateur [sys_user]. Utilisez la méthode setRecordToNumberResolver() si vous devez créer une méthode personnalisée pour obtenir ces informations à partir d’un type d’enregistrement différent, tel qu’un enregistrement de ticket.

    Tableau 12. Paramètres
    Nom Type Description
    Methodname Chaîne Nom de la méthode à utiliser pour obtenir le numéro de téléphone cible dans un GlideRecord.
    script IncludeInstance Objet Instance du script include qui contient la méthode de résolution de numéro spécifiée.
    Tableau 13. Renvoie
    Type Description
    Néant

    Cet exemple montre comment définir le résolveur de numéro de téléphone sur la méthode getSMSNumberForConsumer() dans le script include csmUtils.

    // 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

    Cet exemple montre le code nécessaire pour la méthode de résolution téléphonique 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');
      }
    }