Google Apps Script를 사용하여 Slack 채널 가입 시 환영 메시지 보내기

TL;DR



zapier라는 편리한 도구가 있습니다
Slack이라든지 GAS라든지의 버전의 차이로 집착한 경우는 이것을 보면 좋다고 생각합니다.
htps //w w. 요츠베. 이 m/와 tch? v = 요 HsH8 Ang

완성형





참고



Slack API 공식 doc
Slack의 EventAPI와 GAS를 이용해 특정 채널에 join하면 welcome 메시지를 표시하는 Bot을 만들어 보았다
Slack Bot을 GAS로 좋은 느낌으로 쓰는 라이브러리를 만들었습니다.

해줘.



슬랙 앱 만들기



"Create New App"을 클릭하고 "App Name", "Development Slack Workspace"를 입력합니다.


Bot User 만들기



사이드바에서 "Bot Users"를 선택하고 "Add a Bot User"를 클릭합니다.
파라미터는 그대로 "Add Bot User"로 OK.


이 화면은 열린 상태로 둡니다.

Google Apps Script(GAS) 만들기



Google 드라이브를 열고 신규 > 기타 > Google Apps Script를 선택합니다.
다른 곳에 Google Apps Script가 없으면 "앱 추가"에서 연결하십시오.

일단 밸리데이션용의 코드를 기술한다.

코드.js
function doPost(e){
  var params = JSON.parse(e.postData.getDataAsString());
  return ContentService.createTextOutput(params.challenge);
}

function doGet(e){
  doPost(e);
}

GAS 공개


  • "공개"탭 > 웹 애플리케이션으로 소개



  • 반드시 프로젝트 버전은 New, 애플리케이션에 액세스할 수 있는 사용자에게는 모두(익명 사용자 포함)를 선택하는 것.
    2번째 이후는 프로젝트가 갱신되지 않거나 Slack에서 GAS를 실행할 수 없게 되거나 한다.
  • "도입"버튼을 클릭하면 다음 페이지가 나오므로, "현재 웹 애플리케이션의 URL"을 복사해 둔다.

  • Event Subscriptions 설정


  • Slack Bot 페이지로 돌아가서 사이드 바에서 "Event Subscriptions"를 선택하십시오.
  • "Enable Events"옆의 스위치를 ON으로 변경합니다.
  • Request URL에 복사한 URL을 입력하면 Verified라는 녹색 문자가 나온다.

  • 이것이 나오지 않으면 뭔가 이상하기 때문에 검토하십시오.

  • "Add Bot User Event"를 클릭하고 "member_joined_channel"을 선택한다.
  • "Save Changes"를 클릭합니다.

  • GAS 변경



    코드.js
    function doPost(e){
      var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN');
      var slackApp = SlackApp.create(token);
    
      var params = JSON.parse(e.postData.getDataAsString());
      var channelId = params.event.channel;
      var userId = params.event.user;
    
    
      var options = {
        channelId: channelId, // 参加したチャンネルのID、 #test などのチャンネル名でも投稿可能
        userName: "Welcome Bot", // 投稿するbotの名前
        message: "<@" + userId + "> Welcome!!! :zany_face:", // 投稿するメッセージ
      };
    
      slackApp.postMessage(options.channelId, options.message, {username: options.userName});
    }
    
    function doGet(e){
      doPost(e);
    }
    

    SlackApp 라이브러리 추가


  • "리소스"탭> 라이브러리를 열고 M3W5Ut3Q39AaIwLquryEPMwV62A3znfOO 추가 및 저장



  • SLACK_ACCESS_TOKEN 설정



    GAS 내에
    var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN');
    

    라고 써 있지만, 지금 그대로는 SLACK_ACCESS_TOKEN을 취득할 수 없기 때문에 설정한다.
  • Slack Bot 페이지의 사이드바에서 "OAuth & Permissions"를 선택한다.
  • "Install App to Workspace"를 클릭하여 App에서 액세스를 허용합니다.
  • TOKEN이 나오므로 "Bot User OAuth Access Token"을 복사한다.


  • GAS로 돌아가서 파일 > 프로젝트 속성 > 스크립트 속성을 엽니다.
  • "속성"에 "SLACK_ACCESS_TOKEN", "값"에 복사한 TOKEN을 넣어 저장한다.


  • 다시 웹 응용 프로그램으로 배포 절차를 수행합니다. (프로젝트 버전은 반드시 "New"로 설정해야합니다.)

  • 실행해보기



    응용 프로그램을 채널로 부르는 것이 좋습니다.


    Tips



  • Slack의 channelId는 브라우저에서 열면 확인할 수 있다(messages/뒤의 문자열)

  • 이 채널에서만 Welcome 메시지를 보내고 싶다면 이걸로 짜내면 좋지 않을까.
  • 앱이 들어있는 채널에서만 반응하므로 그렇게 필요하지 않을 것 같습니다.


  • 좋은 웹페이지 즐겨찾기