티스토리 뷰

develop etc../etc

Slack Slash Commands -2

055055 2020. 2. 15. 15:51
반응형

 

이전 글에서는 Slack Api를 통해 lunch-bot Slash Command를 만들었다.

그러나 '/점심' 이라는 요청 값을 입력했을 때 응답을 줄 API 서버가 없었다.

Slack API 통신 규약을 살펴보며, 간단한 API 서버를 만들고자 한다. 

 

1. Slack API 통신규약

https://api.slack.com/interactivity/slash-commands

Slack에서 Request시 POST 메소드로 요청한다. 필요하다면  channel_name, text등의 요청 값을 활용할 수 있다.

Response값을 줄때는 3초가 넘으면 타임아웃이 발생하며, application/json 타입으로 아래와 같이 응답 값을 주면 된다.

 

응답 예시

 

 

 

2.  api 프로젝트  생성

Springboot를 이용하여 간단하게 '짜장면'을 리턴하는 프로젝트를 만들어봤다. 필요에 따라 Enum Type 또는 DB를 이용하여 랜덤하거나 날씨에 따른 응답 값을 적절히 주면 된다. 또한, 위 예제와 같이 응답값 type을 Markdown으로 줄 수도 있다.

Controller

 

Response DTO

 

3. ngrok를 설치하여, 외부에서 접근 가능하도록 설정

외부에서 접속할 수 있는 AWS, GCP 등을 이요하면 좋지만, 대부분 이런 tutorial은 localhost를 통해서 진행할 수 밖에 없다. ngrok는 네트워크 환경 설정이나 포트 포워딩 없이 안전하게 외부에서 내 localhost로 접근 가능하도록 도와주는 도구이다.

ngrok설치는 아래 블로그의 도움을 받아서 진행하였다.

https://phoby.github.io/ngrok/

 

ngrok으로 외부에서 로컬 서버 접속 환경 구성

ngrok

phoby.github.io

Mac 환경 기준

brew cask install ngrok

 

로컬에서 실행중인 서버 포트가 8080이라 가정하고 아래 명령어를 실행한다.

ngrok http 8080

 

http://5952c577.ngrok.io 주소를 입력하면 외부에서 localhost:8080 으로 접속할 수 있도록 해준다. 

무료 버전은 명령어 접속을 종료하게 되면, 새로운 주소로 URL을 다시 받게 된다. 기본 Session시간은 8시간이며, 위 블로그를 보면 8시간 이상으로 Session을 유지시킬 수 있는 방법도 소개해준다.  

 

 

4. Slack Slash Command Request URL 수정

다시 슬랙으로 가서 Request URL에 ngrok에서 할당받은 주소(http://5952c577.ngrok.io) + API Path(/slack/lunch)를 입력하자.

 

그리고 Slack Slash Command 호출!!

 

 

 

 

추가로 서버로 Slack에서 들어온 요청이 유효한 요청인지 아닌지 검증하는 프로젝트를 만드신 분이 있어서, 좋은 정보라 생각하여 공유 드립니다.

https://hojak99.tistory.com/557?category=760416

 

[Spring] Slack Slash Command - 5

이번 글에서는 코드로 살펴보도록 하겠습니다. ■ data payload data payload 를 사용해야 하기 때문에 저는 객체에 매핑이 되도록 해주었습니다. 여기서 놓치지 말아야 할 부분은 slack 에서는 data payload 을..

hojak99.tistory.com

 

 

 

 

참고 :

http://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8438948708

 

Slack : 13. 나만의 슬래시 커맨드 만들기(1/2)

지금까지 구글 드라이브나 트렐로처럼 널리 사용하는 도구들을 슬랙에 통합하는 방법을 알아보았습니다. 슬랙은 주요한 협업 서비스나 인터넷 서비스와의 연동을 제공하므로 웬만한 경우에는 슬랙 앱 디렉터리만으로도 충분할 것입니다. 하...

www.hanbit.co.kr

https://phoby.github.io/ngrok/

 

ngrok으로 외부에서 로컬 서버 접속 환경 구성

ngrok

phoby.github.io

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함