웹훅에 대하여

웹훅은 얼러트가 트리거 될 때마다 특정 URL 에 대한 POST 리퀘스트를 보낼 수 있게 해 줍니다. 이 피처는 얼러트를 만들거나 에디트할 때 켤 수 있습니다. 여러분의 앱에 대한 올바른 URL 을 넣으면 얼러트가 트리거되자 마자 POST 리퀘스트를 보내줍니다. 리퀘스트 바디에 얼러트 메시지를 담아 보냅니다. 얼러트 메시지가 밸리드한 JSON 이면 "application/json" content-type header 를 가진 리퀘스트를 보냅니다. 아니면 "text/plain" 을 content-type header 로 보냅니다.

중요 보안 공지: 웹훅을 구성할 때는 로그인 자격증명이나 비밀번호와 같은 민감한 정보를 웹훅 본문에 포함시키지 않도록 주의하세요. 웹훅을 통해 민감한 데이터를 전송하면 권한이 없는 사람에게 노출되어 보안 취약점이 발생할 수 있습니다. 항상 안전하고 인증된 엔드포인트를 사용하고 민감한 데이터를 암호화하여 정보를 보호하세요.

퍼미션이 필요한 경우 POST 리퀘스트를 보낼 때 쓰는 IP 어드레스 리스트입니다:

  • 52.89.214.238
  • 34.212.75.30
  • 54.218.53.128
  • 52.32.178.7

포트 넘버를 가진 URL 리퀘스트를 보내고 싶다면 포트 넘버 80 과 443 만 받아 들입니다.

다른 포트를 가진 URL 은 모두 리젝트됩니다. 리퀘스트 프로세싱에 리모트 서버가 3초가 넘게 걸리면 그 리퀘스트는 캔슬됩니다. 그리고 IPv6 는 아직 웹훅과는 안 돌아가지만 앞으로는 언젠가 될 수 있도록 하겠습니다.

많은 앱과 서비스는 웹훅으로 받는 데이터를 플레인 텍스트가 아닌 JSON 포맷으로 받으려 합니다. 얼러트 메시지는 디폴트로JSON 포맷으로 되어 있습니다. 리퀘스트를 보내기 앞서 해당 앱이나 서비스 도큐먼트를 읽고 여러분의 얼러트 메시지를 알맞게 포맷하십시오. JSON 포맷은 위키에 잘 나와 있습니다.

보기로, 슬랙은 “text” 를 키로 하는 JSON 포맷의 메시지를  기다립니다. 메시지 박스에 다음과 같이 쳐 넣을 수 있습니다:

{"text": "BTCUSD Greater Than 9000"}

메시지가 밸리드한 JSON 이므로 

Since the message is a valid JSON, we will send a request with an "application/json" content-type header 를 가진 리퀘스트를 보냅니다. 리퀘스트는 cURL 을 써서 다음과 같습니다:

curl -H 'Content-Type: application/json; charset=utf-8' -d '{"text": "BTCUSD Greater Than 9000"}' -X POST https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX

여러분의 메시지가 플레인 텍스트라면 (그러니까 디폴트 얼러트 메시지를 쓰고 있다면 "plain/text" content-type header 를 가진 리퀘스트를 보냅니다.

cURL:

curl -H 'Content-Type: text/plain; charset=utf-8' -d 'BTCUSD Greater Than 9000' -X POST https://webhook.site/test

데이터 보호를 위해 2팩터 인증이 활성화된 경우에만 얼러트 웹훅을 쓸 수 있습니다.