Slackbot API 중 Webhooks,Web API를 이용한 메시지 보내기

문서목적


이 문서는 Slackbot에 대해 학습한 부분을 정리하기 위해 작성하였다.
이 문서에서 Slackbot과 관련된 모든 내용을 정리하는 것은 아니며, 자세한 내용은 문서에 포함되어 있는 공식 사이트를 참고하도록 한다.

학습 범위


아래와 같은 내용 포함하고 있다.

  • 특정 채널에 Slackbot으로 메시지 보내기

    • Webhooks API를 이용한 메시지 전달

    • Web API를 이용한 메시지 전달

  • 특정 채널에 예약 메시지 보내기

본 문서에 포함된 테스트는 워크 스페이스에 test-slackbot이라는 채널을 만들어 진행하였다. 아래 정리한 내용은 공식 사이트에 관련 내용이 문서로 있으며 문서 참고 시 필요한 내용을 위주로 기록하였다.

특정 채널에 Slackbot으로 메시지 보내기


Slackbot webhook API를 통한 메시지 전달

Slackbot webhook API로 특정 채널에 메시지를 보내기 위해서는 아래와 같은 작업을 진행해야 한다.

  1. 메시지를 보내고 싶은 슬랙 워크스페이스에 슬랙앱을 생성한다.

  2. 슬랙앱에 Webhook을 추가한다.

  3. 생성한 Webhook을 슬랙 워크스페이스의 특정 채널에 추가한다.

위의 작업을 완료하면 설정한 채널에 Webhook API를 이용하여 메시지를 보낼 수 있다. 슬랙 앱 Webhook 콘솔에 보면 Sample curl request이 있는데 이것을 복사해 메시지가 정상적으로 보내지는 지 확인 할 수 있다.

위에 기술된 작업 내용은 슬랙 공식 사이트 Webhook 문서를 참조해 진행하도록 한다.

이 문서의 내용 중 Getting started with Incoming Webhooks 항목의 1~4번 내용을 따라하면 된다.

위의 링크 문서 내용 중 슬랙으로 Webhook API를 이용해 메시지 보내는 샘플 명령어와 결과는 아래와 같다. 

$ curl -X POST -H 'Content-type: application/json' --data '{"text":"Hello, World!"}' https://hooks.slack.com/services/{token}

결과는 다음과 같다. 슬랙 채널 #test-slackbot에 가면 결과를 바로 볼 수 있다. 

Slackbot web API를 통한 메시지 전달

Slackbot web API로 특정 채널에 메시지를 보내기 위해서는 아래와 같은 작업을 진행해야 한다.

  1. 메시지를 보내고 싶은 슬랙 워크스페이스에 슬랙앱을 생성한다.

  2. 슬랙앱에 채널 메시지 읽기, 쓰기에 대한 권한을 부여한다.

  3. 발급된 토큰을 가지고 Message payload를 만들어 전송한다.

위의 작업을 통해 설정한 채널에 Web API를 이용하여 메시지를 보낼 수 있다. 위에 기술된 작업과 관련된 자세한 설명은  슬랙 공식 사이트 Web API 문서를 참조해 진행하도록 한다.

Web API, Webhook API 차이점은 web API가 더 많은 부분들을 커스터마이징해 메시지를 보낼 수 있다는 것이다. 기본적인 메시지 기능을 주로 쓴다고 하면 Webhook API를 이용하는 것이 편리하다.

아래의 명령어는 실제 메시지를 채널에 보낼 때 Slackbot의 이름과 채널을 변경할 수 있는데 권한과 다양한 옵션들을 통해 여러 가지 기능들을 수행할 수 있다.

위의 링크 문서 내용 중 슬랙으로 Web API를 이용해 메시지 보내는 샘플 명령어와 결과는 아래와 같다. 

$ curl -X POST -d "token={token}3&channel=#test-slackbot&text=“asdasd”&username=seongwoo" https://slack.com/api/chat.postMessage

결과는 다음과 같다. 슬랙 채널 #test-slackbot에 가면 결과를 바로 볼 수 있다. 

특정 채널에 Slackbot으로 예약 메시지 보내기


특정 채널에 Slackbot으로 메시지를 보낼 수 있는 방법에 대한 구체적인 설명은  슬랙 공식 사이트 스케줄링 메시지 전송 문서를 참고하도록 한다.

메시지를 보낼 때 유의해야 되는 부분은 chat.scheduleMessage API의 필수 파라미터 중 “post_at” 필드는 Unix EPOCH timestamp이므로 메시지 예약하고자 하는 시간을 Unix EPOCH timestamp으로 변환해 값을 넣어야 한다는 것이다.

위의 링크 문서 내용 중 슬랙으로 예약된 메시지를 보내는 샘플 명령어와 결과는 아래와 같다. 

$ curl -X POST -H 'Authorization: Bearer {token}' \
-H 'Content-type: application/json' \
--data '{"channel":"#test-slackbot","text":"I hope the tour went well, Mr. Wonka.", "post_at":"1571730289"}' \
https://slack.com/api/chat.scheduleMessage

결과는 다음과 같다. 슬랙 채널 #test-slackbot에서 예약된 시간에 결과를 볼 수 있다. 

댓글남기기