Prechádzať zdrojové kódy

Allow setting segment_user_id in config

Scott Weber 2 rokov pred
rodič
commit
fa0a69d746
4 zmenil súbory, kde vykonal 16 pridanie a 2 odobranie
  1. 2 1
      config/config.go
  2. 2 0
      example-config.yaml
  3. 4 0
      main.go
  4. 8 1
      segment.go

+ 2 - 1
config/config.go

@@ -24,7 +24,8 @@ import (
 type Config struct {
 	*bridgeconfig.BaseConfig `yaml:",inline"`
 
-	SegmentKey string `yaml:"segment_key"`
+	SegmentKey    string `yaml:"segment_key"`
+	SegmentUserId string `yaml:"segment_user_id"`
 
 	Metrics struct {
 		Enabled bool   `yaml:"enabled"`

+ 2 - 0
example-config.yaml

@@ -72,6 +72,8 @@ appservice:
 
 # Segment API key to track some events, like provisioning API login and encryption errors.
 segment_key: null
+# Optional user_id to use when sending Segment events. If null, defaults to using mxID.
+segment_user_id: null
 
 # Prometheus config.
 metrics:

+ 4 - 0
main.go

@@ -93,8 +93,12 @@ func (br *WABridge) Init() {
 
 	Segment.log = br.Log.Sub("Segment")
 	Segment.key = br.Config.SegmentKey
+	Segment.userID = br.Config.SegmentUserId
 	if Segment.IsEnabled() {
 		Segment.log.Infoln("Segment metrics are enabled")
+		if Segment.userID != "" {
+			Segment.log.Infoln("Overriding Segment user_id with %v", Segment.userID)
+		}
 	}
 
 	br.DB = database.New(br.Bridge.DB, br.Log.Sub("Database"))

+ 8 - 1
segment.go

@@ -30,6 +30,7 @@ const SegmentURL = "https://api.segment.io/v1/track"
 
 type SegmentClient struct {
 	key    string
+	userID string
 	log    log.Logger
 	client http.Client
 }
@@ -38,8 +39,14 @@ var Segment SegmentClient
 
 func (sc *SegmentClient) trackSync(userID id.UserID, event string, properties map[string]interface{}) error {
 	var buf bytes.Buffer
+	var segmentUserID string
+	if Segment.userID != "" {
+		segmentUserID = Segment.userID
+	} else {
+		segmentUserID = userID.String()
+	}
 	err := json.NewEncoder(&buf).Encode(map[string]interface{}{
-		"userId":     userID,
+		"userId":     segmentUserID,
 		"event":      event,
 		"properties": properties,
 	})