My Note

自己理解のためのブログ

GoでSlackにMessageを投稿する( slack-go/slack )

今回は下記に書いたSlack APIでメッセージをPostする内容の更新版になります。

yhidetoshi.hatenablog.com

今回利用するライブラリは slack-go/slackです。

スター数も多いですしさまざまな機能が実装されているので今後はこちらを使っていこうと思います。

github.com

今回のコードを作成するにあたり参考にしたのは以下です。

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=***

実行した結果

f:id:yhidetoshi:20211217161002p:plain