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 ¶
NewClient は Slack Webhook API クライアントを生成します。 opts を指定すると、ユーザー名、アイコン絵文字、送信先チャンネルを上書きできます。
client のリトライ方針はそのまま使われます。Webhook への投稿は非冪等なため、 重複投稿を避けたい場合はリトライを無効化したクライアントを渡してください (詳細は NewNotifier のドキュメントを参照)。
webhookURL が空の場合はエラーを返します。通知先が任意設定であることを 表現したい場合は、NewNotifier を使ってください。