---
sourceDocument: Xanadu Employee Service Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/employee-service-management

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Xanadu Employee Service Management

ft:clusterId :

    - emplsm

bundleId :

    - emplsm

workflow :

    - Employee


---

# Criar um Contato para situação emergencial canal de notificação

# Criar um Contato para situação emergencial canal de notificação {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 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 as plataformas de colaboração Slack ou Microsoft Teams. 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 admin

## 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 que você seleciona ao enviar a solicitação de status de integridade.

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

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

## Procedimento

1. Navegar até TodosEmergency OutreachCanais.
2. Clique em Nova.  
3. Insira o nome do seu canal de notificação.  
   Use um nome curto que indique o método de comunicação para facilitar a escolha do canal correto pelo solicitante.
4. No campo Assunto, insira o assunto do seu canal de notificação.
5. No campo Corpo, insira a mensagem do corpo.
6. Crie um canal de notificação de script.
   1. No campo Tipo de notificação, deixe o tipo de notificação padrão de Script.
   2. No campo 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](https://www.servicenow.com/docs/access?context=c_GlideRecordScopedAPI&version=xanadu&pubname=xanadu-api-reference&ft:locale=en-US).
   3. Clique em Enviar.

   {#create-emer-outreach-notif-channel__substeps_tlr_wqp_plb}  
   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. Exibe o número de confirmações e instâncias de pesquisa que foram bem-sucedidas. Use essas informações para revisar e lidar com erros que aparecem na lista relacionada ao Log de entrega no registro do Outreach.  

       (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](https://www.servicenow.com/docs/access?context=subflows&version=xanadu&pubname=xanadu-build-workflows&ft:locale=en-US).  
      Use as seguintes entradas no subfluxo criado:
      * <var class="keyword varname">modo</var> (cadeia de caracteres)
      * <var class="keyword varname">akcnowledgements</var> (registros de sn_imt_checkin_check_in_acknowledgement)

        Se o modo for <var class="keyword varname">confirmações</var>, as confirmações serão definidas como um GlideRecord válido e <var class="keyword varname">survey_instances</var> será `nulo`.
      * <var class="keyword varname">survey_instances</var> (registros de asmt_assessment_instance)

        Se o modo for <var class="keyword varname">survey_instances</var>, survey_instances será definido como um GlideRecord válido e as <var class="keyword varname">confirmações</var> serão `nulas`.
      * <var class="keyword varname">canal</var> (referência de sn_imt_checkin_channels)
      {#create-emer-outreach-notif-channel__ul_zg2_2rm_rlb}  
      As seguintes saídas são opcionais:
      * <var class="keyword varname">total_count</var> (inteiro)
      * <var class="keyword varname">sent_count</var> (inteiro)
      {#create-emer-outreach-notif-channel__ul_zmy_csm_rlb}

      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 o tipo de notificação de Subfluxo.  
      A seção Script muda para Fluxo e o campo de referência Subfluxo é exibido.
   3. Selecione o subfluxo que você criou.
   {#create-emer-outreach-notif-channel__substeps_qn5_ytp_plb}
8. Clique em Enviar.
Quando um contato é enviado usando um canal de notificação personalizado, uma lista relacionada a Logs de entrega aparece na mensagem do Outreach.  
Figura 1. Lista relacionada de logs de entrega  
1. Teste o canal de notificação de uma mensagem de divulgação e abra o registro com falha para revisar a mensagem de erro.
2. Corrija os erros que causaram a falha da notificação.
3. Continue testando o canal de notificação até que ele não falhe mais.
{#create-emer-outreach-notif-channel__ol_o5x_33d_vlb}

## Slack script de 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);


