chatter에서 Slack로 전송 (후편)

chatter로 입력한 메시지를 slack로 전달하는 과정을 소개합니다.
이 장에서는 Slack을 전송할 때 멘션을 붙이거나 여러 채널로 전송하는 방법을 소개합니다.

전편에서는 chatter의 투고문을 미리 지정한 Slack의 목적지에 전송하는 방법을 소개하고 있습니다
htps : // 코 m/쇼고스가노야/있어 ms/4bf1b7991아7445아351f

이미지





개요



전편에서는 「@」로 멘션을 붙여 chatter 투고를 해도, Slack에서는 멘션 통지가 되지 않고
일반 텍스트 그대로 출력됩니다.

이번에는 「@」로 Slack에서도 멘션 통지의 전송이 되는 처리를 추가합니다

송신처 채널에 대해서도 전편에서는 프로세스 빌더로 지정한 목적지에 고정해 전송됩니다만,
마찬가지로 '@'로 대상 채널을 지정할 수 있습니다.

구현 방법



스프레드시트



"slackID", "받는 사람 채널 목록"시트를 준비합니다.

'slackID'에서는 다음과 같은 테이블을 준비합니다.


성명
사용자 ID


@야마다 타로
???????

@ 다나카 지로
???????

@사토 유코
???????


성명을 키워드로하여 멤버에게 통지를하는 관리 테이블입니다.
Slack은 사용자 ID를 기반으로 멘션 알림을 제공합니다.

유저 ID의 조사 방법에 대해서는 이쪽↓
Slack 작업 공간에 속한 사용자 ID를 찾는 방법 및 절차 설명
h tps : // 아토를 r r. 이 m/bぉg/? p=27

"받는 사람 채널 목록"에서는 다음과 같은 표를 준비합니다.


키워드
채널 이름


@general
#general

@raodom
#random

@ 영업부
#영업부


키워드에 응답하여 해당 채널 대상으로 메시지를 보냅니다.

덧붙여서 아래와 같이 키워드를 복수 지정해 두어 가용성을 높이는 것도 가능합니다.


성명
사용자 ID


@야마다 타로
001

@ 다나카 지로
002

@사토 유코
003

@산
001


「@ 야마다 타로」에서도 「@ 야마 짱」에서도 야마다 타로 씨에게 통지가 날아갑니다.


키워드
채널 이름


@general
#general

@raodom
#random

@ 영업부
#영업부

@전체
#general


"@general"에서도 "@ 전체"에서도 #general에 통지가 날아갑니다.

GAS



chatter 게시 메시지를 멘션 알림이 날아갈 수 있도록 성형합니다.
GAS에서 다음 코드를 복사합니다.

chatter2slack.gs
/*
* post送信された時の挙動
*/
function doPost(e) {

  // chatterからの投稿本文
  var text = e.parameter.text;
  var message = text.replace('chatterから送信されました','');

  message = changeName2SlackId(message);
  changeChannelName(message);
}

/*
* 含まれたメンションをslackIDへ置換する
* 
* @param {string} msg - 送信メッセージ
*/
function changeName2SlackId(msg) {

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var idSheet = spreadsheet.getSheetByName('slackID');
  var idVal = idSheet.getDataRange().getValues();

  msg = msg.replace('','@');

  for(var i = 0; i < idVal.length; i ++) {

    if(msg.indexOf(idVal[i][0]) > -1) {

      msg = msg.replace(idVal[i][0], '<@' + idVal[i][1] + '>');
    }
  }
  return msg;
}

/*
* 指定したチャンネルへslack送信を行う
* 
* @param {string} msg - 送信メッセージ
*/
function changeChannelName(msg) {

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var channelSheet = spreadsheet.getSheetByName('宛先チャンネル一覧');
  var channelVal = channelSheet.getDataRange().getValues();

  var isSend = false;

  for(var i = 0; i < channelVal.length; i ++) {

    if(msg.indexOf(channelVal[i][0]) > -1) {

      sendSlack('ボット名','female_fairy',msg,channelVal[i][1]);
      isSend = true;
    }
  }

  // 宛先チャンネルが見つからない場合は、「general」へ送信する

  if(!isSend) {
    sendSlack('ボット名','female_fairy',msg,'#general');
  }
  return msg;
}

「sendSlack」는 다른 기사에서 기재가 있습니다

【Slack】Slack에서 Bot 개발하기【GAS】
htps : // 코 m / 쇼고 스가 노야 / ms / b6 아 4f5256c0 944 아 0f5


게시 탭에서 웹 애플리케이션으로 배포를 클릭합니다.



Current web app URL: 복사
Who has access to the app:은 "Anyone,even anonymous"를 선택합니다.

코드를 수정한 경우 적절하게 업데이트 버튼을 클릭합니다.

프로세스 빌더



채널을 임시 채널로 변경
Slack message 문장에 키워드를 설정합니다.
이번 키워드는 'chatter에서 전송됨'으로 설정합니다.

슬랙



사용할 작업 공간과 채널을 준비합니다.

전달 메시지를 받으려면 "Outgoing Webhook"을 설치하십시오.
Slack의 사이드바 앱에서 'Outgoing Webhook'을 검색하고 설치를 실행합니다.

Outgoing Webhook 설정하기

Slack에 추가를 클릭합니다.


Outgoing Webhook 통합 추가를 클릭합니다.

채널은 프로세스 빌더에서 설정한 채널 이름을 설정합니다.
트리거하는 단어도 프로세스 빌더에서 설정한 키워드를 설정합니다.
URL은 'GAS'로 복사한 URL을 붙여넣습니다.

동작 확인



chatter에서 스프레드시트에 설정한 키워드가 포함된 문장을 게시합니다.

좋은 웹페이지 즐겨찾기