Emergency Outreach-Benachrichtigungskanal erstellen

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 3 Minuten Lesedauer
  • Erstellen Sie einen Benachrichtigungskanal, um Gesundheitsstatusanforderungen mithilfe der bevorzugten Kommunikationsmethode Ihres Unternehmens zu senden, z. B. die Kollaborationsplattform Slack oder Microsoft Teams. Erstellen Sie den Benachrichtigungskanal mithilfe eines Skripts oder eines 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 auswählen, wenn Sie eine Benachrichtigung senden. Der Kanal verwendet den angegebenen Betreff und Text und sendet Benachrichtigungen an die Benutzer, die Sie beim Senden der Gesundheitsstatusanforderung auswählen.

    Beispielsweise verfügt die IT-Netzwerkgruppe Ihres Unternehmens vielleicht über einen Slack-Kanal, den sie genauer überwacht als E-Mails. Slack-Benachrichtigungskanal erstellen Um mit Mitgliedern der IT-Netzwerkgruppe zu kommunizieren, wählen Sie die Gruppe als Zielgruppe und den Slack-Benachrichtigungskanal aus.

    Wenn die Kontrollkästchen E-Mail-Benachrichtigung und Now Mobile-Push-Benachrichtigung aktiviert sind, werden alle drei Benachrichtigungen gesendet. Um nur den Slack-Benachrichtigungskanal zu verwenden, deaktivieren Sie diese beiden Kontrollkästchen.

    Prozedur

    1. Navigieren zu Alle > Emergency Outreach > Kanäle.
    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, um es der anfordernden Person zu erleichtern, den richtigen Kanal auszuwählen.
    4. Geben Sie im Feld Betreff den Betreff Ihres Benachrichtigungskanals ein.
    5. Geben Sie im Feld Text die Textnachricht ein.
    6. Erstellen Sie einen Skriptbenachrichtigungskanal.
      1. Behalten Sie im Feld Benachrichtigungstyp den Standardbenachrichtigungstyp Skript bei.
      2. Ersetzen Sie im Feld Skript den Code im Kommentar durch das Skript, um eine Verbindung mit dem Kanal herzustellen.
        {
                    // sendNotification(responses.acknowledgementsGr.user.email, 
        channelGr.subject, channelGr.body);
                }
        Weitere Informationen zu JavaScript-APIs für GlideRecord finden Sie unter GlideRecord – Scoped.
      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 wurden. Es zeigt die Anzahl der Bestätigungen und Umfrageinstanzen an, die erfolgreich waren. Verwenden Sie diese Informationen, um Fehler zu überprüfen und zu beheben, die in der zugehörigen Liste „Lieferprotokoll“ im Outreach-Datensatz 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 Outreach-Benachrichtigung verwendet werden soll.
        Weitere Informationen zum Erstellen, Veröffentlichen und Testen von Subflows finden Sie unter Subflows.
        Verwenden Sie in dem von Ihnen erstellten Subflow die folgenden Eingaben:
        • mode (Zeichenfolge)
        • acknowledgements (sn_imt_checkin_check_in_acknowledgement-Datensätze)

          Wenn der Modus acknowledgements ist, wird „acknowledgements“ auf einen gültigen GlideRecord festgelegt und survey_instances ist null.

        • survey_instances (asmt_assessment_instance-Datensätze)

          Wenn der Modus survey_instances ist, wird „survey_instances“ auf einen gültigen GlideRecord festgelegt und acknowledgements ist null.

        • channel (sn_imt_checkin_channels-Referenz)
        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 als Benachrichtigungstyp Subflow aus.
        Der Skriptabschnitt ändert sich in Flow und das Referenzfeld Subflow wird angezeigt.
      3. Wählen Sie den von Ihnen erstellten Subflow aus.
    8. Klicken Sie auf Absenden.

    Wenn eine Kontaktanfrage über einen benutzerdefinierten Benachrichtigungskanal gesendet wird, wird in der Nachricht zur Kontaktaufnahme eine zugehörige Liste mit Lieferprotokollen angezeigt.

    Abbildung : 1. Zugehörige Liste „Lieferprotokolle“
    Zugehörige Liste [] der Zustellprotokolle mit einem fehlgeschlagenen Protokollstatus.
    1. Testen Sie den Benachrichtigungskanal auf eine Kontaktnachricht und öffnen Sie den Datensatz „Fehlgeschlagen“, um die Fehlermeldung zu überprüfen.
    2. Beheben Sie Fehler, durch die die Benachrichtigung fehlgeschlagen ist.
    3. Setzen Sie den Test des Benachrichtigungskanals fort, bis keine Fehler mehr auftreten.

    Slack-Kanalskript

    Hinweis:
    Das folgende Skript dient nur als Referenz. Beziehen Sie sich darauf, 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);