Packages

Elixir client SDK for the Surge API

Current section

Files

Jump to
surge_api lib surge webhook_handler.ex
Raw

lib/surge/webhook_handler.ex

defmodule Surge.WebhookHandler do
@moduledoc """
Behavior for handling Surge webhook events.
Implement this behavior in your application to process webhook events.
## Example
defmodule MyApp.SurgeHandler do
@behaviour Surge.WebhookHandler
@impl true
def handle_event(%Surge.Events.Event{type: :message_received} = event) do
# Process incoming message
IO.inspect(event.data.body, label: "Received message")
:ok
end
@impl true
def handle_event(%Surge.Events.Event{type: :message_failed} = event) do
# Handle failed message
IO.inspect(event.data.failure_reason, label: "Message failed")
{:ok, :handled}
end
# Return HTTP 200 for unhandled events
@impl true
def handle_event(_event), do: :ok
end
"""
alias Surge.Events.Event
@doc """
Handles a webhook event.
This function will be called with a parsed `Surge.Events.Event` struct.
## Return values
* `:ok` - Event was processed successfully
* `{:ok, term}` - Event was processed successfully with a result
* `:error` - Event processing failed (returns HTTP 400)
* `{:error, reason}` - Event processing failed with reason (returns HTTP 400)
"""
@callback handle_event(Event.t()) :: :ok | {:ok, term()} | :error | {:error, atom() | String.t()}
end