GoでSlackにMessageを投稿する( slack-go/slack )
今回は下記に書いたSlack APIでメッセージをPostする内容の更新版になります。
今回利用するライブラリは slack-go/slackです。
スター数も多いですしさまざまな機能が実装されているので今後はこちらを使っていこうと思います。
今回のコードを作成するにあたり参考にしたのは以下です。
Slack APIのリファレンス (Reference: Secondary message attachments) api.slack.com
slack-go/slack/examples/messages/messages.go
- exampleを用意してくれています
slack-go/slack/atattchments.go
main.go
package main import ( "fmt" "os" "github.com/slack-go/slack" ) var ( SLACK_TOKEN = os.Getenv("SLACK_TOKEN") CHANNEL_ID = os.Getenv("CHANNEL_ID") ) func main() { api := slack.New(SLACK_TOKEN) attachment := slack.Attachment{ Pretext: "This is slack post test by Go", Title: "title", Color: "#36a64f", AuthorName: "author_name", AuthorIcon: "https://placeimg.com/16/16/people", MarkdownIn: []string{"`textTomarkdown`"}, Text: "hello world `textTomarkdown`", ThumbURL: "http://placekitten.com/g/200/200", FooterIcon: "https://platform.slack-edge.com/img/default_application_icon.png", Fields: []slack.AttachmentField{ slack.AttachmentField{ Title: "Item1", Value: "this is value of item1", Short: false, }, slack.AttachmentField{ Title: "Item2", Value: "this is value of item2", Short: true, }, slack.AttachmentField{ Title: "Item3", Value: "```" + "this is value of item3" + "```", Short: false, }, }, } channelID, timestamp, err := api.PostMessage( CHANNEL_ID, slack.MsgOptionText("This is Title", false), slack.MsgOptionAttachments(attachment), slack.MsgOptionAsUser(true), ) if err != nil { fmt.Printf("%s\n", err) return } fmt.Printf("Message successfully sent to channel %s at %s", channelID, timestamp) }
必要な接続情報は環境変数化しているので適宜設定してください。 OAuthTokenの確認はこちらの記事に記載しています。
【アップデート】GuardDutyの結果をLambda ( Go ) でSlackに通知する - My Note
投稿するチャンネルIDは各チャンネルの詳細で確認できます。
export SLACK_TOKEN=xoxb-*** export CHANNEL_ID=***
実行した結果