Slack Message API with shell script

Sangwoo Park·2024년 5월 23일
1

slack 으로 메세지를 보내는 API를 이용하고 싶어서 API 문서를 이용해 스크립트를 만드는 과정에서의 에러를 기록한다.

내가 이용하고자 했던 API는 이 Slack 문서에 있는 것으로, Slack Apps 페이지에서 App 을 만들고 봇의 권한을 설정한 후 토큰을 발급받아 진행했다.

목표는 mac terminal 의 shell script 로 메세지 전송을 하는 것이었다.
가장 간단한 형태로 구현하기 위해 터미널에서 curl 명령어로 테스트를 해보았다.

필요한 값들은

  • bot token: xoxb-your-bot-token
  • channel id: your-channel-id

이 값들을 이용해 curl 명령어를 아래와 같이 작성해 메세지 발송에 성공하였다.

curl -X POST https://slack.com/api/chat.postMessage \
-H 'Authorization: Bearer xoxb-your-bot-token' \
-H 'Content-Type: application/json' \
-d '{
    "channel": "your-channel-id",
    "text": "Hello, this is a test message from the Slack API!"
}'

이 스크립트를 그대로 아래와같은 executable bash shell script 로 작성해 실행해보았다.

#!/bin/bash

# Variables
OAUTH_TOKEN="xoxb-your-bot-token"
CHANNEL_ID="your-channel-id"
MESSAGE="Hello, this is a test message from the Slack API!"

# Function to post a message to Slack
post_message_to_slack() {
  curl -X POST https://slack.com/api/chat.postMessage \
  -H 'Authorization: Bearer $OAUTH_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "channel": "$CHANNEL_ID",
    "text": "$MESSAGE"
  }'
}

그런데 결과는 계속 invalid_auth 가 나왔다.

GPT에게 해답을 물었고, 원인은 single quote 와 double quote 의 차이였다. script 에서 header 를 넣어주는 부분을 쌍따옴표로 바꿔주니 성공했다.

#!/bin/bash

# Variables
OAUTH_TOKEN="xoxb-your-bot-token"
CHANNEL_ID="your-channel-id"
MESSAGE="Hello, this is a test message from the Slack API!"

# Function to post a message to Slack
post_message_to_slack() {
  curl -X POST https://slack.com/api/chat.postMessage \
  -H "Authorization: Bearer $OAUTH_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"channel\": \"$CHANNEL_ID\",
    \"text\": \"$MESSAGE\"
  }"
}

터미널에서는 curl 명령어에서 홑따옴표를 쌍따옴표로 바꿔 적용이 가능한 것 같은데, shell script 에서는 엄격하게 쌍따옴표로 해주어야 성공하는 것 같았다.

profile
going up

0개의 댓글