slack

package
v1.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 4, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package slack は、Slack Webhook へのメッセージ投稿と Block Kit 形式への 整形を行うクライアントを提供します。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewNotifier

func NewNotifier(client httpkit.Requester, webhookURL string, opts ...Option) (notify.Notifier, error)

NewNotifier は Slack Incoming Webhook への notify.Notifier を生成します。

webhookURL が空文字または空白のみの場合は、Slack 通知が設定されていない ものとして notify.Disabled() を返します。通知はアプリケーションの主目的では なく、宛先の未設定は起動を妨げる理由にならないためです。 逆に webhookURL が設定されているのに client が nil の場合は、送信できない 設定ミスなのでエラーを返します。

リトライについて

Webhook への投稿は非冪等です(成功するたびに新しいメッセージが作られます)。 Slack には届いたがレスポンスを取りこぼした場合、リトライすると同じ通知が 二重に投稿されます。

本パッケージはリトライ方針を持たず、client に渡されたものをそのまま使います。 重複を避けたい場合は、リトライを無効化したクライアントを渡してください。 既存のクライアントから派生させれば、タイムアウトや SSRF 対策の設定と コネクションプールを共有したまま、通知経路だけリトライを切れます。

notifier, err := slack.NewNotifier(httpClient.WithoutRetry(), webhookURL)

既定の httpkit.New(timeout) はリトライが有効なので、他の用途と 1 つの クライアントを共有していると重複投稿が起こり得ます。通知の取りこぼしと 重複のどちらを避けたいかはアプリケーション側の判断なので、ここでは 決めません。

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client は Slack Webhook API と連携するためのクライアントです。

func NewClient

func NewClient(client httpkit.Requester, webhookURL string, opts ...Option) (*Client, error)

NewClient は Slack Webhook API クライアントを生成します。 opts を指定すると、ユーザー名、アイコン絵文字、送信先チャンネルを上書きできます。

client のリトライ方針はそのまま使われます。Webhook への投稿は非冪等なため、 重複投稿を避けたい場合はリトライを無効化したクライアントを渡してください (詳細は NewNotifier のドキュメントを参照)。

webhookURL が空の場合はエラーを返します。通知先が任意設定であることを 表現したい場合は、NewNotifier を使ってください。

func (*Client) Notify

func (s *Client) Notify(ctx context.Context, msg notify.Message) error

Notify は notify.Notifier インターフェースを実装します。 msg.Title が空の場合は本文の先頭行から見出しを生成します。

func (*Client) SendText

func (s *Client) SendText(ctx context.Context, message string) error

SendText は本文の先頭行からヘッダーを自動生成して Slack メッセージを送信します。

func (*Client) SendTextWithHeader

func (s *Client) SendTextWithHeader(ctx context.Context, headerText string, message string) error

SendTextWithHeader は指定されたヘッダーと本文から Slack メッセージを構築して送信します。

type Option

type Option func(*Client)

Option は Client の設定をカスタマイズするための関数シグネチャです。

func WithChannel

func WithChannel(channel string) Option

WithChannel はデフォルトの送信先チャンネルを設定します。

func WithIconEmoji

func WithIconEmoji(emoji string) Option

WithIconEmoji はアイコン絵文字を設定します。

func WithUsername

func WithUsername(username string) Option

WithUsername は送信ユーザー名を設定します。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL