Emergency Outreach-Benachrichtigungskanal erstellen
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
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
Wenn eine Kontaktanfrage über einen benutzerdefinierten Benachrichtigungskanal gesendet wird, wird in der Nachricht zur Kontaktaufnahme eine zugehörige Liste mit Lieferprotokollen angezeigt.
- Testen Sie den Benachrichtigungskanal auf eine Kontaktnachricht und öffnen Sie den Datensatz „Fehlgeschlagen“, um die Fehlermeldung zu überprüfen.
- Beheben Sie Fehler, durch die die Benachrichtigung fehlgeschlagen ist.
- Setzen Sie den Test des Benachrichtigungskanals fort, bis keine Fehler mehr auftreten.
Slack-Kanalskript
(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);