알림 채널 생성 비상 연락

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 7분
  • 알림 채널을 생성하여 OR Microsoft Teams 공동 작업 플랫폼과 같은 Slack 회사에서 선호하는 통신 방법을 사용하여 건강 상태 요청을 보냅니다. 스크립트 또는 하위 플로우를 사용하여 알림 채널을 만듭니다.

    시작하기 전에

    필요한 역할: sn_imt_checkin.checkin_admin 또는 admin

    이 태스크 정보

    알림 채널을 만든 후에는 알림을 보낼 때 채널을 선택할 수 있습니다. 채널은 지정된 제목과 본문을 사용하고 건강 상태 요청을 보낼 때 선택한 사용자에게 알림을 보냅니다.

    예를 들어 회사의 IT 네트워크 그룹에는 이메일보다 면밀히 모니터링하는 채널이 있습니다 Slack . 알림 채널을 Slack 생성합니다. IT 네트워크 그룹 구성원과 통신하려면 그룹을 대상 그룹으로 선택하고 알림 채널을 Slack 선택합니다.

    이메일 알림Now Mobile 푸시 알림 확인란을 선택하면 세 가지 알림이 모두 전송됩니다. 알림 채널만 Slack 사용하려면 이 두 확인란의 선택을 취소합니다.

    프로시저

    1. 다음으로 이동 모두 > 비상 연락 > 채널.
    2. 새로 만들기를 클릭합니다.
      스크립트 옵션이 선택되고 기본 스크립트가 있는 새 채널 기록입니다.
    3. 알림 채널의 이름을 입력합니다.
      요청자가 올바른 채널을 쉽게 선택할 수 있도록 통신 방법을 나타내는 짧은 이름을 사용합니다.
    4. 제목 필드에 알림 채널의 제목을 입력합니다.
    5. 본문 필드에 본문 메시지를 입력합니다.
    6. 스크립트 알림 채널을 생성합니다.
      1. 알림 유형 필드에서 기본 알림 유형인 스크립트를 그대로 둡니다.
      2. 스크립트 필드에서 설명의 코드를 채널에 연결할 스크립트로 바꿉니다.
        {
                    // sendNotification(responses.acknowledgementsGr.user.email, 
        channelGr.subject, channelGr.body);
                }
        GlideRecord용 JavaScript API에 대한 자세한 내용은 GlideRecord - 범위 지정을 참조하십시오.
      3. 제출을 클릭합니다.

      다음 예시에는 알림이 전송될 때 생성되는 승인 및 설문 조사 인스턴스 수를 계산하는 코드가 포함되어 있습니다. 성공한 승인 및 설문 조사 인스턴스 수를 표시합니다. 이 정보를 사용하여 아웃리치 기록의 제공 로그 관련 목록에 나타나는 오류를 검토하고 처리합니다.

      (function notify(responses, channelGr) {
          var record = responses.mode === 'acknowledgements' 
              ? responses.acknowledgementsGr 
              : responses.surveyInstancesGr;
          var totalCount = record.getRowCount();
          var numSent = 0;
          while (record.next()) {
              try {
                  // sendNotification(record.user.email, channelGr.subject, channelGr.body)
                  numSent += 1;
              } catch (err) {
                  gs.error('Error occurred: ' + err.message);
              }
          }
          return { total_count: totalCount, sent_count: numSent };
      })(responses, channelGr);
    7. 하위 플로우 알림 채널을 생성합니다.
      1. 연락 알림에 사용할 하위 플로우를 생성합니다.
        하위 플로우를 생성, 게시 및 테스트하는 방법에 대한 자세한 내용은 하위 플로우를 참조하십시오.
        생성하는 하위 플로우에서 다음 입력을 사용합니다.
        • 모드 (문자열)
        • akcnowledgements (sn_imt_checkin_check_in_acknowledgement 기록)

          모드가 승인인 경우 승인은 유효한 GlideRecord로 설정되고 survey_instancesnull입니다.

        • survey_instances (asmt_assessment_instance 기록)

          모드가 survey_instances이면 survey_instances이 유효한 GlideRecord로 설정되고 승인은null입니다.

        • 채널 (sn_imt_checkin_channels 참조)
        다음 출력은 선택 사항입니다.
        • total_count (정수)
        • sent_count (정수)

        이러한 출력을 검토하려면 총 승인 또는 설문 조사 수와 성공한 승인 또는 설문 조사 수를 비교하여 포함합니다.

      2. 하위 플로우 알림 유형을 선택합니다.
        스크립트 섹션이 플로우로 변경되고 하위 플로우 참조 필드가 나타납니다.
      3. 생성한 하위 플로우를 선택합니다.
    8. 제출을 클릭합니다.

    사용자 지정 알림 채널을 사용하여 연락을 보내면 연락 메시지에 배달 로그 관련 목록이 나타납니다.

    그림 1. 제공 로그 관련 목록
    실패한 로그 상태를 표시하는 제공 로그 관련 목록.
    1. 알림 채널에서 아웃리치 메시지를 테스트하고 실패한 기록을 열어 오류 메시지를 검토합니다.
    2. 알림 실패의 원인이 된 오류를 수정합니다.
    3. 더 이상 실패하지 않을 때까지 알림 채널을 계속 테스트합니다.

    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);