[Go] Slack API を使ってメッセージを投稿する
作成日: 2021年08月22日
Slack API を使ってメッセージを投稿する Go のサンプルコードです。サンプルコードの簡略化のためエラー処理は簡略化しています。
package main
import (
"net/http"
"net/url"
"strings"
)
func main() {
formValues := url.Values{}
formValues.Add("text", "Hello World")
formValues.Add("token", "*****")
formValues.Add("channel", "some-channel")
body := strings.NewReader(formValues.Encode())
requestSlack, err := http.NewRequest(
"POST",
"https://slack.com/api/chat.postMessage",
body)
if err != nil {
panic("error")
}
requestSlack.Header.Set("Content-Type", "application/x-www-form-urlencoded")
clientSlack := new(http.Client)
responseSlack, err := clientSlack.Do(requestSlack)
if err != nil {
panic("error")
}
defer responseSlack.Body.Close()
}
説明
url.Values構造体を使って POST リクエストの Body となるパラメーターを作成します。text: 投稿するメッセージです。token: Slack で発行した API を利用するためのトークンを指定します。channel: 投稿する Slack のチャンネル名を指定します。チャンネル ID でも可です。
Encode()とstrings.NewReader()を使ってio.Reader型を満たせる Body を作成します。Content-Typeにapplication/x-www-form-urlencodedを設定します。new(http.Client)を使って HTTP クライアントを作成します。clientSlack.Do(requestSlack)にてリクエストを送信します。
参考
https://slack.com/api/chat.postMessage エンドポイントのドキュメント
https://api.slack.com/methods/chat.postMessage