AWS클라우드 업무를 올해 새롭게 접하게 되면서 기존에 카카오톡, 회사메신저, 오피스 등 여러 채널을 통해서 소통을 하던것에 답답함을 느껴, 모든 채널을 Slack으로 통일하게 되었다.
사실 비슷한 메신저들도 많은 기능을 담긴 했지만, 개인적으로 이력이 관리되고 쓰레드, 허들, 특히
다양한 앱과의 연계를 통한 기능을 사용 할 수 있다는 점이 매력적이었다.
(기존 블로깅을 보면 slack을 통해 aws 과금 및 사용량 모니터링도 진행 중이다.)
2023.01.30 - [AWS/기능 소개 및 에러처리] - AWS 모니터링을 위한 Slack 연동(with AWS lambda, CloudWatch)
위의 글은 시간 날때 적용해 본다면 꽤나 업무의 자동화를 가져온다는 생각이 드니, 참고하면 좋을 것 같다.
5년째 회사를 다니면서 해결하지 못했던 문제가 있었는데, 그건 그날마다 점심을 뭐먹을지 고르는 것인데...
오죽하면 프로젝트를 나가서 구내식당을 다니던 때가 제일 마음이 편했다는 생각이 든다.
별일은 아닐 수 있지만, 회사 직원들 특히 팀원들 한테 이 질문을 하는 것이 팀원들 한테도 부담으로 느껴질 때가 있다고 하고, 나역시 식사를 대접할때도 어디를 가야할지 라는 생각에 조금은 쓸데없는(?) 생각에 빠지곤 한다.
그래서 이번에는 Slack을 통해 점심을 추천해 주는 간단한 Bot을 만들어 보려고 마음을 먹었고,, 자세한 과정은 아래에 표현했다.
1. Slack App 세팅
당연히 먼저 Slack Api 사이트로 접속한다.(https://api.slack.com/)
Create an App 버튼을 눌러 app생성.
From scratch를 클릭
AppName을 정하고 워크스페이스를 고른 뒤 앱 생성
슬랫 봇이 특정메세지나 멘션(업급)에 대해 반응해야 하기 때문에 사용자 이벤트를 읽어와야한다.
그러한 설정을 하기 위해 왼쪽의 EventSubscripton 메뉴로 들어가 Enable Events를 On상태로 바꾼다.
위의 방법을 사용해서 내가원하는 앱을 만들기 위한 서버를 구축해야 하지만, 1단계에서는 테스트를 위해
Slack의 Soket Mode를 사용해보려고한다. 왼쪽의 Socket Mode를 클릭하여 똑같이 Enable Socket Mode의 상태를 바꿔주도록 하자. (소켓 모드 생성 후 앱토큰은 꼭 카피해 놓도록 한다...!!)
위 처럼 소켓 모드를 활성화 하면 이벤트 리스너에서 아래와 같이 소켓 모드를 생성해서 값이 필요 없다고 한다.
위와 같이 완료했다면, Subscribe to bot events탭을 열어 이벤트를 추가하도록 하자.
나는 위와 같이 추가를 해줬으며 항상 중요한 앱의 권한등을 설정 하려고한다.
왼쪽 메뉴에서 OAuth & Permissions 로 들어가 Scope를 추가하자.
나는 위의 Scope를 추가했고 이제 위로가 Install To Workspace를 눌러 설치한다.
설치가 완료되면 bot token을 발행한다.
위의 작업 후에 나온 토큰까지 저장했다면 Slack의 워크스페이스로 이동해 앱을 구동할 채널로 간다.
채널의 세부정보로 들어가 통합 탭으로 들어가면 App을 추가할수 있는 화면을 확인 가능하다.
위 처럼 내가 미리 생성해둔 앱을 채널에 추가한다!!
그렇다면 채널에 아래와 같은 알람이 뜬다.
다음 순서로는 채널의 런치 봇과 대화를 하기 위한 코드 작성이다.
이는 slack_bolt기능을 이용하려고 한다.
공식 다큐먼트는 (https://slack.dev/bolt-python/concepts) 해당 링크를 참조하면 된다.
파이썬 코드를 작성해서 만들려고 하는데, 일단 서버는 aws의 lightsail를 사용하려고 한다.
lightsail의 경우 다양한 서비스를 빠르게 구성해주어서, 테스트 환경을 구성하는데에는 최적화 되어있다고 판단되서
이런 사이드 프로젝트를 할때 정말 많이 쓰고 있다. 다만 약간의 비용차이가 존재하니, 그점은 주의하길...
그럼 간단하게 lightsail을 구성하는 법도 안내하겠다.
상단의 Create instance를 클릭 한다.
나는 리눅스의 Django를 사용하려고 하여 해당 운영체제와 환경을 클릭한다.
해당 옵션까지 클릭했다면, 서버 스펙을 선택한다. 나는 달의 20$가 드는 옵션을 선택하고 생성했다.
aws에서는 10달러 옵션까지는 첫 3달을 무료로 제공한다.....
아래의 그림처럼 처음 생성하자마자는 인스턴스가 만들어지는 과정을 기다려야 한다 (약 2~3분 소요)
위의 두번쨰 그림 처럼 러닝으로 상태가 바뀌면, 빨간 박스의 버튼을 클릭하여 인스턴스로 접근한다.
올바르게 생성됐다면, 아래와 같은 상태 확인이 가능하다.
그렇다면 서버에서 파이썬 코드를 작성해보겠다!!
위 처럼 코드를 작성해 서 돌려주었고, 슬랙에서 테스트를 진행했다.
아주 기분좋게 성공했다!! 다음 번에는 특정 메세지를 통해 답변을 받는 방법등을 포스팅 해보려고 한다.
최종목표는 점심 메뉴 추천 봇이니까!! 그때까지 두편정도 나눠서 쓰지 않을까 싶다!
'Slack' 카테고리의 다른 글
Slack slash command와 AWS lambda를 활용한 대화형 EC2 Stop & Go 기능 개발(slack 메시지로 ec2 관리하기) (0) | 2023.07.21 |
---|---|
[Slack으로 점심 추천 봇 만들기 with lightsail(혹은 ec2), lambda -2 대학교를 위한 점심추천 봇 완성기] (2) | 2023.05.12 |