lib/stealth/services/facebook/client.rb in stealth-facebook-0.11.4 vs lib/stealth/services/facebook/client.rb in stealth-facebook-0.12.0
- old
+ new
@@ -51,9 +51,42 @@
MultiJson.load(response.body)
else
raise(Stealth::Errors::ServiceError, "Facebook error #{response.status}: #{response.body}")
end
end
+
+ def self.track(recipient_id:, metric:, value:, options: {})
+ metric_values = [{
+ '_eventName' => metric,
+ '_valueToSum' => value
+ }]
+
+ metric_values.first.merge!(options)
+
+ params = {
+ event: 'CUSTOM_APP_EVENTS',
+ custom_events: MultiJson.dump(metric_values),
+ advertiser_tracking_enabled: 1,
+ application_tracking_enabled: 1,
+ extinfo: MultiJson.dump(['mb1']),
+ page_scoped_user_id: recipient_id,
+ page_id: Stealth.config.facebook.page_id
+ }
+
+ uri = URI::HTTPS.build(
+ host: "graph.facebook.com",
+ path: "/#{Stealth.config.facebook.app_id}/activities"
+ )
+
+ response = Faraday.post(uri.to_s, params)
+ Stealth::Logger.l(topic: "facebook", message: "Sending custom event for metric: #{metric} and value: #{value}. Response: #{response.status}: #{response.body}")
+
+ if response.status.in?(200..299)
+ MultiJson.load(response.body)
+ else
+ raise(Stealth::Errors::ServiceError, "Facebook error #{response.status}: #{response.body}")
+ end
+ end
end
end
end
end