본문 바로가기
Slack

Slack WebHook 사용하기

by SecuOf 2020. 4. 5.

개발자 그룹 또는 커뮤니티 그룹에서 많이 사용하는 메신저인 Slack의 WebHook 기능에 대해서 간단히 알아 보려고 한다. 

Slack의 경우 개발자 커뮤니티를 기반으로 폭팔적으로 성장해서 최근에는 회사 사내 메신저 또는 커뮤니티 그룹에서까지 많이 사용하고 있다. 필자도 사내 메신저로 Slack을 사용하고 있으며, 커뮤니티 참여시 Slack을 통해서 커뮤니티 활동을 영유 하는 많은 그룹에 속해 있다. 

 

개발자들이 Slack을 좋아한 이유는 아무래도 WebHook 및 App 생태계 활용을 할수 있는 장점 때문에 많이 선호하는 것으로 보인다.

 

그중에서 WebHook에 대해서 간단히 설정하는 방법 및 테스트 하는 방법에 대해서 알아 보고자 한다. 

 

Slack WebHook App 추가 하기

먼저 Slack WebHook을 자신의 입맞에 맞게 사용하기 위해서는 WebHook App을 Workspace에 추가 해야 한다. 

App 설치는 자신이 가입되어 있는 Space의 왼쪽 상단에서 확인 할수 있으며, 나타나는 Search box에 "webhook"을 검색 하면 아래와 같은 App들이 표시 되며 "Incoming WebHooks"를 확인 할수 있다. 

 

확인해 보면 "Outgoing WebHooks", "Cronhooks" 등등 여러가지 Alert App들을 볼수가 있다. 

 

Add 버튼을 누르면 Web Browser의 추가 화면으로 아래와 같이 이동히며,

위의 "Add to Slack"을 누르게 되면 WebHooks을 사용한 Channel 선택 화면이 나타나며, WebHooks을 활용할 채널을 선택후 "Add Incoming WebHooks integration" 버튼을 누르면 WebHooks 설정 화면으로 이동 한다. 

WebHook 셋팅 간략 설명

아래의 설정 화면을 간단히 설명 하자면, 

  • Post to Channel: WebHook을 보낼 Slack Channel 이름
  • Webhook URL: WebHook 요청을 보낼 URL (제일 중요함.)
  • Descriptive Label: WebHook에 대한 간단한 설명(여러 사용자가 같이 사용한다면, 가능하면 간단한 주석을 다는 것이 좋다.)
  • Customize Name: WebHook을 통해서 메시지를 보낼때 표시될 이름.
  • Customize Icon: WebHook 리스트에 표시 및 보내는 메시지에 표시되는 Image 또는 emoji
    • 이게 사실 필요 없을수도 있으나 여러 사람이 같이 WebHook을 사용하는 경우 동일한 이미지로 여러개의 WebHook이 존재 또는 보내질 경우 동일한 채널에서 이미지를 가지고도 바로 메시지의 의미를 파악할 수 있기 때문에 생각보다 유용하다. 간단히 말하면 사용자의 프로필 이미지 같은 존재이다.
  • Preview Message: 보내질 메시지의 미리보기

캡쳐 화면에는 표시가 되지 않았지만, 상단에 "Setup Instructions", Message Attachments"에 Request를 보내는 예시 방법이 나와 있다. 

 

PostMan을 이용한 Slack WebHook 테스트

여기서는 PostMan이라는 API 호출 테스트 프로그램을 사용할 것이다. 

PostMan은 아래의 주소에서 받으면 된다.

여기서는 PostMan에 대해서는 기술하지 않고 Slack WebHook을 테스트 하는 방법만 기술할 것이다. Chrome에서도 확장 프로그램으로도 지원하니 찾아 보면 생각보다 어렵지 않게 간단한 테스트는 진행이 가능하다. 테스트시 사용된 캡쳐화면은 맥에서 Program을 다운로드 받아서 설치후 테스트한 캡쳐 화면이다. 

 

여러가지 테스트 방법이 있지만 여기서는 POST request에 Body는 Json foramt으로 Webhook URL에 요청할 것이다. 

PostMan에 설정시 아래와 같이 선택 후 테스트 메시지를 넣어 주면 된다. 

  • Method: POST
  • Request Position: Body
  • Input Format: raw

위와 같이 설정 후 Body에 아래의 테스트 메시지를 넣어 준후 Send Button을 누른 후 Response의 Status가 200으로 표시된다면 정상적으로 메시지가 보내졌을 것이고 Slack에 메시지가 표시 될 것이다. 

{
	"fallback": "Required text summary of the attachment that is shown by clients that understand attachments but choose not to show them.",

	"text": "Optional text that should appear within the attachment",
	"pretext": "Optional text that should appear above the formatted data",

	"color": "#36a64f", // 해당 Color Code에 색을 다르게 입력해서 경고 표시로 활용도 가능함. 

	// 아래의 필트 메시지는 Color code 뒤로 들여쓰기 형태로 표시 된다. 
	"fields": [
		{
			"title": "Required Field Title", // The title may not contain markup and will be escaped for you
			"value": "Text value of the field. May contain standard message markup and must be escaped as normal. May be multi-line.",
			"short": false // Optional flag indicating whether the `value` is short enough to be displayed side-by-side with other values
		}
	]
}

 

 

Slack WebHook 메시지 확인

정상적으로 메시지가 보내졌다면 설정한 Channel에 아래와 같이 메시지가 표시 될 것이다.