Web/GoLang

[golang] slack api 연동 bot 자동메시지

벨포트조던 2022. 10. 5.
반응형

배경 

- go 로 연동을 slack 연동 처음 해봄 

- 앞으로 최대한 간략히 작성한다. 

 

공식사이트

https://github.com/slack-go/slack

 

방법

1) BOT 생성

1. 슬랙 api 홈페이지로 가서 Your Apps 를 누른다. (로그인 부터 해야함!)
https://api.slack.com/

 

2. 앱생성

[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성

3. app 이름 등록 ( 이건.. bot 의 이름이다. 변경 가능)

사용할 work space 등록 

 

[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성

4. OAuth & Permissions -> Scope 에 chat:write , chat:write:public ,  channels:read 등록 

 

[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성

 

5. 그리고 위로 가면 install 버튼을 눌러주자

[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성

6. 생성하게 되면 토큰값이 나온다. 

코드에 필요한건, OAuth 토큰값, 채널ID 두가지가 필요 

[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성

 

2) slack 채널 생성

1. 슬랙 채널생성, public으로 하자

2. 채널옆에 아래로 내리는 화살표를 누르면 채널 설정이 가능하다( 버전마다 버튼위치가 다르니 잘 찾아보자 )

[golang] slack api 연동 bot 자동메시지 - 방법 - 2) slack 채널 생성

integration -> app 에 아까 등록했던 bot name을 찾아서 등록하면 끝 ! 

 

3) 채널ID 확인

https://help.socialintents.com/article/148-how-to-find-your-slack-team-id-and-slack-channel-id

채널ID는 이게 가장 최신으로 확인하기 쉽다. 

웹 슬랙으로 접근해서 url의 path 파라미터에 등록되어있다.

 

이로서 토큰과 채널id를 알았다.

 

4) 테스트

https://api.slack.com/methods/chat.postMessage/test#warnings

[golang] slack api 연동 bot 자동메시지 - 방법 - 4) 테스트

토큰과 채널id를 입력해서 테스트를 돌려서 지금까지 잘 됐는지 확인

 

5)  코드 작성

package main

import (
    "fmt"

    "github.com/slack-go/slack"
)

func main() {
    api := slack.New("xoxb-159420(생략)")
    attachment := slack.Attachment{
        Pretext: "내가 잘해야!",
        Text:    "모두가 편하다 삐빕",
    }

    channelID, timestamp, err := api.PostMessage(
        "일반",
        slack.MsgOptionText("", false),
        slack.MsgOptionAttachments(attachment),
        slack.MsgOptionAsUser(false), // Add this if you want that the bot would post message as a user, otherwise it will send response using the default slackbot
    )
    if err != nil {
        fmt.Printf("%s\n", err)
        return
    }
    fmt.Printf("Message successfully sent to channel %s at %s", channelID, timestamp)

}

 

참고 유튜브

 

반응형

댓글