Créer un canal de notification Sensibilisation d'urgence
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 collaboration Slack ou 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
Par exemple, le groupe de réseaux informatiques de votre entreprise possède un canal Slack qu'il surveille plus étroitement que les e-mails. Créez un canal de notification Slack. Pour communiquer avec les membres du groupe de réseaux informatiques, sélectionnez le groupe en tant qu'audience cible et sélectionnez le canal de notification Slack.
Si les cases à cocher Notification par e-mail et Notifications push Now Mobile sont sélectionnées, les trois notifications sont envoyées. Pour utiliser uniquement le canal de notification Slack, désactivez ces deux cases à cocher.
Procédure
Lorsqu'une action de sensibilisation est envoyée à l'aide d'un canal de notification personnalisé, une liste connexe Journaux de livraison s'affiche dans le message de sensibilisation.
- Testez le canal de notification pour un message de sensibilisation, puis ouvrez l'enregistrement ayant échoué pour examiner le message d'erreur.
- Corrigez les erreurs qui ont provoqué l'échec de la notification.
- Continuez à tester le canal de notification jusqu'à ce qu'il n'échoue plus.
Script de canal Slack
(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);