NotifyUtil : global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 8 minutes de lecture
  • L’API NotifyUtil fournit des méthodes utilitaires à utiliser lors de l’interaction avec les appels Notify et les messages SMS à l’aide de scripts côté serveur.

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

    À l’aide de l’API NotifyUtil , vous pouvez :

    • Obtenez tous les numéros de téléphone Notify et les informations Notify connexes à partir d’un enregistrement source spécifié.
    • Obtenez une liste de numéros de téléphone Notify uniques.
    • Déterminez si des téléconférences sont actives pour l’enregistrement source spécifié.
    • Obtenir le numéro compatible SMS associé à l’utilisateur Notification spécifié.
    • Validez un numéro de téléphone Notify spécifié.

    NotifyUtil - NotifyUtil()

    Instancie un objet de classe NotifyUtil.

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

    Cet exemple instancie un objet NotifyUtil.

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

    NotifyUtil : getListOfNotifyNumbersAndProviders(String sourceTable, String sourceSysId, String notifyGroupSelectorSysId, Boolean filterSMSCapableNums)

    Renvoie tous les numéros de téléphone Notify et les informations Notify connexes d’un enregistrement source spécifié, comme un incident.

    Vous pouvez utiliser ces informations pour lancer un appel ou envoyer un message SMS sur un enregistrement source particulier. Les informations renvoyées sont basées sur la configuration du cadre de travail du sélecteur de fournisseur Notify. Pour plus d’informations, consultez Notifier

    Tableau 2. Paramètres
    Nom Type Description
    filterSMSCapableNums Booléen Facultatif. Marqueur indiquant si seuls les numéros compatibles avec les SMS doivent être renvoyés.
    Valeurs valides :
    • true : renvoie uniquement les numéros de téléphone et les informations compatibles avec les SMS.
    • false : renvoie tous les numéros de téléphone et informations de notification.

    Valeur par défaut : false

    notifyGroupSelectorSysId Chaîne Facultatif. Sys_id d’un groupe Notify pour lequel renvoyer les numéros et les informations de Notification.

    Par défaut : tous les groupes

    sourceSysId Chaîne Sys_id de l’enregistrement source pour lequel renvoyer les numéros et les informations de Notify. Par exemple, il peut s’agir du sys_id d’un enregistrement dans la table Incident [incident].
    sourceTable Chaîne Nom de la table qui contient l’enregistrement source qui contient les numéros et les informations Notify souhaités.
    Tableau 3. Renvoie
    Type Description
    Fournisseurs de conf Liste des fournisseurs de conférences disponibles.

    Type de données : tableau

    numéros Liste d’objets, chacun décrivant un seul numéro Notify.

    Type de données : tableau

    "numbers": [{
      "defaultFlag": Boolean,
      "name": "String",
      "number": "String",
      "shortCode": Boolean,
      "sysId": "String
    }]
    numbers.defaultFlag Marqueur indiquant si le numéro Notify associé est le numéro par défaut.
    Valeurs possibles :
    • true : nombre par défaut
    • false : nombre par défaut non valide

    Type de données : booléennes

    numbers.name Nom ou étiquette du numéro.

    Type de données : chaîne

    nombre.numéro Numéro de Notification.

    Type de données : chaîne

    numbers.shortCode Marqueur indiquant si le numéro Notify associé est un code court.
    Valeurs possibles :
    • true : code court
    • false : il ne s’agit pas d’un code court

    Type de données : booléennes

    numbers.sysId Sys_id du numéro Notify.

    Type de données : chaîne

    Cet exemple montre comment obtenir les numéros de téléphone Notify et les informations Notify connexes à partir d’un enregistrement source spécifié.

    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(String userGrOrId)

    Renvoie le numéro compatible SMS associé à l’utilisateur Notification spécifié.

    Tableau 4. Paramètres
    Nom Type Description
    userGROrId String ou GlideRecord : global Sys_id de l’enregistrement utilisateur, situé dans la table Utilisateur [sys_user], ou le GlideRecord sys_user de l’utilisateur pour lequel renvoyer le numéro de téléphone compatible SMS.
    Tableau 5. Renvoie
    Type Description
    Chaîne Numéro de téléphone de l’utilisateur compatible SMS. Renvoie null si l’utilisateur spécifié n’est pas trouvé.

    Cet exemple montre comment obtenir un numéro de téléphone compatible avec les SMS à l’aide du GlideRecord associé.

    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(Array numbers, Array users, Array groups, String type, Boolean getData)

    Renvoie une liste de numéros de téléphone Notify uniques.

    Si vous ne transmettez aucun paramètre à l’appel, tous les numéros Notify de la table Numéro de téléphone Notify [notify_number] sont vérifiés pour les doublons, chaque numéro de téléphone disponible n’apparaissant qu’une seule fois dans la liste renvoyée. Vous pouvez affiner les résultats de renvoi en spécifiant une liste d’utilisateurs ou de groupes à vérifier, ou en spécifiant un ensemble de numéros ou de types de numéros (SMS ou messages vocaux). Vous pouvez également demander que les métadonnées associées à chaque numéro soient renvoyées avec les numéros uniques. Si vous ne souhaitez pas utiliser de paramètre, passez simplement null en tant qu’espace réservé. Par exemple : return nUtil.getUniquePhoneNumbersForUsersAndGroups(null, userIds, null, 'sms', false) ;.

    Tableau 6. Paramètres
    Nom Type Description
    Getdata Booléen Facultatif. Marqueur indiquant si les métadonnées doivent être renvoyées avec la liste des numéros de téléphone uniques.
    Valeurs valides :
    • true : renvoie les métadonnées.
    • false : ne pas renvoyer de métadonnées.

    Valeur par défaut : false

    groupes Tableau Facultatif. Liste des groupes de sys_id à vérifier. Situé dans la table Groupe [sys_user_group].

    Par défaut : cochez tous les groupes.

    numéros Tableau Facultatif. Liste des numéros de téléphone Notify spécifiques à vérifier.

    Par défaut : vérifiez tous les numéros de téléphone.

    type Chaîne Facultatif. Type de numéros de téléphone à vérifier.
    Valeurs valides (sensibles à la casse) :
    • voice
    • sms

    Par défaut : vérifiez tous les types de numéros de téléphone

    utilisateurs Tableau Facultatif. Liste des sys_ids d’utilisateurs spécifiques à vérifier. Situé dans la table Utilisateur [sys_user].

    Par défaut : cocher tous les utilisateurs

    Tableau 7. Renvoie
    Nom Description
    numéros Numéros de téléphone uniques de Notify.

    Type de données : tableau

    résultat Uniquement renvoyé si getData la valeur est vrai. Métadonnées associées à chaque numéro unique.
    Type de données : objet
    "result": {
      "number": "String",
      "sysId": "String",
      "type": "String",
      "valid": Boolean
    }
    nombre.résultat Numéro de téléphone unique de Notify.

    Type de données : chaîne

    result.sysId Sys_id de l’enregistrement qui contient le numéro de téléphone de Notify. Situé dans la table Numéro de téléphone de Notification [notify_number].

    Type de données : chaîne

    type.résultat Contient toujours « u » pour utilisateur.

    Type de données : chaîne

    résultat.valide Marqueur indiquant si le numéro de téléphone Notify est au format E.164 valide.
    Valeurs possibles :
    • true : format E.164 valide.
    • false : pas au format E.164.

    Type de données : booléennes

    Cet exemple montre comment demander un ensemble spécifique de numéros de téléphone Notify uniques dotés d’options 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.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(String sourceRecSysId)

    Détermine s’il existe des téléconférences actives pour l’enregistrement source spécifié.

    Tableau 8. Paramètres
    Nom Type Description
    sourceRecSysId Chaîne Sys_id de l’enregistrement pour vérifier si les téléconférences sont actives. Par exemple, la sys_id d’un enregistrement dans la table Incident.
    Tableau 9. Renvoie
    Type Description
    Booléen Marqueur indiquant si l’enregistrement spécifié a associé des téléconférences actives.
    Valeurs possibles :
    • true : les téléconférences actives sont disponibles pour l’enregistrement spécifié.
    • false : aucune téléconférence active.

    Cet exemple affiche un message d’information si des téléconférences actives sont associées à un enregistrement d’incident

    (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(numéro de chaîne)

    Valide un numéro de téléphone Notify spécifié.

    La méthode effectue trois types de validation :
    1. Indique si le numéro Notify existe dans la table Numéro de téléphone Notify [notify_number].
    2. Indique si un groupe Notify est associé au numéro Notify.
    3. Indique si le numéro Notify est actif.
    Si l’une de ces validations échoue, la méthode lève une exception.
    Tableau 10. Paramètres
    Nom Type Description
    Numéro Chaîne Numéro de notification à valider.
    Tableau 11. Renvoie
    Type Description
    Néant

    Cet exemple illustre comment valider un numéro de notification.

    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(numéro de chaîne)

    Vérifie que le numéro spécifié est un numéro de téléphone E.164 valide.

    Tableau 12. Paramètres
    Nom Type Description
    Numéro Chaîne Numéro de téléphone à valider.
    Tableau 13. Renvoie
    Type Description
    Booléen Marqueur indiquant si le numéro spécifié est un numéro de téléphone valide.
    Valeurs possibles :
    • true : numéro de téléphone E.164 valide.
    • false : numéro de téléphone non valide.

    Cet exemple illustre comment valider un numéro de téléphone.

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