Module: FlowChat::Instrumentation
- Extended by:
- ActiveSupport::Concern
- Included in:
- BaseProcessor, Context, Http::Gateway::Simple, Session::CacheSessionStore, Session::Middleware, Session::RailsSessionStore, Ussd::Gateway::Nalo, Ussd::Gateway::Nsano, Ussd::Middleware::Pagination, Whatsapp::Client, Whatsapp::Gateway::CloudApi
- Defined in:
- lib/flow_chat/instrumentation.rb,
lib/flow_chat/instrumentation/setup.rb,
lib/flow_chat/instrumentation/log_subscriber.rb,
lib/flow_chat/instrumentation/metrics_collector.rb
Defined Under Namespace
Modules: Events, Setup Classes: LogSubscriber, MetricsCollector
Class Method Summary collapse
-
.instrument(event_name, payload = {}, &block) ⇒ Object
Module-level method for direct calls like FlowChat::Instrumentation.instrument.
Instance Method Summary collapse
-
#instrument(event_name, payload = {}, &block) ⇒ Object
Instrument a block of code with the given event name and payload.
Class Method Details
.instrument(event_name, payload = {}, &block) ⇒ Object
Module-level method for direct calls like FlowChat::Instrumentation.instrument
28 29 30 31 32 33 34 35 36 |
# File 'lib/flow_chat/instrumentation.rb', line 28 def self.instrument(event_name, payload = {}, &block) full_event_name = "#{event_name}.flow_chat" enriched_payload = { timestamp: Time.current }.merge(payload || {}).compact ActiveSupport::Notifications.instrument(full_event_name, enriched_payload, &block) end |
Instance Method Details
#instrument(event_name, payload = {}, &block) ⇒ Object
Instrument a block of code with the given event name and payload
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/flow_chat/instrumentation.rb', line 8 def instrument(event_name, payload = {}, &block) enriched_payload = payload&.dup || {} if respond_to?(:context) && context enriched_payload[:request_id] = context["request.id"] if context["request.id"] enriched_payload[:session_id] = context["session.id"] if context["session.id"] enriched_payload[:flow_name] = context["flow.name"] if context["flow.name"] enriched_payload[:gateway] = context["request.gateway"] if context["request.gateway"] enriched_payload[:platform] = context["request.platform"] if context["request.platform"] end self.class.instrument(event_name, enriched_payload, &block) end |