Class: Zavudev::Models::MessageContent

Inherits:
Internal::Type::BaseModel show all
Defined in:
lib/zavudev/models/message_content.rb

Defined Under Namespace

Modules: CtaHeaderType Classes: Button, Contact, Section

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Internal::Type::BaseModel

==, #==, #[], coerce, #deconstruct_keys, #deep_to_h, dump, fields, hash, #hash, inherited, inspect, #inspect, known_fields, optional, recursively_to_h, required, #to_h, #to_json, #to_s, to_sorbet_type, #to_yaml

Methods included from Internal::Type::Converter

#coerce, coerce, #dump, dump, #inspect, inspect, meta_info, new_coerce_state, type_info

Methods included from Internal::Util::SorbetRuntimeSupport

#const_missing, #define_sorbet_constant!, #sorbet_constant_defined?, #to_sorbet_type, to_sorbet_type

Constructor Details

#initialize(name: nil, phones: nil) ⇒ Object

Parameters:

  • name (String) (defaults to: nil)
  • phones (Array<String>) (defaults to: nil)


# File 'lib/zavudev/models/message_content.rb', line 226

Instance Attribute Details

#buttonsArray<Zavudev::Models::MessageContent::Button>?

Interactive buttons (max 3).



10
# File 'lib/zavudev/models/message_content.rb', line 10

optional :buttons, -> { Zavudev::Internal::Type::ArrayOf[Zavudev::MessageContent::Button] }

#contactsArray<Zavudev::Models::MessageContent::Contact>?

Contact cards for contact messages.



16
# File 'lib/zavudev/models/message_content.rb', line 16

optional :contacts, -> { Zavudev::Internal::Type::ArrayOf[Zavudev::MessageContent::Contact] }

#cta_display_textString?

Button label for cta_url messages.

Returns:

  • (String, nil)


22
# File 'lib/zavudev/models/message_content.rb', line 22

optional :cta_display_text, String, api_name: :ctaDisplayText

#cta_header_media_urlString?

Public HTTPS URL of the header media when ctaHeaderType is ‘image’, ‘video’, or ‘document’. WhatsApp fetches this URL — it must be publicly reachable and return the declared content type.

Returns:

  • (String, nil)


30
# File 'lib/zavudev/models/message_content.rb', line 30

optional :cta_header_media_url, String, api_name: :ctaHeaderMediaUrl

#cta_header_textString?

Header text when ctaHeaderType is ‘text’.

Returns:

  • (String, nil)


36
# File 'lib/zavudev/models/message_content.rb', line 36

optional :cta_header_text, String, api_name: :ctaHeaderText

#cta_header_typeSymbol, ...

Optional header type for cta_url messages.



42
# File 'lib/zavudev/models/message_content.rb', line 42

optional :cta_header_type, enum: -> { Zavudev::MessageContent::CtaHeaderType }, api_name: :ctaHeaderType

#cta_urlString?

Destination URL opened in the device’s default browser when the button is tapped. Used with messageType=cta_url. WhatsApp requires HTTPS in production.

Returns:

  • (String, nil)


49
# File 'lib/zavudev/models/message_content.rb', line 49

optional :cta_url, String, api_name: :ctaUrl

#emojiString?

Emoji for reaction messages.

Returns:

  • (String, nil)


55
# File 'lib/zavudev/models/message_content.rb', line 55

optional :emoji, String

#filenameString?

Filename for documents.

Returns:

  • (String, nil)


61
# File 'lib/zavudev/models/message_content.rb', line 61

optional :filename, String

Optional footer text for cta_url messages.

Returns:

  • (String, nil)


67
# File 'lib/zavudev/models/message_content.rb', line 67

optional :footer_text, String, api_name: :footerText

#latitudeFloat?

Latitude for location messages.

Returns:

  • (Float, nil)


73
# File 'lib/zavudev/models/message_content.rb', line 73

optional :latitude, Float

#list_buttonString?

Button text for list messages.

Returns:

  • (String, nil)


79
# File 'lib/zavudev/models/message_content.rb', line 79

optional :list_button, String, api_name: :listButton

#location_addressString?

Address of the location.

Returns:

  • (String, nil)


85
# File 'lib/zavudev/models/message_content.rb', line 85

optional :location_address, String, api_name: :locationAddress

#location_nameString?

Name of the location.

Returns:

  • (String, nil)


91
# File 'lib/zavudev/models/message_content.rb', line 91

optional :location_name, String, api_name: :locationName

#longitudeFloat?

Longitude for location messages.

Returns:

  • (Float, nil)


97
# File 'lib/zavudev/models/message_content.rb', line 97

optional :longitude, Float

#media_idString?

WhatsApp media ID if already uploaded.

Returns:

  • (String, nil)


103
# File 'lib/zavudev/models/message_content.rb', line 103

optional :media_id, String, api_name: :mediaId

#media_urlString?

URL of the media file (for image, video, audio, document, sticker).

Returns:

  • (String, nil)


109
# File 'lib/zavudev/models/message_content.rb', line 109

optional :media_url, String, api_name: :mediaUrl

#mime_typeString?

MIME type of the media.

Returns:

  • (String, nil)


115
# File 'lib/zavudev/models/message_content.rb', line 115

optional :mime_type, String, api_name: :mimeType

#react_to_message_idString?

Message ID to react to.

Returns:

  • (String, nil)


121
# File 'lib/zavudev/models/message_content.rb', line 121

optional :react_to_message_id, String, api_name: :reactToMessageId

#sectionsArray<Zavudev::Models::MessageContent::Section>?

Sections for list messages.



127
# File 'lib/zavudev/models/message_content.rb', line 127

optional :sections, -> { Zavudev::Internal::Type::ArrayOf[Zavudev::MessageContent::Section] }

#template_button_variablesHash{Symbol=>String}?

Variables for dynamic button placeholders (URL buttons and OTP buttons). Keys are the button index (0, 1, 2) in the template’s ‘buttons` array — not the placeholder name. Values substitute the `{1}` placeholder inside that button’s URL.

**WhatsApp constraints:**

  • URL buttons only accept ‘{1}` — positional, numeric, no whitespace, no name. Named placeholders like `{token}` are stored as literal URL text by Meta and cannot be substituted.

  • At most one placeholder per URL button.

  • A template may have at most three buttons.

  • Static URL buttons (no placeholder) and ‘quick_reply` buttons are not included here.

Returns:

  • (Hash{Symbol=>String}, nil)


146
147
148
# File 'lib/zavudev/models/message_content.rb', line 146

optional :template_button_variables,
Zavudev::Internal::Type::HashOf[String],
api_name: :templateButtonVariables

#template_idString?

Template ID for template messages.

Returns:

  • (String, nil)


154
# File 'lib/zavudev/models/message_content.rb', line 154

optional :template_id, String, api_name: :templateId

#template_variablesHash{Symbol=>String}?

Variables for body placeholders. Keys are positions (1, 2, 3, …) matching the order placeholders appear in the template body.

Returns:

  • (Hash{Symbol=>String}, nil)


161
# File 'lib/zavudev/models/message_content.rb', line 161

optional :template_variables, Zavudev::Internal::Type::HashOf[String], api_name: :templateVariables

Class Method Details

.valuesArray<Symbol>

Returns:

  • (Array<Symbol>)


# File 'lib/zavudev/models/message_content.rb', line 258