[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-Typeapplication/x-www-form-urlencoded を設定します。
  • new(http.Client) を使って HTTP クライアントを作成します。
  • clientSlack.Do(requestSlack) にてリクエストを送信します。

参考

https://slack.com/api/chat.postMessage エンドポイントのドキュメント
https://api.slack.com/methods/chat.postMessage

Go Slack