본문 바로가기
제가 왜 코딩을 하고 있을까요?/other

슬랙 메시지 발송 기능 만들기

by asj8000 2021. 8. 21.
반응형

오늘은 슬랙 메시지 발송 기능을 만들어 보려고 합니다.

 

※ 이 게시물에서 다루고 있는 내용은 5~10분 정도면 개발 가능한 분량입니다.

※ 예시 코드는 깃허브를 통해 제공해드리고 있습니다. 

 

목차.

1. 개발 동기

2. 슬랙 키 값 받기

3. 코드 개발

4. 글을 마치며

 

1. 개발 동기

사내에 크론탭 기능을 통해 스케쥴링으로 작동하고 있는 로직들이 있었습니다.

 

그중엔 마케팅용 푸시를 발송해주는 로직도 있는데요.

자체 분산 로직이 스케쥴링을 통해서 수십차례에 걸쳐 푸시가 발송되게 되는데

이를 2000건마다, 혹은 푸시 발송이 종료될 때 마다 슬랙으로 알람을 보내

 

현재 마케팅 푸시 발송 현황을 마케팅 담당자분께서 직접 확인할 수 있는 창구를 하나 추가해보면 좋겠다는 생각이 들었습니다.

 

사실... 필요해서 만든 기능은 아예 아니였고,,, "뭐 하나쯤 있으면 좋지 않을까?"의 느낌이었습니다.

정확히는 늦은 밤. 취침 직전에 심심해서 만들어본 기능입니다.

 

이 전에 슬랙 챗봇을 만들어본 경험이 있었기에 정말 쉽게 작업이 가능했습니다.

 

잡담이 길어졌네요 ㅎㅎ

10분 내로 빠르게 기능 구현을 완료해봅시다.

 

 

2. 슬랙 키 값 받기

우선 슬랙에서 메시지를 발송하기 위해선, 슬랙 api를 사용할 수 있는 토큰 키가 필요합니다.

 

슬랙 api 웹페이지 (https://api.slack.com/)로 가서 로그인 후,

Crete an app버튼을 눌러줍시다.

https://api.slack.com/

 

이동한 후 나온 페이지에서 Crete New App 버튼을 눌러줍시다

 

아래 두 항목 (앱 이름, 사용할 슬랙 채널)을 입력해줍니다.

그다음 나오는 페이지에서 어떠한 기능을 사용할 건지 물어봅니다.

Bots를 클릭해줍니다.

 

클릭 후, 좌측 메뉴 중 "OAuth & Permisssions"를 클릭하고,

해당 페이지에서 스크롤을 내려 Scope 항목을 찾아줍니다.

찾았다면, Bot Token Scopes 항목에서 Add on OAuth Token 버튼을 눌러. "calls:write"를 클릭해줍니다.

이후 해당 페이지 맨 위로 올려보면, "Install to Workspace" 버튼이 활성화되는데, 이 버튼을 눌러줍시다.

사용하려는 슬랙 방과 연결이 완료되면 아래와 같이 토큰이 뜨게 됩니다.

 

아래의 코드를 따로 복붙 해둡시다.!

 

이제 토큰을 성공적으로 발급받았고, 코드 개발을 하러 갈 차례입니다!

 

3. 코드 개발

언어는, 사내에서 스케쥴링을 돌리고 있던 언어가 마침 PHP였던지라,

PHP로 구성을 진행하였으며, POST메시지를 보낼 수 있는 언어라면 무엇이든 개발 가능합니다.

(사실상 거의 모든 언어에서 가능합니다.)

 

코드는 간단하게 깃에 업로드해두었습니다.

https://github.com/asj8000/slackPostMessage

 

GitHub - asj8000/slackPostMessage

Contribute to asj8000/slackPostMessage development by creating an account on GitHub.

github.com

 

코드 사용법은, 아래와 같습니다.

 

fnc.php의 12,15,16 Line에 맞는 채워 넣어주세요.

  12 Line "token" => "xoxb-1234-1234-1234", //유저 토큰 입력

  15 Line "username" => "PostMessage", //메시지에 보여질 발송자명

  16 Line "icon_emoji" => ":grinning:", //메시지에 보여질 프로필 아이콘 (슬랙 이모지에서 복붙 해오면 됨)

 

이후, postMessage.php에서 발송 채널과 발송 메시지를 설정한 후에 postMessage.php를 실행시키면 됩니다.

 

4. 글을 마치며

위에서 적었듯, 사실... 이 기능이 요청사항이 있다던지, 뭔가 필요해서 만든 기능은 아니였습니다.

담당자분께서 푸시 발송에 대해 실시간으로 팔로업할 수 있는 관리 페이지도 다양하게 있구요. ㅎㅎ

 

늦은 밤 취침 직전에 갑자기 자긴 싫고... 급 개발이 땅기기도 해서 만들어본 기능입니다. ㅋㅋㅋ

 

그래도 나름 짧게 끄적끄적 작업한 것 치고는 뿌듯한 것 같네요

기능의 완성도 <<<<|넘사벽|<<< 유저에게 호감을 사는 귀여움

 

 

스케쥴링으로 도는 기능이 PHP인지라, PHP로 기능 구성을 해보았습니다만,,

사실,, 슬랙 api에 post 요청 보내는 로직만 만들면 끝인지라, 어떤 언어든 충분히 개발 가능합니다.

 

 

추후에 기회가 된다면, 슬랙에서 작성한 메시지를 인식해, 

슬랙에서 사용자가 입력한 명령에 따라 작동을 해주는 슬랙 챗봇에 대해서도 다뤄볼까 합니다.

 

 

글을 읽어주셔서 감사합니다 :)

반응형

댓글