배경
- 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 생성 [golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성](https://blog.kakaocdn.net/dn/cYLVAd/btrNSVpEXuX/K0JVYYNYLqrAdEzVrgiENk/img.png)
3. app 이름 등록 ( 이건.. bot 의 이름이다. 변경 가능)
사용할 work space 등록
![[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성 [golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성](https://blog.kakaocdn.net/dn/x6WKn/btrNSWa2rM2/YBNKmD4ZmeffkGKqMBh5mK/img.png)
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 생성](https://blog.kakaocdn.net/dn/LNP1Q/btrNTfg7Pjq/KwBQLSJxbO5ltHZPVUjpd0/img.png)
![[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성 [golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성](https://blog.kakaocdn.net/dn/dhNwIt/btrNSXnswdq/fg6DrZUV135zv9HAX5gEM0/img.png)
5. 그리고 위로 가면 install 버튼을 눌러주자
![[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성 [golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성](https://blog.kakaocdn.net/dn/du7JWa/btrNPh8ENUS/RtVrf0kvkEJMJSCzmYxjnk/img.png)
6. 생성하게 되면 토큰값이 나온다.
코드에 필요한건, OAuth 토큰값, 채널ID 두가지가 필요
![[golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성 [golang] slack api 연동 bot 자동메시지 - 방법 - undefined - 1) BOT 생성](https://blog.kakaocdn.net/dn/ZAt6s/btrNPi0NvdK/IzJiRcyq880c9VMJSWBedK/img.png)
2) slack 채널 생성
1. 슬랙 채널생성, public으로 하자
2. 채널옆에 아래로 내리는 화살표를 누르면 채널 설정이 가능하다( 버전마다 버튼위치가 다르니 잘 찾아보자 )
![[golang] slack api 연동 bot 자동메시지 - 방법 - 2) slack 채널 생성 [golang] slack api 연동 bot 자동메시지 - 방법 - 2) slack 채널 생성](https://blog.kakaocdn.net/dn/csMvAl/btrNOUsgZEb/jFQfs14Pywq8PCvnMr97gk/img.png)
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) 테스트 [golang] slack api 연동 bot 자동메시지 - 방법 - 4) 테스트](https://blog.kakaocdn.net/dn/AJrcd/btrNOT1dYpX/amdOUtO4WilwIcNhokFBPK/img.png)
토큰과 채널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)
}
참고 유튜브
'Web > GoLang' 카테고리의 다른 글
[golang] grpc 윈도우에서 사용하기 위한 wsl (리눅스 환경 설정) (0) | 2022.10.18 |
---|---|
Golang: io.ReadWriter 의 content 를 날려먹지 않는 법 (1) | 2022.10.07 |
golang 디렉토리 구조 샘플 (0) | 2022.06.20 |
[golang] interface to sturct 인터페이스를 구조체로 변경하는 방법 (1) | 2022.06.07 |
[golang]Go에서 리플렉션을 통해 빈 값을 빠르게 감지하는 방법 (0) | 2022.05.24 |
댓글