Erstellen Sie einen Notfall-KontaktaufnahmeBenachrichtigungskanal

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 4 Minuten Lesedauer
  • Erstellen Sie einen Benachrichtigungskanal, um Integritätsstatusanforderungen mithilfe der bevorzugten Kommunikationsmethode Ihres Unternehmens zu senden, z. B. SlackOder Microsoft TeamsZusammenarbeitsplattformen. Erstellen Sie den Benachrichtigungskanal mithilfe eines Skripts oder Subflows.

    Vorbereitungen

    Erforderliche Rolle: sn_imt_checkin.checkin_admin oder admin

    Warum und wann dieser Vorgang ausgeführt wird

    Nachdem Sie einen Benachrichtigungskanal erstellt haben, können Sie den Kanal beim Senden einer Benachrichtigung auswählen. Der Kanal verwendet den angegebenen Betreff und Text und sendet Benachrichtigungen an die Anwender, die Sie auswählen, wenn Sie die Integritätsstatusanforderung senden.

    Beispielsweise hat die IT-Netzwerkgruppe Ihres Unternehmens eine SlackKanal, den sie genauer überwachen als E-Mail. Erstellen Sie ein SlackBenachrichtigungskanal. Um mit IT-Netzwerkgruppenmitgliedern zu kommunizieren, wählen Sie die Gruppe als Zielgruppe aus, und wählen Sie aus SlackBenachrichtigungskanal.

    Wenn E-Mail-Benachrichtigung Und Now Mobile-Push-Benachrichtigung Kontrollkästchen sind aktiviert, alle drei Benachrichtigungen werden gesendet. Zur Verwendung nur von SlackBenachrichtigungskanal: Deaktivieren Sie diese beiden Kontrollkästchen.

    Prozedur

    1. Navigieren zu Alle > Notfall-Kontaktaufnahme > Kanälean.
    2. Klicken Sie auf Neu.
      Neuer Kanaldatensatz mit ausgewählter Skriptoption und Standardskript.
    3. Geben Sie den Namen Ihres Benachrichtigungskanals ein.
      Verwenden Sie einen kurzen Namen, der die Kommunikationsmethode angibt, damit die anfordernde Person den richtigen Kanal auswählen kann.
    4. In Betreff Geben Sie den Betreff Ihres Benachrichtigungskanals ein.
    5. In Textkörper Feld, geben Sie die Textnachricht ein.
    6. Erstellen Sie einen Skriptbenachrichtigungskanal.
      1. In Benachrichtigungstyp Feld, belassen Sie den Standardbenachrichtigungstyp von Skript .
      2. In Skript Feld, ersetzen Sie den Code im Kommentar durch das Skript, um eine Verbindung zu Ihrem Kanal herzustellen.
        {
                    // sendNotification(responses.acknowledgementsGr.user.email, 
        channelGr.subject, channelGr.body);
                }
        Informationen zu JavaScript-APIs für GlideRecord finden Sie unter GlideRecord: Bereichsbezogen .
      3. Klicken Sie auf Absenden.

      Das folgende Beispiel enthält Code zum Zählen der Anzahl der Bestätigungen und Umfrageinstanzen, die beim Senden der Benachrichtigung generiert werden. Zeigt die Anzahl der Bestätigungen und Umfrageinstanzen an, die erfolgreich waren. Verwenden Sie diese Informationen, um Fehler zu überprüfen und zu behandeln, die in der zugehörigen Liste „Zustellprotokoll“ im Kontaktdatensatz angezeigt werden.

      (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. Erstellen Sie einen Subflow-Benachrichtigungskanal.
      1. Erstellen Sie einen Subflow, der in der Kontaktaufnahme-Benachrichtigung verwendet werden soll.
        Informationen zum Erstellen, Veröffentlichen und Testen von Subflows finden Sie unter Subflows .
        Verwenden Sie die folgenden Eingaben im Subflow, den Sie erstellen:
        • Modus (Zeichenfolge)
        • Bestätigungen (Datensätze von sn_imt_checkin_check_in_acknowledgement)

          Wenn der Modus ist Bestätigungen , Dann werden Bestätigungen auf einen gültigen GlideRecord und festgelegt Survey_instances Ist Null .

        • Survey_instances (Datensätze von asmt_assessment_instance)

          Wenn der Modus ist Survey_instances , Dann wird Survey_instances auf einen gültigen GlideRecord und festgelegt Bestätigungen Ist Null .

        • Kanal (Referenz von sn_imt_checkin_channels)
        Die folgenden Ausgaben sind optional:
        • Total_count (Ganzzahl)
        • Sent_count (Ganzzahl)

        Um diese Ausgaben zu überprüfen, geben Sie die Gesamtanzahl der Bestätigungen oder Umfragen im Vergleich zu den erfolgreichen Bestätigungen oder Umfragen an.

      2. Wählen Sie aus Subflow Benachrichtigungstyp.
        Der Abschnitt „Skript“ ändert sich in „Flow“ und „Flow“ Subflow Referenzfeld wird angezeigt.
      3. Wählen Sie den Subflow aus, den Sie erstellt haben.
    8. Klicken Sie auf Absenden.

    Wenn eine Kontaktaufnahme über einen anwenderdefinierten Benachrichtigungskanal gesendet wird, wird in der Nachricht „Kontaktaufnahme“ eine zugehörige Liste „Zustellprotokolle“ angezeigt.

    Abbildung : 1. Zugehörige Liste der Zustellprotokolle
    Zustellprotokolle Zugehörig Liste, die den Status eines fehlgeschlagenen Protokolls anzeigt.
    1. Testen Sie den Benachrichtigungskanal auf eine Kontaktkontaktnachricht, und öffnen Sie den fehlgeschlagenen Datensatz, um die Fehlermeldung zu überprüfen.
    2. Beheben Sie Fehler, die zum Fehlschlagen der Benachrichtigung geführt haben.
    3. Fahren Sie mit dem Testen des Benachrichtigungskanals fort, bis er nicht mehr fehlschlägt.

    Slack Kanalskript

    Hinweis:
    Das folgende Skript dient nur als Referenz. Beachten Sie dies, wenn Sie ein Benachrichtigungskanalskript für Ihre Umgebung entwickeln.
    (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);