NotifySMS - Global

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 10 minutes de lecture
  • L’include de script NotifySMS fournit des méthodes qui vous permettent d’envoyer des messages SMS (Short Message Service) à partir de numéros de téléphone Notification vers des appareils utilisant soit leurs numéros de téléphone, soit un GlideRecord dont le champ contient des informations de numéro de téléphone.

    Pour utiliser cet include de script, vous devez activer le module d’extension Notification (com.snc.notify).

    NotifySMS : NotifySMS()

    Crée une instance d’un objet NotifySMS.

    Tableau 1. Paramètres
    Nom Type Description
    Aucun

    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 Notification spécifié à 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 envoyant le message 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]. Relie l’enregistrement d’incident à l’origine de la génération du message SMS à ce message SMS.

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

    Tableau 3. Renvoie
    Type Description
    ScriptableFlowRunnerResult ScriptableFlowRunnerResult : inclus dans le champ d’application objet.

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

    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) d’un numéro de téléphone Notification spécifié à 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 envoyant le message 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]. Relie l’enregistrement d’incident à l’origine de la génération du message SMS à ce message SMS.

    Par défaut : aucune. 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 destinataire du SMS.
    Tableau 5. Renvoie
    Type Description
    Aucun

    L’exemple suivant illustre comment envoyer un SMS à un numéro de téléphone spécifié et marquer 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 Notification spécifié à 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 envoyant le message 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]. Relie l’enregistrement d’incident à l’origine de la génération du message SMS à ce message SMS.

    Par défaut : aucune. 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
    Aucun

    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 envoyant le message 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]. Relie l’enregistrement d’incident à l’origine de la génération du message SMS à ce message SMS.

    Par défaut : aucune. 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 permet d’obtenir le numéro de téléphone de l’utilisateur à partir d’un type spécifique de GlideRecord, tel qu’un enregistrement d’utilisateur ou un enregistrement de 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
    Aucun

    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 Notification 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 envoyant le message 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]. Relie l’enregistrement d’incident à l’origine de la génération du message SMS à ce message SMS.

    Par défaut : aucune. 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 permet d’obtenir le numéro de téléphone de l’utilisateur à partir d’un type spécifique de GlideRecord, tel qu’un enregistrement d’utilisateur ou un enregistrement de 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
    Aucun

    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 dans un include de script à utiliser pour obtenir le numéro de téléphone cible dans le GlideRecord 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 à partir 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 autre type d’enregistrement, tel qu’un enregistrement de ticket.

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

    Cet exemple montre comment définir le résolveur de numéro de téléphone sur la méthode getSMSNumberForConsumer() dans l’include de script 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');
      }
    }