알림 채널 생성 비상 연락
알림 채널을 생성하여 OR Microsoft Teams 공동 작업 플랫폼과 같은 Slack 회사에서 선호하는 통신 방법을 사용하여 건강 상태 요청을 보냅니다. 스크립트 또는 하위 플로우를 사용하여 알림 채널을 만듭니다.
시작하기 전에
필요한 역할: sn_imt_checkin.checkin_admin 또는 admin
이 태스크 정보
예를 들어 회사의 IT 네트워크 그룹에는 이메일보다 면밀히 모니터링하는 채널이 있습니다 Slack . 알림 채널을 Slack 생성합니다. IT 네트워크 그룹 구성원과 통신하려면 그룹을 대상 그룹으로 선택하고 알림 채널을 Slack 선택합니다.
이메일 알림 및 Now Mobile 푸시 알림 확인란을 선택하면 세 가지 알림이 모두 전송됩니다. 알림 채널만 Slack 사용하려면 이 두 확인란의 선택을 취소합니다.
프로시저
사용자 지정 알림 채널을 사용하여 연락을 보내면 연락 메시지에 배달 로그 관련 목록이 나타납니다.
- 알림 채널에서 아웃리치 메시지를 테스트하고 실패한 기록을 열어 오류 메시지를 검토합니다.
- 알림 실패의 원인이 된 오류를 수정합니다.
- 더 이상 실패하지 않을 때까지 알림 채널을 계속 테스트합니다.
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);