Anu.Webhook.Parser (Anu v0.2.1)

Copy Markdown View Source

Parses Meta webhook JSON payloads into event structs.

Meta's webhook format is deeply nested:

body.entry[].changes[].value.messages[]
body.entry[].changes[].value.statuses[]

This module extracts messages and statuses and converts them into Anu.Event.Message and Anu.Event.Status structs.

Summary

Functions

Parses a decoded webhook payload into a list of event tuples.

Types

event()

@type event() ::
  {:message_received, Anu.Event.Message.t()}
  | {:message_status, Anu.Event.Status.t()}

Functions

parse(arg1)

@spec parse(map()) :: [event()]

Parses a decoded webhook payload into a list of event tuples.

Returns a list of {event_type, event_struct} tuples.

Examples

iex> payload = %{"entry" => [%{"changes" => [%{"value" => %{"messages" => [%{"id" => "wamid.1", "from" => "5511999999999", "timestamp" => "1234567890", "type" => "text", "text" => %{"body" => "hi"}}]}}]}]}
iex> [{:message_received, event}] = Anu.Webhook.Parser.parse(payload)
iex> event.text
"hi"