Go에서 Slack Webhook 사용해보기
안녕하세요.
갈비만두를 좋아하는 개발자 임태빈입니다.
이번 포스팅에서는 Go에서 Slack Webhook을 사용하는 방법에 대해 공유드리겠습니다:)
1. Slack Webhook api 설치 및 url 받기
먼저 slack webhook을 사용하기 위해 api를 받아야합니다.
api 받는 내용은 여기를 참고하셔서 따라하신 다음에 web url만 잘 복사해서
메모장에 붙여놔주시면 감사하겠습니다.
2. Slack Webhook을 어떻게 쓸 것인가?
Slack Webhook을 활용할 예정인데 어떻게 사용할지 궁금하실 거라 생각합니다.
Slack Webhook에 경우 Rest API중 하나인 POST를 활용해서 Slack에 문자를 보낼 수 있습니다.
저도 이점을 이용해서 post로 메시지를 보낼 계획입니다:)
3. 코드 작성
코드 작성 내용을 보여드리겠습니다.
type Attachment struct {
Fallback *string `json:"fallback"`
Color *string `json:"color"`
PreText *string `json:"pretext"`
AuthorName *string `json:"author_name"`
AuthorLink *string `json:"author_link"`
AuthorIcon *string `json:"author_icon"`
Title *string `json:"title"`
TitleLink *string `json:"title_link"`
Text *string `json:"text"`
ImageUrl *string `json:"image_url"`
Fields []*Field `json:"fields"`
Footer *string `json:"footer"`
FooterIcon *string `json:"footer_icon"`
Timestamp *int64 `json:"ts"`
MarkdownIn *[]string `json:"mrkdwn_in"`
Actions []*Action `json:"actions"`
CallbackID *string `json:"callback_id"`
ThumbnailUrl *string `json:"thumb_url"`
}
type Payload struct {
Parse string `json:"parse,omitempty"`
Username string `json:"username,omitempty"`
IconUrl string `json:"icon_url,omitempty"`
IconEmoji string `json:"icon_emoji,omitempty"`
Channel string `json:"channel,omitempty"`
Text string `json:"text,omitempty"`
LinkNames string `json:"link_names,omitempty"`
Attachments []Attachment `json:"attachments,omitempty"`
UnfurlLinks bool `json:"unfurl_links,omitempty"`
UnfurlMedia bool `json:"unfurl_media,omitempty"`
Markdown bool `json:"mrkdwn,omitempty"`
}
func (attachment *Attachment) AddField(field Field) *Attachment {
attachment.Fields = append(attachment.Fields, &field)
return attachment
}
func (attachment *Attachment) AddAction(action Action) *Attachment {
attachment.Actions = append(attachment.Actions, &action)
return attachment
}
func (payload * Payload) AddAttachment(attachment Attachment) *Payload {
payload.Attachments = append(payload.Attachments, attachment)
return payload
}
func (payload * Payload) SendSlack(url string) {
client := &http.Client{}
b, err := json.Marshal(payload)
req, err := http.NewRequest("POST", url, bytes.NewBuffer(b))
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
data := string(body)
log.Println(data)
}
이 코드는 Slack에 대한 정보를 구조체를 만들고 전송하는 코드입니다.
이 내용을 사용하실 함수에 활용하시기만 하면 됩니다.
사용 방법은 슬랙에 보내고 싶은 내용을 attachment에 추가하고 sendSlack에 webhookurl을 입력해주시면 끝입니다.
이를 활용하시다면 아래 사진과 같은 결과를 얻으실 수 있습니다!!
4. 예제
활용 예제를 보시고 싶다면 여기를 참고해주세요!!
Author And Source
이 문제에 관하여(Go에서 Slack Webhook 사용해보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tae2089/Go에서-Slack-Webhook-사용해보기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)