정보공유2021. 9. 15. 15:42

파이썬이나 어플리케이션을 만들어서 슬랙봇을 이용해서 슬랙 채널에 메세지를 자동화 할 수 있다.

 

 

 

1. Webhook URL 을 이용하는 방법

 

 

 

 

 

일단, 슬랙에 webhook 을 추가해야 한다.

 

슬랙에서 [더보기] -> [앱] 을 눌러서, incoming webhooks 를 추가한다.

 

 

 

 

 

 

추가 버튼을 누르면 아래와 같은 webkhook 설정 화면이 나온다.

 

 

 

 

채널에 포스트

슬랙봇 메세지를 수신할 채널(채팅방)을 선택한다.

이미 만들어진 채널을 선택 할 수 있고, 1:1 대화방이나, 자기 자신을 선택할 수 있다.

또는, 새 채널 생성 으로 새로 만들어서 진행 할 수 도 있다.

 

웹후크 URL

일종의 웹토큰으로, 슬랙봇에서 메세지를 보낼때는 별도의 로그인없이. 웹후크 URL 만 알면, 메세지를 보낼 수 있다.

해당 주소를 복사해서 저장해 놓자.

 

이름 / 이미지는 슬랙봇의 이름과 이미지이므로 필요하면 설정하면 된다.

 

 

 

 

설정저장 버튼만 누르면, 준비는 끝난다.

 

 

위에서 저장한 웹후크 URL 로 바로 메세지를 날릴 수 있다.

 

cmd 창에서 curl 을 통해 아래와 같이 하면, 바로 메세지를 바로 전송해 볼 수 있다.

 

 

첫번째 예제 : 메세지 보내기

 

curl -X POST --data-urlencode "payload={\"text\":\"hello\r\nit's my test\"}" https://hooks.slack.com/services/T028FNHBY0Y/B02EFULB2AX/QdIhJkolfuh0Sz1********

 

성공한 경우 리턴값은 문자열로 ok 라고 나온다.

 

 

두번째 예제 : 메세지 + 이름 + 아이콘

 

첫번째로 메세지만 넣어서 보내면, 설정한 이름/아이콘으로 봇이 표시되지만,

봇의 이름/아이콘도 바꿔서 보낼 수 있다.

 

curl -X POST --data-urlencode "payload={\"username\": \"webhookbot\", \"icon_emoji\": \":ghost:\", \"text\":\"hello\r\nit's my test\"}" https://hooks.slack.com/services/T028FNHBY0Y/B02EFULB2AX/QdIhJkolfuh0********

 

 

 

 

위의 예제는 curl 을 이용한 테스트였고, postman 어플리케이션을 통해서도 테스트 해볼 수 있다.

 

 

 

 

웹후크URL 을 넣어주고 POST 방식으로 설정한다.

 

Body 에는 json 형식으로 넣어준다.

 

Send 를 누르면, 결과가 나온다. => ok

 

 

 

 

 

 

2. OAuth token 을 이용하는 방법

 

웹브라우저의 주소창에 아래 주소를 치고 들어간다.

 

https://api.slack.com/

 

Create an app 을 누르고, 나오는 화면에서 From scratch 를 선택한다.

 

 

 

 

 

App Name 에 봇의 이름을 적어준다.

아래에는 메세지를 전송할 Workspace 를 선택한다.

 

 

 

 

다음 화면에서, OAuth & Permissions 를 선택하고, 스크를을 아래로 내리면,

 

 

 

 

Scopes 선택화면이 나온다.

Add an OAuth Scope 를 눌럿, chat:write 를 선택한다.

 

 

 

 

다시 스크롤을 위로 올려서, Install to Workspace 를 눌러준다.

 

 

 

 

생성된 OAuth Token 을 복사해서 저장해준다.

 

 

여기까지 작업을 하면, 이제 해당 Workspace 에 메세지를 보낼 수 있는 봇이 생성이 된것이다.

 

이제, 봇이 메세지를 보내게 되는 채널(채팅방) 을 설정해야 한다.

 

 

 

슬랙으로 가서, 메세지를 수신할 채널정보를 보면 하단에, 채널 ID 가 있다.

 

 

OAuth Token 과 함께 채널 ID 도 함께 저장해 두자.

메세지를 보낼 때 이 2개의 값만 있으면, 메세지를 채널로 보낼 수 있게 된다.

 

통합을 눌러서, 앱 추가 를 눌러서, 아까 생성한 봇을 선택한다.

 

 

 

 

이제, cmd 창에서 curl 명령어로 TEST 메세지를 보낼 수 있다.

 

1. 인증테스트로 OAuth Token 이 올바른지 확인한다.

 

Authorization: Bearer 뒤에 아까 받은 token 을 입력한다.

curl -H "Authorization: Bearer xoxb-2505273309281-***********************************" https://slack.com/api/auth.test

 

결과는 json 으로 나오며, "ok": true 로 나오면 성공한 것이다.

 

 

2. 메세지 전송 테스트

 

Authorization: Bearer 뒤에 아까 받은 token 을 입력한다.

channel= 뒤에 채널ID 를 넣어준다.

curl -d "text=it is just test message" -d "channel=C02********" -H "Authorization: Bearer xoxb-2505273309281-*******************************" -X POST https://slack.com/api/chat.postMessage

 

결과는 json 으로 나오며, "ok": true 로 나오면 성공한 것이다.

 

 

슬랙에서는 위와같이 메세지가 오게 된다.

 

 

Posted by 헝개