Crie um Contato para situação emergencial canal de notificação

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 4 min. de leitura
  • Crie um canal de notificação para enviar solicitações de status de integridade usando o método de comunicação preferencial da sua empresa, como Slack ou Microsoft Teams plataformas de colaboração. Crie o canal de notificação usando um script ou um subfluxo.

    Antes de Iniciar

    Função necessária: sn_imt_checkin.checkin_admin ou administrador

    Por Que e Quando Desempenhar Esta Tarefa

    Depois de criar um canal de notificação, você pode selecionar o canal ao enviar uma notificação. O canal usa o assunto e o corpo especificados e envia notificações para os usuários selecionados quando você envia a solicitação de status de integridade.

    Por exemplo, o grupo de rede de TI da sua empresa tem um Slack canal que eles monitoram mais de perto do que o e-mail. Crie um Slack canal de notificação. Para se comunicar com os membros do grupo da rede de TI, selecione o grupo como o público-alvo e selecione Slack canal de notificação.

    . Notificação por e-mail e. Notificação por push do Now Mobile as caixas de seleção estão marcadas, todas as três notificações são enviadas. Para usar somente o. Slack canal de notificação, desmarque essas duas caixas de seleção.

    Procedimento

    1. Navegar até Tudo > Contato para situação emergencial > Canais.
    2. Clique em Nova.
      Novo registro de canal com a opção de script selecionada e o script padrão.
    3. Insira o nome do seu canal de notificação.
      Use um nome curto que indique o método de comunicação para facilitar para o solicitante escolher o canal correto.
    4. Em Assunto insira o assunto do canal de notificação.
    5. Em Corpo , insira o corpo da mensagem.
    6. Crie um canal de notificação de script.
      1. Em Tipo de notificação deixe o tipo de notificação padrão de Script .
      2. Em Script substitua o código no comentário pelo script para se conectar ao seu canal.
        {
                    // sendNotification(responses.acknowledgementsGr.user.email, 
        channelGr.subject, channelGr.body);
                }
        Para obter informações sobre APIs JavaScript para GlideRecord, consulte GlideRecord - Com escopo .
      3. Clique em Enviar.

      O exemplo a seguir inclui o código para contar o número de confirmações e instâncias de pesquisa geradas quando a notificação é enviada. Ele exibe o número de confirmações e instâncias de pesquisa bem-sucedidas. Use essas informações para revisar e lidar com erros que aparecem na lista relacionada Log de entrega no registro de divulgação.

      (function notify(responses, channelGr) {
          var record = responses.mode === 'acknowledgements' 
              ? responses.acknowledgementsGr 
              : responses.surveyInstancesGr;
          var totalCount = record.getRowCount();
          var numSent = 0;
          while (record.next()) {
              try {
                  // sendNotification(record.user.email, channelGr.subject, channelGr.body)
                  numSent += 1;
              } catch (err) {
                  gs.error('Error occurred: ' + err.message);
              }
          }
          return { total_count: totalCount, sent_count: numSent };
      })(responses, channelGr);
    7. Crie um canal de notificação de subfluxo.
      1. Crie um subfluxo para usar na notificação de divulgação.
        Para obter informações sobre como criar, publicar e testar subfluxos, consulte Subfluxos .
        Use as seguintes entradas no subfluxo que você cria:
        • modo (cadeia de caracteres)
        • akcnorenowledgements (Registros de sn_imt_checkin_check_in_acnowledgement)

          Se o modo for confirmações , Em seguida, as confirmações são definidas como GlideRecord válido e survey_instances . nulo .

        • survey_instances (Registros de asmt_assessment_instance)

          Se o modo for survey_instances , Em seguida, survey_instances será definido como GlideRecord válido e confirmações . nulo .

        • canal (Referência de sn_imt_checkin_channels)
        As seguintes saídas são opcionais:
        • total_count (inteiro)
        • sent_count (inteiro)

        Para revisar essas saídas, inclua o número total de confirmações ou pesquisas versus as confirmações ou pesquisas bem-sucedidas.

      2. Selecione Subfluxo tipo de notificação.
        A seção Script muda para Fluxo e Subfluxo o campo de referência é exibido.
      3. Selecione o subfluxo que você criou.
    8. Clique em Enviar.

    Quando uma divulgação é enviada usando um canal de notificação personalizado, uma lista relacionada Logs de entrega aparece na mensagem de divulgação.

    Figura 1. Lista relacionada aos logs de entrega
    Logs de entrega relacionado lista mostrando um status de log com falha.
    1. Teste o canal de notificação para uma mensagem de divulgação e abra o registro com falha para revisar a mensagem de erro.
    2. Corrija erros que causaram a falha da notificação.
    3. Continue testando o canal de notificação até que ele não falhe mais.

    Slack script do canal

    Nota:
    O script a seguir é somente para referência. Consulte-o ao desenvolver um script de canal de notificação para seu ambiente.
    (function notify(responses, channelGr) {
        var createClient = function () {
            var client = new sn_ws.RESTMessageV2();      
            client.setRequestHeader('Authorization', 'Bearer xoxb-222222222222-1111111111111-000000000000000000000000');
            client.setRequestHeader("Accept", "application/json");
            client.setRequestHeader('Content-type', 'application/json');
            return client;
        };
    
        var getEmailToSlackIdMap = function (users) {
            var emailToSlackIdMap = {};
            for (var i = 0; i < users.length; i++) {
                var email = users[i].profile.email;
                if (email) {
                    emailToSlackIdMap[email] = users[i].id;
                }
            }
            return emailToSlackIdMap;
        };
    
        var runSlackCommand = function (method, params) {
            var client = createClient();
            client.setHttpMethod('post');
            client.setEndpoint('https://slack.com/api/' + method);
            client.setRequestBody(JSON.stringify(params));
            var response = client.execute();
            if (response.getStatusCode() < 200 || response.getStatusCode() > 299) {
                throw new Error('Failure running ' + method + ':\n' + response.getBody());
            }
    
            var body = JSON.parse(response.getBody());
            if (!body.ok) {
                throw new Error(body.error);
            }
    
            return body;
        };
    
        var sendMessage = function (userId, message) {
            var openConversationResponse = runSlackCommand('conversations.open', { users: userId });
            var channel = openConversationResponse.channel.id;
            runSlackCommand('chat.postMessage', { channel: channel, text: message });
        };
    
        var users = runSlackCommand('users.list').members;
        var emailToSlackIdMap = getEmailToSlackIdMap(users);
        var body = channelGr.getValue('body') || '<p></p>';
        var record = responses.mode === 'acknowledgements' ? responses.acknowledgementsGr : responses.surveyInstancesGr;
        var numSent = 0;
    
        while (record.next()) {
            var email = record.user.email + '';
    
            var link = responses.mode === 'acknowledgements'
                ? gs.getProperty('glide.servlet.uri') + record.getLink(true)
                : gs.getProperty('glide.servlet.uri') + 'sp?id=take_survey&instance_id=' + record.getUniqueValue();
    
            var message = body + '\n' + link;
    
            var slackId = emailToSlackIdMap[email];
            if (slackId) {
                sendMessage(slackId, message);
                numSent += 1;
            }
        }
    
        return { sent_count: numSent };
    })(responses, channelGr);