slack 으로 메세지를 보내는 API를 이용하고 싶어서 API 문서를 이용해 스크립트를 만드는 과정에서의 에러를 기록한다.
내가 이용하고자 했던 API는 이 Slack 문서에 있는 것으로, Slack Apps 페이지에서 App 을 만들고 봇의 권한을 설정한 후 토큰을 발급받아 진행했다.
목표는 mac terminal 의 shell script 로 메세지 전송을 하는 것이었다.
가장 간단한 형태로 구현하기 위해 터미널에서 curl 명령어로 테스트를 해보았다.
필요한 값들은
xoxb-your-bot-token
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 에서는 엄격하게 쌍따옴표로 해주어야 성공하는 것 같았다.