Créer un canal de Sensibilisation d'urgence notification

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 4 minutes de lecture
  • Créez un canal de notification pour envoyer des demandes d’état de santé à l’aide de la méthode de communication préférée de votre entreprise, telle que les plateformes de Slack collaboration OR Microsoft Teams . Créez le canal de notification à l’aide d’un script ou d’un flux secondaire.

    Avant de commencer

    Rôle requis : sn_imt_checkin.checkin_admin ou admin

    Pourquoi et quand exécuter cette tâche

    Après avoir créé un canal de notification, vous pouvez sélectionner celui-ci lors de l’envoi d’une notification. Le canal utilise l’objet et le corps spécifiés, et envoie des notifications aux utilisateurs que vous sélectionnez lorsque vous envoyez la demande d’état de santé.

    Par exemple, le groupe Réseau informatique de votre entreprise dispose d’un Slack canal qu’il surveille de plus près que le courrier électronique. Créez un canal de Slack notification. Pour communiquer avec les membres du groupe de réseau IT, sélectionnez le groupe en tant qu’audience cible et sélectionnez le canal de Slack notification.

    Si les cases Notification par e-mail et Notification push Now Mobile sont cochées, les trois notifications sont envoyées. Pour utiliser uniquement le canal de Slack notification, décochez ces deux cases.

    Procédure

    1. Accédez à la Tous > Sensibilisation d'urgence > Canaux.
    2. Cliquez sur Nouveau.
      Nouvel enregistrement de canal avec l’option de script sélectionnée et le script par défaut.
    3. Entrez le nom de votre canal de notification.
      Utilisez un nom court qui indique la méthode de communication pour permettre au demandeur de choisir facilement le canal approprié.
    4. Dans le champ Objet , saisissez l’objet de votre canal de notification.
    5. Dans le champ Corps , saisissez le corps du message.
    6. Créez un canal de notification de script.
      1. Dans le champ Type de notification , conservez le type de notification par défaut Script.
      2. Dans le champ Script , remplacez le code du commentaire par le script à connecter à votre canal.
        {
                    // sendNotification(responses.acknowledgementsGr.user.email, 
        channelGr.subject, channelGr.body);
                }
        Pour plus d’informations sur les API JavaScript pour GlideRecord, consultez GlideRecord : champ d’application.
      3. Cliquez sur Envoyer.

      L’exemple suivant comprend du code pour compter le nombre d’accusés de réception et d’instances d’enquête générées lors de l’envoi de la notification. Il affiche le nombre d’authentifications et d’instances d’enquête qui ont réussi. Utilisez ces informations pour examiner et gérer les erreurs qui apparaissent dans la liste connexe du journal de diffusion de l’enregistrement de sensibilisation.

      (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. Créez un canal de notification de flux secondaire.
      1. Créez un flux secondaire à utiliser dans la notification de sensibilisation.
        Pour en savoir plus sur la création, la publication et le test des flux secondaires, consultez Flux secondaires.
        Utilisez les entrées suivantes dans le flux secondaire que vous créez :
        • Mode (chaîne)
        • akcnowledgements (Archives de sn_imt_checkin_check_in_acknowledgement)

          Si le mode est confirmations, les confirmations sont définies sur un GlideRecord valide et survey_instances est null.

        • survey_instances (enregistrements de asmt_assessment_instance)

          Si le mode est survey_instances, survey_instances est défini sur un GlideRecord valide et les confirmations sont nulles.

        • canal (référence de sn_imt_checkin_channels)
        Les sorties suivantes sont facultatives :
        • total_count (entier)
        • sent_count (entier)

        Pour examiner ces résultats, incluez le nombre total de confirmations ou d’enquêtes par rapport aux confirmations ou aux enquêtes réussies.

      2. Sélectionnez le type de notification du flux secondaire .
        La section Script devient Flux et le champ de référence Flux secondaire s’affiche.
      3. Sélectionnez le flux secondaire que vous avez créé.
    8. Cliquez sur Envoyer.

    Lorsqu’une sensibilisation est envoyée à l’aide d’un canal de notification personnalisé, une liste connexe de journaux de diffusion apparaît dans le message de sensibilisation.

    Figure 1. Liste connexe des journaux de livraison
    Liste connexe des journaux de livraison affichant un état de journal d’échec.
    1. Testez le canal de notification pour un message de sensibilisation et ouvrez l’enregistrement ayant échoué pour examiner le message d’erreur.
    2. Corrigez les erreurs à l’origine de l’échec de la notification.
    3. Continuez à tester le canal de notification jusqu’à ce qu’il n’échoue plus.

    Slack Script de canal

    Remarque :
    Le script suivant est fourni à titre de référence uniquement. Consultez-le lorsque vous développez un script de canal de notification pour votre environnement.
    (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);