Emergency Outreach 알림 채널 생성
Slack 또는 Microsoft Teams 협업 플랫폼 등 회사가 선호하는 커뮤니케이션 방법을 사용하여 건강 상태 요청을 보낼 알림 채널을 생성합니다. 스크립트나 하위 플로우를 사용하여 알림 채널을 생성합니다.
시작하기 전에
필요한 역할: 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);