Class: Whatsapp::Webhook::Messages

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby/whatsapp/webhook/messages.rb

Overview

The messages webhook field's value payload — the only field with a confirmed, JSON-example-backed schema in Meta's docs. Carries inbound messages and/or delivery status updates for one of your business phone numbers. Source: https://developers.facebook.com/documentation/business-messaging/whatsapp/webhooks/overview

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(messaging_product:, metadata:, contacts:, messages:, statuses:) ⇒ Messages

Returns a new instance of Messages.



30
31
32
33
34
35
36
# File 'lib/ruby/whatsapp/webhook/messages.rb', line 30

def initialize(messaging_product:, metadata:, contacts:, messages:, statuses:)
  @messaging_product = messaging_product
  @metadata = 
  @contacts = contacts
  @messages = messages
  @statuses = statuses
end

Instance Attribute Details

#contactsArray<Contact>

Returns:



20
21
22
# File 'lib/ruby/whatsapp/webhook/messages.rb', line 20

def contacts
  @contacts
end

#messagesArray<Message::Base>

Returns:



24
25
26
# File 'lib/ruby/whatsapp/webhook/messages.rb', line 24

def messages
  @messages
end

#messaging_productString?

Returns:

  • (String, nil)


12
13
14
# File 'lib/ruby/whatsapp/webhook/messages.rb', line 12

def messaging_product
  @messaging_product
end

#metadataMetadata?

Returns:



16
17
18
# File 'lib/ruby/whatsapp/webhook/messages.rb', line 16

def 
  @metadata
end

#statusesArray<Status>

Returns:



28
29
30
# File 'lib/ruby/whatsapp/webhook/messages.rb', line 28

def statuses
  @statuses
end

Class Method Details

.deserialize(data) ⇒ Messages

Parameters:

  • data (Hash)

    The raw messages field's value hash.

Returns:



41
42
43
44
45
46
47
48
49
50
51
# File 'lib/ruby/whatsapp/webhook/messages.rb', line 41

def deserialize(data)
  data ||= {}

  new(
    messaging_product: data["messaging_product"],
    metadata: data["metadata"] ? Metadata.deserialize(data["metadata"]) : nil,
    contacts: Array(data["contacts"]).map { |contact_data| Contact.deserialize(contact_data) },
    messages: Array(data["messages"]).map { |message_data| Message.deserialize(message_data) },
    statuses: Array(data["statuses"]).map { |status_data| Status.deserialize(status_data) }
  )
end