Class: Whatsapp::Messages::Address

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

Overview

Address messages prompt a WhatsApp user to provide or confirm a delivery address. This feature is only available for businesses based in India (IN) and Singapore (SG). Source: https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/address-messages

Despite being a distinct message type in this library, address messages are sent over the wire as interactive messages (type: "interactive", interactive.type: "address_message").

Defined Under Namespace

Modules: Countries, Defaults

Instance Attribute Summary collapse

Attributes inherited from Base

#to

Instance Method Summary collapse

Constructor Details

#initialize(body:, country:, footer: nil, values: nil, saved_addresses: []) ⇒ Address

Returns a new instance of Address.

Parameters:

  • body (String)

    The message body text.

  • country (String)

    Country code — "IN" for India, "SG" for Singapore.

  • footer (String, nil) (defaults to: nil)

    Optional footer text.

  • values (Hash, nil) (defaults to: nil)

    Pre-filled address fields (keys vary by country).

  • saved_addresses (Array<Hash>) (defaults to: [])

    Previously saved addresses.

  • kwargs (Hash)

    Additional keyword arguments passed to Base (:to). @raise [ActiveModel::ValidationError] if validation fails.



55
56
57
58
59
60
61
62
63
64
65
# File 'lib/ruby/whatsapp/messages/address.rb', line 55

def initialize(body:, country:, footer: nil, values: nil, saved_addresses: [], **)
  super(**)

  @body = body
  @footer = footer
  @country = country
  @values = values
  @saved_addresses = saved_addresses

  validate!
end

Instance Attribute Details

#bodyString

Returns The message body text shown above the address form.

Returns:

  • (String)

    The message body text shown above the address form.



27
28
29
# File 'lib/ruby/whatsapp/messages/address.rb', line 27

def body
  @body
end

#countryString

Returns Country code. One of IN (India) or SG (Singapore).

Returns:

  • (String)

    Country code. One of IN (India) or SG (Singapore).



35
36
37
# File 'lib/ruby/whatsapp/messages/address.rb', line 35

def country
  @country
end

Returns Optional footer text.

Returns:

  • (String, nil)

    Optional footer text.



31
32
33
# File 'lib/ruby/whatsapp/messages/address.rb', line 31

def footer
  @footer
end

#saved_addressesArray<Hash>

Returns Previously saved addresses the user can select from.

Returns:

  • (Array<Hash>)

    Previously saved addresses the user can select from.



43
44
45
# File 'lib/ruby/whatsapp/messages/address.rb', line 43

def saved_addresses
  @saved_addresses
end

#valuesHash?

Returns Pre-filled address field values shown in the form.

Returns:

  • (Hash, nil)

    Pre-filled address field values shown in the form.



39
40
41
# File 'lib/ruby/whatsapp/messages/address.rb', line 39

def values
  @values
end

Instance Method Details

#serializeHash

Serializes the address message to a hash format suitable for the WhatsApp API.

Returns:

  • (Hash)

    The serialized address message.



69
70
71
# File 'lib/ruby/whatsapp/messages/address.rb', line 69

def serialize
  envelope(type: Defaults::TYPE, interactive: interactive_payload)
end