From ed2becc616ae1bddaab7830c3e8d10711ac324dc Mon Sep 17 00:00:00 2001 From: = Date: Tue, 28 Apr 2026 20:11:50 -0400 Subject: [PATCH] feat(slack): implement real-time webhooks and threaded replies (ref Sentinent-AI/Sentinent#30) --- README.md | 7 ++ handlers/integrations.go | 225 +++++++++++++++++++++++++++++++++++++++ main.go | 4 + sentinent.db-shm | Bin 0 -> 32768 bytes sentinent.db-wal | Bin 0 -> 1491472 bytes services/slack.go | 87 +++++++++++++++ services/sync.go | 106 +++++++++++++----- 7 files changed, 400 insertions(+), 29 deletions(-) create mode 100644 sentinent.db-shm create mode 100644 sentinent.db-wal diff --git a/README.md b/README.md index 8a295f8..1120a38 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,15 @@ Slack integration: - `SLACK_CLIENT_ID`: Slack OAuth app client ID. - `SLACK_CLIENT_SECRET`: Slack OAuth app client secret. +- `SLACK_SIGNING_SECRET`: Slack App signing secret used for verifying webhook signatures. - `SLACK_REDIRECT_URI`: Optional override for the Slack OAuth callback URL. Defaults to the current request host plus `/api/integrations/slack/callback`. +### Slack Webhooks +For real-time message ingestion, configure "Event Subscriptions" in your Slack App settings to point to: +`https:///api/webhooks/slack` + +Ensure you have subscribed to the `message.channels` bot user event. + GitHub integration: - `GITHUB_CLIENT_ID`: GitHub OAuth app client ID. diff --git a/handlers/integrations.go b/handlers/integrations.go index 4356641..54fa67b 100644 --- a/handlers/integrations.go +++ b/handlers/integrations.go @@ -443,6 +443,231 @@ func GetSlackChannels(w http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(w).Encode(map[string]interface{}{"channels": channels}) } +func SlackWebhookHandler(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) + return + } + + body, err := io.ReadAll(r.Body) + if err != nil { + http.Error(w, "Invalid body", http.StatusBadRequest) + return + } + + // Verify signature if secret is configured + signingSecret := os.Getenv("SLACK_SIGNING_SECRET") + if signingSecret != "" { + signature := r.Header.Get("X-Slack-Signature") + timestamp := r.Header.Get("X-Slack-Request-Timestamp") + if err := slackClient.ValidateWebhookRequest(body, signature, timestamp, signingSecret); err != nil { + log.Printf("Slack webhook signature validation failed: %v", err) + http.Error(w, "Invalid signature", http.StatusUnauthorized) + return + } + } + + var event services.SlackWebhookEvent + if err := json.Unmarshal(body, &event); err != nil { + http.Error(w, "Invalid JSON", http.StatusBadRequest) + return + } + + // Handle URL verification challenge + if event.Type == "url_verification" { + w.Header().Set("Content-Type", "text/plain") + w.Write([]byte(event.Challenge)) + return + } + + // Handle event callbacks + if event.Type == "event_callback" { + var innerEvent services.SlackMessageEvent + if err := json.Unmarshal(event.Event, &innerEvent); err == nil { + if innerEvent.Type == "message" && innerEvent.User != "" { + go handleSlackMessageEvent(event.TeamID, innerEvent) + } + } + } + + w.WriteHeader(http.StatusOK) +} + +func handleSlackMessageEvent(teamID string, event services.SlackMessageEvent) { + // Find integrations for this team + rows, err := database.DB.Query( + "SELECT user_id, workspace_id, metadata FROM external_integrations WHERE provider = 'slack'", + ) + if err != nil { + log.Printf("Failed to query integrations for Slack webhook: %v", err) + return + } + defer rows.Close() + + for rows.Next() { + var userID, workspaceID int + var metadataStr string + if err := rows.Scan(&userID, &workspaceID, &metadataStr); err != nil { + continue + } + + var metadata map[string]interface{} + json.Unmarshal([]byte(metadataStr), &metadata) + + if metadata["team_id"] == teamID { + // Check if channel is selected + selectedChannels, ok := metadata["selected_channels"].([]interface{}) + isChannelSelected := false + if !ok || len(selectedChannels) == 0 { + isChannelSelected = true // Default to all if none selected (as per sync.go) + } else { + for _, ch := range selectedChannels { + if chStr, ok := ch.(string); ok && chStr == event.Channel { + isChannelSelected = true + break + } + } + } + + if isChannelSelected { + msg := services.SlackMessage{ + User: event.User, + Text: event.Text, + TS: event.TS, + } + // Parse timestamp + parts := strings.Split(event.TS, ".") + if len(parts) > 0 { + sec, _ := strconv.ParseInt(parts[0], 10, 64) + msg.Timestamp = sec + } + + if err := services.SaveSlackSignal(database.DB, userID, workspaceID, msg, event.Channel, event.User); err != nil { + log.Printf("Failed to save Slack webhook signal: %v", err) + } + } + } + } +} + +func SlackReplyHandler(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) + return + } + + userID, err := getUserIDFromContext(r) + if err != nil { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } + + workspaceID, statusCode, err := getAuthorizedWorkspaceID(r, userID) + if err != nil { + http.Error(w, err.Error(), statusCode) + return + } + + var req struct { + ChannelID string `json:"channel_id"` + ThreadTS string `json:"thread_ts"` + Text string `json:"text"` + } + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, "Invalid request body", http.StatusBadRequest) + return + } + + // Fetch token + var encryptedToken string + err = database.DB.QueryRow( + `SELECT access_token FROM external_integrations + WHERE user_id = ? AND workspace_id = ? AND provider = 'slack'`, + userID, workspaceID, + ).Scan(&encryptedToken) + if err != nil { + http.Error(w, "Integration not found", http.StatusNotFound) + return + } + + accessToken, err := tokenEncryptor.Decrypt(encryptedToken) + if err != nil { + http.Error(w, "Failed to decrypt token", http.StatusInternalServerError) + return + } + + rateLimit, err := slackClient.PostMessage(accessToken, req.ChannelID, req.Text, req.ThreadTS) + if err != nil { + if rateLimit != nil && rateLimit.IsRateLimited() { + http.Error(w, "Rate limited", http.StatusTooManyRequests) + return + } + http.Error(w, "Failed to post message: "+err.Error(), http.StatusInternalServerError) + return + } + + w.WriteHeader(http.StatusOK) + json.NewEncoder(w).Encode(map[string]string{"status": "ok"}) +} + +func SlackDisconnectHandler(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodDelete { + http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) + return + } + + userID, err := getUserIDFromContext(r) + if err != nil { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } + + workspaceID, statusCode, err := getAuthorizedWorkspaceID(r, userID) + if err != nil { + http.Error(w, err.Error(), statusCode) + return + } + + if _, err := database.DB.Exec( + "DELETE FROM external_integrations WHERE user_id = ? AND workspace_id = ? AND provider = 'slack'", + userID, workspaceID, + ); err != nil { + http.Error(w, "Failed to disconnect Slack", http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]string{"status": "disconnected"}) +} + +func SlackSyncHandler(w http.ResponseWriter, r *http.Request) { + if r.Method != http.MethodPost { + http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) + return + } + + userID, err := getUserIDFromContext(r) + if err != nil { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } + + workspaceID, statusCode, err := getAuthorizedWorkspaceID(r, userID) + if err != nil { + http.Error(w, err.Error(), statusCode) + return + } + + go func() { + if err := services.SyncSlackSignals(userID, workspaceID); err != nil { + log.Printf("Manual Slack sync error: %v", err) + } + }() + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]string{"status": "sync_started"}) +} + func GmailAuthHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) diff --git a/main.go b/main.go index 5fab5c5..08871a3 100644 --- a/main.go +++ b/main.go @@ -99,6 +99,7 @@ func main() { mux.Handle("/api/integrations", middleware.AuthMiddleware(http.HandlerFunc(handlers.GetIntegrations))) mux.Handle("/api/integrations/slack/auth", middleware.AuthMiddleware(http.HandlerFunc(handlers.SlackAuth))) mux.Handle("/api/integrations/slack/channels", middleware.AuthMiddleware(http.HandlerFunc(handlers.GetSlackChannels))) + mux.Handle("/api/integrations/slack/sync", middleware.AuthMiddleware(http.HandlerFunc(handlers.SlackSyncHandler))) mux.Handle("/api/integrations/github/auth", middleware.AuthMiddleware(http.HandlerFunc(handlers.GitHubAuthHandler))) mux.Handle("/api/integrations/github/repos", middleware.AuthMiddleware(http.HandlerFunc(handlers.GitHubReposHandler))) mux.Handle("/api/integrations/github/sync", middleware.AuthMiddleware(http.HandlerFunc(handlers.GitHubSyncHandler))) @@ -121,6 +122,8 @@ func main() { mux.Handle("/api/integrations/jira/sync", middleware.AuthMiddleware(http.HandlerFunc(handlers.JiraSyncHandler))) mux.Handle("/api/integrations/jira/issues/", middleware.AuthMiddleware(http.HandlerFunc(handlers.JiraIssueActionHandler))) mux.Handle("/api/integrations/jira", middleware.AuthMiddleware(http.HandlerFunc(handlers.JiraDisconnectHandler))) + mux.Handle("/api/integrations/slack/reply", middleware.AuthMiddleware(http.HandlerFunc(handlers.SlackReplyHandler))) + mux.Handle("/api/integrations/slack", middleware.AuthMiddleware(http.HandlerFunc(handlers.SlackDisconnectHandler))) mux.Handle("/api/integrations/status", middleware.AuthMiddleware(http.HandlerFunc(handlers.IntegrationStatusHandler))) mux.Handle("/api/integrations/", middleware.AuthMiddleware(http.HandlerFunc(handlers.DeleteIntegration))) @@ -156,6 +159,7 @@ func main() { // Webhook routes (public, but should verify signature in production) mux.HandleFunc("/api/webhooks/github", handlers.GitHubWebhookHandler) + mux.HandleFunc("/api/webhooks/slack", handlers.SlackWebhookHandler) // Apply CORS and logging middleware handler := loggingMiddleware(middleware.CorsMiddleware(mux)) diff --git a/sentinent.db-shm b/sentinent.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..fbb3602f46849c39f5af3b7a1723561992489d8e GIT binary patch literal 32768 zcmeI*WsFrv9ES1d#ocAGVvD=GySuwfz0{}+b%(lAp-M|z>eSt-8&%rUQtGbInXorG zGz(!vXu{rilG!_F=09`J{ATuUvLEJTtZzb06+;%3S{Q!R3FQ?%=dWJ1a?`xci2f0{iE1%V#EEfoMRYR_pO+Rhu)+hU>%CS$X zU#cz{n`+zMxY_lIbBOV=Z}R!#oZ=peZOQsnU23d&oyy5)NtTmi#ro`WYP@8>?UmDU zyrfxb4U%>C+q$o^bJ!jGB{Q+_<9ft8gIL7kTsk*T%K{d#fCVhDYXTwN{91i zDw07ZDpMt#t5uB};Z&N;a8gWN>QSEtG^PbDX+>+=(3W;|qzAp}#}I}xjNy!6B%>J1 zB&ITxSMMjnza=)l4nbM(x#8 z{WVm>G+ZMzQlm6llQdN`G+T4C&M(`w)o^bMSil1Rk3c-j%PDsW#B&y%ERdc8rP6cS zp0x!mU;ztQzycPqzzzhO(UtxTW&#tL!2vsnbdv>gn?RxPmWDFnRQJ88Nkf{@o=)_n z52G2!WTvrzeK?8}IEiyv#)VwMb=<(s+{%5d;b9)*Mb`2fZ}KspvVo2K%y0b3KNM0? zl~8F_Rdv-;9W_@gwN(f8(g2OoWKGjd|BrmPY^QD<%qd*PDxTnNHnD}Ws;5rsu89`k zMtr_Kw(-af7v1UMRo$tDTwtf2a@v!En$y{E}_fCD*fry?D+rwAOv5gfy@9LK3# z&h0$OI=&7suq&tf>Y}ddrYVYVoO7~(1uS3z3#6YwZw=H~{}oKXh4+kuKpzd#IPZS% zg|rmttHB!Y-Jh0g?@1R9?>H_S-j`lIyj!^uP3b^qdeN6LjAshdS;)Q|&54}Md7RHh zT*?Y=SjALQWmHWyR9kh`Lao(K9o0`m QG(pofOLH`D5Bk0P7YY#5-v9sr literal 0 HcmV?d00001 diff --git a/sentinent.db-wal b/sentinent.db-wal new file mode 100644 index 0000000000000000000000000000000000000000..c76db7060262425e9ffa94ff4ff46b3753e337e7 GIT binary patch literal 1491472 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

bqfj%9CL`m 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

kN_kA2|xmnz~e{Yf?nXCJOsVKr8|BK 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

ov5#@yh+b_7fQP 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 literal 0 HcmV?d00001 diff --git a/services/slack.go b/services/slack.go index ea5a139..d78182c 100644 --- a/services/slack.go +++ b/services/slack.go @@ -3,6 +3,7 @@ package services import ( "crypto/hmac" "crypto/sha256" + "database/sql" "encoding/hex" "encoding/json" "errors" @@ -319,6 +320,50 @@ func (c *SlackClient) MarkMessageAsRead(accessToken, channelID, timestamp string return rateLimit, nil } +// PostMessage posts a message to a channel, optionally in a thread +func (c *SlackClient) PostMessage(accessToken, channelID, text, threadTS string) (*RateLimitInfo, error) { + data := url.Values{} + data.Set("channel", channelID) + data.Set("text", text) + if threadTS != "" { + data.Set("thread_ts", threadTS) + } + + req, err := http.NewRequest("POST", c.BaseURL+"/chat.postMessage", strings.NewReader(data.Encode())) + if err != nil { + return nil, err + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + req.Header.Set("Authorization", "Bearer "+accessToken) + + resp, err := c.HTTPClient.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + rateLimit := extractRateLimit(resp) + + body, err := io.ReadAll(resp.Body) + if err != nil { + return rateLimit, err + } + + var result struct { + OK bool `json:"ok"` + Error string `json:"error"` + } + if err := json.Unmarshal(body, &result); err != nil { + return rateLimit, err + } + + if !result.OK { + return rateLimit, &SlackAPIError{Code: result.Error} + } + + return rateLimit, nil +} + // extractRateLimit extracts rate limit headers from the response func extractRateLimit(resp *http.Response) *RateLimitInfo { info := &RateLimitInfo{} @@ -423,3 +468,45 @@ func (c *SlackClient) ValidateWebhookRequest(body []byte, signature, timestamp, return nil } + +// SaveSlackSignal saves a Slack message as a signal in the database +func SaveSlackSignal(db *sql.DB, userID, workspaceID int, msg SlackMessage, channelID string, authorName string) error { + sourceID := channelID + ":" + msg.TS + + // Store metadata + msgMetadata := map[string]interface{}{ + "channel_id": channelID, + "ts": msg.TS, + "user_id": msg.User, + } + metadataJSON, _ := json.Marshal(msgMetadata) + + title := truncateString(msg.Text, 100) + if title == "" { + title = "Slack Message" + } + + // Use UPSERT to handle duplicates and updates + _, err := db.Exec( + `INSERT INTO signals + (user_id, workspace_id, source_type, source_id, external_id, title, content, body, author, status, source_metadata, received_at, updated_at) + VALUES (?, ?, 'slack', ?, ?, ?, ?, ?, ?, 'unread', ?, ?, CURRENT_TIMESTAMP) + ON CONFLICT(user_id, source_type, source_id) DO UPDATE SET + title = excluded.title, + content = excluded.content, + body = excluded.body, + author = excluded.author, + source_metadata = excluded.source_metadata, + updated_at = CURRENT_TIMESTAMP`, + userID, workspaceID, sourceID, msg.TS, title, msg.Text, msg.Text, authorName, + string(metadataJSON), time.Unix(msg.Timestamp, 0), + ) + return err +} + +func truncateString(s string, maxLen int) string { + if len(s) <= maxLen { + return s + } + return s[:maxLen] + "..." +} diff --git a/services/sync.go b/services/sync.go index f0b378b..57e1cb3 100644 --- a/services/sync.go +++ b/services/sync.go @@ -202,6 +202,9 @@ func (s *SyncService) syncSlackIntegration(integration *models.ExternalIntegrati continue } + // Cache for user names to avoid redundant API calls + userCache := make(map[string]string) + // Process and store messages for _, msg := range messages { if msg.Type != "message" || msg.User == "" { @@ -212,38 +215,51 @@ func (s *SyncService) syncSlackIntegration(integration *models.ExternalIntegrati // Get user info for author name authorName := msg.User - userResp, _, err := s.slackClient.GetUserInfo(accessToken, msg.User) - if err == nil && userResp != nil { - if userResp.User.RealName != "" { - authorName = userResp.User.RealName - } else if userResp.User.Name != "" { - authorName = userResp.User.Name + if cachedName, ok := userCache[msg.User]; ok { + authorName = cachedName + } else { + userResp, _, err := s.slackClient.GetUserInfo(accessToken, msg.User) + if err == nil && userResp != nil { + if userResp.User.RealName != "" { + authorName = userResp.User.RealName + } else if userResp.User.Name != "" { + authorName = userResp.User.Name + } + userCache[msg.User] = authorName } } - // Check if signal already exists - var existingID int - err = database.DB.QueryRow( - `SELECT id FROM signals - WHERE user_id = ? AND source_type = ? - AND (source_id = ? OR external_id = ?)`, - integration.UserID, models.SourceTypeSlack, sourceID, msg.TS, - ).Scan(&existingID) - - if err == sql.ErrNoRows { - // Insert new signal - _, err = database.DB.Exec( - `INSERT INTO signals (user_id, workspace_id, source_type, source_id, external_id, title, content, author, status, received_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - integration.UserID, integration.WorkspaceID, models.SourceTypeSlack, - sourceID, msg.TS, truncate(msg.Text, 100), msg.Text, authorName, - models.SignalStatusUnread, time.Unix(msg.Timestamp, 0), - ) - if err != nil { - log.Printf("Failed to insert signal: %v", err) - } - } else if err != nil { - log.Printf("Failed to check existing signal: %v", err) + // Store metadata + msgMetadata := map[string]interface{}{ + "channel_id": channelID, + "ts": msg.TS, + "user_id": msg.User, + } + metadataJSON, _ := json.Marshal(msgMetadata) + + title := truncate(msg.Text, 100) + if title == "" { + title = "Slack Message" + } + + // Use UPSERT to handle duplicates and updates + _, err = database.DB.Exec( + `INSERT INTO signals + (user_id, workspace_id, source_type, source_id, external_id, title, content, body, author, status, source_metadata, received_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP) + ON CONFLICT(user_id, source_type, source_id) DO UPDATE SET + title = excluded.title, + content = excluded.content, + body = excluded.body, + author = excluded.author, + source_metadata = excluded.source_metadata, + updated_at = CURRENT_TIMESTAMP`, + integration.UserID, integration.WorkspaceID, models.SourceTypeSlack, + sourceID, msg.TS, title, msg.Text, msg.Text, authorName, + models.SignalStatusUnread, string(metadataJSON), time.Unix(msg.Timestamp, 0), + ) + if err != nil { + log.Printf("Failed to upsert Slack signal: %v", err) } } @@ -309,3 +325,35 @@ func (s *SyncService) ManualSync(integrationID int) error { return nil } + +// SyncSlackSignals triggers a manual sync for Slack signals +func SyncSlackSignals(userID, workspaceID int) error { + var integration models.ExternalIntegration + var encryptedToken string + err := database.DB.QueryRow( + `SELECT id, user_id, workspace_id, provider, access_token, metadata + FROM external_integrations + WHERE user_id = ? AND workspace_id = ? AND provider = 'slack'`, + userID, workspaceID, + ).Scan( + &integration.ID, &integration.UserID, &integration.WorkspaceID, + &integration.Provider, &encryptedToken, &integration.Metadata, + ) + if err != nil { + return err + } + + encryptor, err := utils.NewTokenEncryptor() + if err != nil { + return err + } + + accessToken, err := encryptor.Decrypt(encryptedToken) + if err != nil { + return err + } + + s := NewSyncService(encryptor) + s.syncSlackIntegration(&integration, accessToken) + return nil +}