NotifyUtil - Global

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 8 min. de leitura
  • A API NotifyUtil fornece métodos de utilitário para usar ao interagir com chamadas do Notify e mensagens SMS usando scripts do lado do servidor.

    Para usar esta API, você deve ativar o plug-in Notify (com.snc.notify).

    Usando a API NotifyUtil, você pode:

    • Obtenha todos os números de telefone do Notify e as informações relacionadas do Notify de um registro de origem especificado.
    • Obtenha uma lista de números de telefone exclusivos do Notify.
    • Determine se há chamadas em conferência ativas para o registro de origem especificado.
    • Obtenha o número compatível com SMS associado ao usuário do Notify especificado.
    • Valide um número de telefone do Notify especificado.

    NotifyUtil - NotifyUtil()

    Instancia um objeto de classe NotifyUtil.

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    Nenhum

    Este exemplo instancia um objeto NotifyUtil.

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

    NotifyUtil - getListOfNotifyNumbersAndProviders(cadeia de caracteres sourceTable, cadeia de caracteres sourceSysId, cadeia de caracteres notifyGroupSelectorSysId, booliano filterSMSCapableNums)

    Retorna todos os números de telefone do Notify e as informações relacionadas do Notify de um registro de origem especificado, como um incidente.

    Você pode usar essas informações para iniciar uma chamada ou enviar uma mensagem SMS em um registro de origem específico. As informações retornadas são baseadas na configuração da estrutura do Notify Provider Selector. Para obter informações adicionais, consulte Notify.

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    filterSMSCapableNums Booliano Opcional. Sinalizador que indica se somente os números compatíveis com SMS devem ser retornados.
    Valores válidos:
    • verdadeiro: retorna somente números de telefone e informações compatíveis com SMS.
    • falso: retorna todos os números de telefone e informações de notificação.

    Padrão: falso

    notifyGroupSelectorSysId Cadeia de caracteres Opcional. Sys_id de um grupo do Notify para o qual os números e as informações de notificação serão retornados.

    Padrão: todos os grupos

    sourceSysId Cadeia de caracteres Sys_id do registro de origem para o qual os números e as informações do Notify serão retornados. Por exemplo, este pode ser o sys_id de um registro na tabela Incidente [incidente].
    sourceTable Cadeia de caracteres Nome da tabela que contém o registro de origem que contém os números e as informações desejados do Notify.
    Tabela 3. Retorna
    Tipo Descrição
    confProviders Lista de provedores de conferência disponíveis.

    Tipo de dados: matriz

    números Lista de objetos, cada um descrevendo um único número do Notify.

    Tipo de dados: matriz

    "numbers": [{
      "defaultFlag": Boolean,
      "name": "String",
      "number": "String",
      "shortCode": Boolean,
      "sysId": "String
    }]
    numbers.defaultFlag Sinalizador que indica se o número do Notify associado é o número padrão.
    Valores possíveis:
    • verdadeiro: número padrão
    • falso: não é o número padrão

    Tipo de dados: booliano

    numbers.name Nome ou rótulo do número.

    Tipo de dados: cadeia de caracteres

    números.número Número do Notify.

    Tipo de dados: cadeia de caracteres

    números.códigocurto Sinalizador que indica se o número do Notify associado é um código curto.
    Valores possíveis:
    • verdadeiro: código curto
    • falso: não é um código curto

    Tipo de dados: booliano

    números.sysId Sys_id do número do Notify.

    Tipo de dados: cadeia de caracteres

    Este exemplo mostra como obter os números de telefone do Notify e as informações relacionadas do Notify de um registro de origem especificado.

    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 - getMSNumberForUser(cadeia de caracteres userGrOrId)

    Retorna o número compatível com SMS associado ao usuário do Notify especificado.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    userGROrId Cadeia de caracteres ou GlideRecord - Global Sys_id do registro do usuário, localizado na tabela Usuário [sys_user], ou o sys_user GlideRecord do usuário para o qual o número de telefone compatível com SMS será retornado.
    Tabela 5. Retorna
    Tipo Descrição
    Cadeia de caracteres Número de telefone compatível com SMS do usuário. Retornará nulo se o usuário especificado não for encontrado.

    Este exemplo mostra como obter um número de telefone compatível com SMS usando o GlideRecord associado.

    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(números de matriz, usuários de matriz, grupos de matriz, tipo de cadeia de caracteres, booliano getData)

    Retorna uma lista de números de telefone exclusivos do Notify.

    Se você não passar nenhum parâmetro na chamada, todos os números do Notify na tabela Notify Phone Number [notify_number] serão verificados quanto a duplicatas, com cada número de telefone disponível aparecendo apenas uma vez na lista retornada. Você pode refinar os resultados do retorno especificando uma lista de usuários ou grupos a serem verificados ou especificando um conjunto de números ou tipos de número (SMS ou voz). Você também pode solicitar que os metadados associados a cada número sejam retornados junto com o exclusivo números. Se você não quiser usar um parâmetro, basta passar nulo como espaço reservado. Por exemplo: return nUtil.getUniquePhoneNumbersForUsersAndGroups(null, userIds, null, 'sms', false);.

    Tabela 6. Parâmetros
    Nome Tipo Descrição
    obterDados Booliano Opcional. Sinalizador que indica se os metadados devem ser retornados junto com a lista de números de telefone exclusivos.
    Valores válidos:
    • verdadeiro: retorna metadados.
    • false: não retorna metadados.

    Padrão: falso

    grupos Matriz Opcional. Lista de grupos sys_id a serem verificados. Localizado na tabela Grupo [sys_user_group].

    Padrão: verificar todos os grupos.

    números Matriz Opcional. Lista de números de telefone específicos do Notify a serem verificados.

    Padrão: verifique todos os números de telefone.

    tipo Cadeia de caracteres Opcional. Tipo de números de telefone a serem verificados.
    Valores válidos (diferencia maiúsculas de minúsculas):
    • voz
    • sms

    Padrão: verificar todos os tipos de número de telefone

    usuários Matriz Opcional. Lista de sys_ids de usuários específicos a serem verificados. Localizado na tabela Usuário [sys_user].

    Padrão: verificar todos os usuários

    Tabela 7. Retorna
    Nome Descrição
    números Números de telefone exclusivos do Notify.

    Tipo de dados: matriz

    resultado Retornado somente se getData estiver definido como verdadeiro. Metadados associados a cada número exclusivo.
    Tipo de dados: objeto
    "result": {
      "number": "String",
      "sysId": "String",
      "type": "String",
      "valid": Boolean
    }
    número.resultado Número de telefone exclusivo do Notify.

    Tipo de dados: cadeia de caracteres

    result.sysId Sys_id do registro que contém o número de telefone do Notify. Localizado na tabela Notify Phone Number [notify_number].

    Tipo de dados: cadeia de caracteres

    resultado.tipo Sempre contém "u" para o usuário.

    Tipo de dados: cadeia de caracteres

    resultado.válido Sinalizador que indica se o número de telefone do Notify está no formato E.164 válido.
    Valores possíveis:
    • verdadeiro: formato E.164 válido.
    • falso: não está no formato E.164.

    Tipo de dados: booliano

    Este exemplo mostra como solicitar um conjunto específico de números de telefone exclusivos do Notify que tenham recursos de 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(cadeia de caracteres sourceRecSysId)

    Determina se há chamadas em conferência ativas para o registro de origem especificado.

    Tabela 8. Parâmetros
    Nome Tipo Descrição
    sourceRecSysId Cadeia de caracteres Sys_id do registro a ser verificado para chamadas em conferência ativas. Por exemplo, o sys_id de um registro na tabela Incidente.
    Tabela 9. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se o registro especificado tem chamadas em conferência ativas associadas.
    Valores possíveis:
    • verdadeiro: as chamadas em conferência ativas estão disponíveis para o registro especificado.
    • falso: não há chamadas em conferência ativas.

    Este exemplo exibe uma mensagem de informação se houver chamadas em conferência ativas associadas a um registro de incidente

    (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 - identifyOutboundNotifyPhoneNumber(cadeia de caracteres numérica)

    Valida um número de telefone do Notify especificado.

    O método executa três tipos de validação:
    1. Se o número do Notify existe na tabela Notify Phone Number [notify_number].
    2. Se o número do Notify tem um grupo do Notify associado a ele.
    3. Se o número do Notify está ativo.
    Se qualquer uma dessas validações falhar, o método gerará uma exceção.
    Tabela 10. Parâmetros
    Nome Tipo Descrição
    número Cadeia de caracteres Número do Notify para validar.
    Tabela 11. Retorna
    Tipo Descrição
    Nenhum

    Este exemplo ilustra como validar um número de notificação.

    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 - ValidationPhoneNumber(cadeia de caracteres numérica)

    Verifica se o número especificado é um número de telefone E.164 válido.

    Tabela 12. Parâmetros
    Nome Tipo Descrição
    número Cadeia de caracteres Número de telefone para validar.
    Tabela 13. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se o número especificado é um número de telefone válido.
    Valores possíveis:
    • verdadeiro: número de telefone E.164 válido.
    • falso: número de telefone inválido.

    Este exemplo ilustra como validar um número de telefone.

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