slack

package
v0.16.2 Latest Latest
Warning

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

Go to latest
Published: May 25, 2026 License: AGPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ChannelID            = notification.DeliveryChannelSlack
	AddressKeyChannel    = "channel"
	AddressKeyTargetType = "target_type"
)
View Source
const (
	TargetTypeChannel               = "channel"
	TargetTypeDirectMessage         = "direct_message"
	ConfiguredDestinationDigestChan = "slack.digest_channel"
)
View Source
const (
	MetadataKeyWorkspaceName   = "workspace-name"
	MetadataKeyWorkspaceURL    = "workspace-url"
	MetadataKeyWorkspaceDomain = "workspace-domain"
	MetadataKeyEmailDomain     = "email-domain"
	MetadataKeyTeamID          = "team-id"
	MetadataKeyBotID           = "bot-id"
	MetadataKeyBotName         = "bot-name"
	MetadataKeyEnterpriseID    = "enterprise-id"
)

Variables

View Source
var (
	FormatDigestMessage                       = slackformatters.FormatDigestMessage
	FormatPoamDeadlineReminderMessage         = slackformatters.FormatPoamDeadlineReminderMessage
	FormatPoamMilestoneOverdueReminderMessage = slackformatters.FormatPoamMilestoneOverdueReminderMessage
	FormatPoamOverdueNotificationMessage      = slackformatters.FormatPoamOverdueNotificationMessage
	FormatRiskReviewDueReminderMessage        = slackformatters.FormatRiskReviewDueReminderMessage
	FormatRiskReviewOverdueEscalationMessage  = slackformatters.FormatRiskReviewOverdueEscalationMessage
	FormatRiskStaleOpenReminderMessage        = slackformatters.FormatRiskStaleOpenReminderMessage
	FormatRiskOpenDigestMessage               = slackformatters.FormatRiskOpenDigestMessage
	FormatWorkflowExecutionFailedMessage      = slackformatters.FormatWorkflowExecutionFailedMessage
	FormatWorkflowTaskAssignedMessage         = slackformatters.FormatWorkflowTaskAssignedMessage
	FormatWorkflowTaskDueSoonMessage          = slackformatters.FormatWorkflowTaskDueSoonMessage
	FormatWorkflowTaskDigestMessage           = slackformatters.FormatWorkflowTaskDigestMessage
)

Functions

func Channel

func Channel(renderer func(ctx context.Context, model any) (Content, error)) notification.RendererBinding

func DirectMessageIdentity

func DirectMessageIdentity(channel string) map[string]string

func MessageChannel

func MessageChannel(renderer func(ctx context.Context, model any) (*Message, error)) notification.RendererBinding

func MessageRenderer

func MessageRenderer(renderer func(ctx context.Context, model any) (*Message, error)) notification.ChannelRenderer

func NormalizeTargetType

func NormalizeTargetType(target string) (string, bool)

func Renderer

func Renderer(renderer func(ctx context.Context, model any) (Content, error)) notification.ChannelRenderer

Types

type Content

type Content struct {
	Text   string
	Blocks []slack.Block
}

func ContentFromMessage

func ContentFromMessage(message *Message) (Content, error)

func (Content) Clone

func (c Content) Clone() Content

func (Content) ClonePayload

func (c Content) ClonePayload() any

func (Content) Validate

func (c Content) Validate() error

type Delivery

type Delivery struct {
	Channel    string
	TargetType string
	Content    Content
	Metadata   notification.TransportMetadata
}

func (Delivery) Validate

func (d Delivery) Validate() error

type DigestSummary

type DigestSummary = slackformatters.DigestSummary

type EnabledResolver

type EnabledResolver func() bool

type Enqueuer

type Enqueuer interface {
	IsStarted() bool
	EnqueueNotificationSlack(ctx context.Context, delivery Delivery) ([]int64, error)
}

type EnqueuerProvider

type EnqueuerProvider func() Enqueuer

type Message

type Message = slacktypes.Message

type Provider

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

func NewCatalogProvider

func NewCatalogProvider(cfg *config.Config) *Provider

func NewProvider

func NewProvider(senderProvider SenderProvider, enqueuerProvider EnqueuerProvider, opts ...ProviderOption) *Provider

func (*Provider) BuildTarget

func (p *Provider) BuildTarget(rawTarget string) (notification.Target, error)

func (*Provider) Deliver

func (p *Provider) Deliver(ctx context.Context, delivery notification.Delivery) error

Deliver prefers enqueuing when a started enqueuer is available. If direct sending is the only option and no sender is configured or enabled, delivery is treated as a no-op so notifications can be optional in some environments.

func (*Provider) DisplayTarget

func (p *Provider) DisplayTarget(target notification.Target) (string, error)

func (*Provider) ID

func (p *Provider) ID() string

func (*Provider) NormalizeTarget

func (p *Provider) NormalizeTarget(target notification.Target) (notification.Target, error)

func (*Provider) ProviderMetadata

func (p *Provider) ProviderMetadata() notification.ProviderMetadata

func (*Provider) ResolveUserTarget

func (p *Provider) ResolveUserTarget(user notification.User) (notification.Target, bool, error)

func (*Provider) ValidateTarget

func (p *Provider) ValidateTarget(target notification.Target) error

type ProviderOption

type ProviderOption func(*Provider)

func WithEnabledResolver

func WithEnabledResolver(resolver EnabledResolver) ProviderOption

func WithWorkspaceConfigurationResolver

func WithWorkspaceConfigurationResolver(resolver WorkspaceConfigurationResolver) ProviderOption

type RiskDigestItem

type RiskDigestItem = slackformatters.RiskDigestItem

type Sender

type Sender interface {
	IsEnabled() bool
	SendMessage(ctx context.Context, channel string, message *slacktypes.Message) (*slacktypes.SendResult, error)
}

type SenderProvider

type SenderProvider func() Sender

type WorkspaceConfigurationResolver

type WorkspaceConfigurationResolver func(context.Context) (slacksvc.WorkspaceConfiguration, error)

Jump to

Keyboard shortcuts

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