Builds TelemetryDeck Ingest API v2 signals.
Payload values must be flat JSON primitives. Atom payload values are converted to strings, and nil values are omitted.
Summary
Functions
Builds a TelemetryDeck.Signal.
Builds a TelemetryDeck.Signal or raises ArgumentError.
Converts a TelemetryDeck.Signal to an Ingest API v2 JSON map.
Types
Functions
Builds a TelemetryDeck.Signal.
Required options are :type and :client_user. Optional values are
:session_id, :float_value, and :payload.
Examples
iex> {:ok, signal} =
...> TelemetryDeck.Signal.new(
...> type: "App.User.signedIn",
...> client_user: "user-hash",
...> payload: %{"App.Plan.name" => :pro, ignored: nil}
...> )
iex> signal.payload
%{"App.Plan.name" => "pro"}
iex> TelemetryDeck.Signal.new(type: "App.User.signedIn", client_user: "user-hash", payload: %{"App.Data" => %{nested: true}})
{:error, %{payload: "must be a flat map of primitive values"}}
Builds a TelemetryDeck.Signal or raises ArgumentError.
Converts a TelemetryDeck.Signal to an Ingest API v2 JSON map.
Examples
iex> signal = TelemetryDeck.Signal.new!(type: "App.started", client_user: "user-hash")
iex> map = TelemetryDeck.Signal.to_map(signal, app_id: "APP-ID", is_test_mode: true)
iex> {map["appID"], map["clientUser"], map["type"], map["isTestMode"]}
{"APP-ID", "user-hash", "App.started", true}