diff --git a/config.example.toml b/config.example.toml index 143720d..22bdcbc 100644 --- a/config.example.toml +++ b/config.example.toml @@ -10,5 +10,8 @@ signal_url = "http://127.0.0.1:8080" # signal-cli account (phone number registered with signal-cli) signal_account = "+1234567890" -# Signal recipient UUID or phone number to send notifications to +# Signal recipient UUID for DM notifications signal_recipient = "" + +# OR: Signal group ID for group notifications (overrides signal_recipient) +# signal_group_id = "" diff --git a/config.go b/config.go index 0149696..8e2c4c3 100644 --- a/config.go +++ b/config.go @@ -12,8 +12,10 @@ type Config struct { SignalURL string // SignalAccount is the signal-cli account (phone number or UUID). SignalAccount string - // SignalRecipient is the default Signal recipient for notifications. + // SignalRecipient is the default Signal recipient UUID for DM notifications. SignalRecipient string + // SignalGroupID is the Signal group ID for group notifications (overrides SignalRecipient). + SignalGroupID string } func loadConfig() Config { @@ -31,5 +33,6 @@ func loadConfig() Config { SignalURL: jety.GetString("signal_url"), SignalAccount: jety.GetString("signal_account"), SignalRecipient: jety.GetString("signal_recipient"), + SignalGroupID: jety.GetString("signal_group_id"), } } diff --git a/main.go b/main.go index c51df94..8a6ed3d 100644 --- a/main.go +++ b/main.go @@ -19,8 +19,8 @@ func main() { if cfg.SignalAccount == "" { log.Fatal("signal_account is required (set GH2SIG_SIGNAL_ACCOUNT or config.toml)") } - if cfg.SignalRecipient == "" { - log.Fatal("signal_recipient is required (set GH2SIG_SIGNAL_RECIPIENT or config.toml)") + if cfg.SignalRecipient == "" && cfg.SignalGroupID == "" { + log.Fatal("signal_recipient or signal_group_id is required") } signal := signalcli.NewClient(cfg.SignalURL, cfg.SignalAccount) @@ -29,6 +29,7 @@ func main() { notifier := ¬ifier{ signal: signal, recipient: cfg.SignalRecipient, + groupID: cfg.SignalGroupID, } // Register event handlers. @@ -73,16 +74,20 @@ func main() { type notifier struct { signal *signalcli.Client recipient string + groupID string } func (n *notifier) send(ctx context.Context, msg string) { if msg == "" { return } - _, err := n.signal.Send(ctx, signalcli.SendParams{ - Recipient: n.recipient, - Message: msg, - }) + params := signalcli.SendParams{Message: msg} + if n.groupID != "" { + params.GroupID = n.groupID + } else { + params.Recipient = n.recipient + } + _, err := n.signal.Send(ctx, params) if err != nil { log.Printf("signal send error: %v", err) }