Golang에서 Slack에 이미지 게시
Golang에서 Slack API를 사용하여 이미지 게시
Overview
golang을 사용하여 이미지 파일을 슬랙에 게시합니다.
slack api를 사용하지만 텍스트를 게시하는 것과는 약간 다른 준비가 필요하기 때문에 이미지 게시까지의 절차를 정리했습니다.
Contents
사전 준비
게시에 필요한 권한 정보
slack에 이미지를 게시하려면 files.upload 범위가있는 api token이 필요합니다.
*files.upload의 경우 여기
상기를 만족하는 스코프는
1. bot
2. files:write:user
의 2 종류가 있으므로, 이번은 bot 스코프를 이용합니다.
참고로 files : write : user의 범위를 사용하면 slack에 대한 이미지 게시자가 토큰 작성자가됩니다.
작성자에 의한 투고와 api에 의한 투고의 구별이 없어져 버리기 때문에, bot 스코프에 의한 투고를 추천합니다.
slack api token 얻기
Slack API | Slack로 이동하여 Your Apps에서 bot를 생성하십시오.
생성이 완료되면 다음 Bot User OAuth Access Token에서 bot 권한을 가진 api token을 얻을 수 있습니다.
이 토큰을 사용하여 slack에 이미지를 게시합니다.
이미지를 게시하는 코드
취득한 bot 스코프를 가지는 api token 과, 이미지를 투고하는 채널명을 설정합니다.
실제 환경에서 작동하는 경우 환경 변수로 설정 한 다음 os.Getenv ()를 통해 api token을 수신하십시오.
package main
import (
"os"
"github.com/nlopes/slack"
)
var (
slackAPIToken = "<先ほど取得した, bot スコープを持つ api token>"
slackChannel = "<画像を投稿するチャンネル名>"
)
func main() {
if err := postImage(slackAPIToken, slackChannel); err != nil {
panic(err)
}
}
func postImage(slackAPIToken, slackChannel string) error {
file, err := os.Open("<投稿する画像へのパス>")
if err != nil {
return err
}
api := slack.New(slackAPIToken)
_, err = api.UploadFile(
slack.FileUploadParameters{
Reader: file,
Filename: "upload file name",
Channels: []string{slackChannel},
})
return err
}
위의 코드를 호출하면 변수 slackChannel에 지정된 slack channel에 이미지가 게시됩니다.
텍스트를 게시하는 경우
bot 범위에는 이미지를 게시 할 수있는 권한 (chat.postMessage)도 있습니다.
따라서 이전에 설정한 환경에서 텍스트를 게시 할 수 있습니다.
텍스트를 게시하는 코드
package main
import (
"os"
"github.com/nlopes/slack"
)
var (
slackAPIToken = "<bot スコープを持つ api token>"
slackChannel = "<画像を投稿するチャンネル名>"
)
func main() {
if err := postText(slackAPIToken, slackChannel); err != nil {
panic(err)
}
}
func postText(slackAPIToken, slackChannel string) error {
text := "This is test."
api := slack.New(slackAPIToken)
_, _, err := api.PostMessage(
slackChannel,
slack.MsgOptionText(text, false))
return err
}
주의사항
이번 slakc api에서는,
두 가지를 구별하기 위해 bot 권한을 사용했습니다.
그러나 지금까지 보았듯이,
“이미지를 업로드할 수 있는 권한을 주면 텍스트를 올릴 수 있게 되었다”
의도하지 않은 권한 부여가 발생하기 때문에 bot 범위의 남용에는주의하십시오.
참조 사이트
Reference
이 문제에 관하여(Golang에서 Slack에 이미지 게시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RuyPKG/items/5ac07ddc04432ee7641b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)