Créer un canal de Sensibilisation d'urgence notification
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
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
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.
- Testez le canal de notification pour un message de sensibilisation et ouvrez l’enregistrement ayant échoué pour examiner le message d’erreur.
- Corrigez les erreurs à l’origine de l’échec de la notification.
- Continuez à tester le canal de notification jusqu’à ce qu’il n’échoue plus.
Slack Script de canal
(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);