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. 앱생성

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

사용할 work space 등록 

 

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

 

 

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

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

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

 

 

2) slack 채널 생성

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

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

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

토큰과 채널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)

}

 

참고 유튜브

 

반응형

댓글