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 287

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

#reply_to_fromString?

Sender of the quoted message (phone number in E.164 format).

Returns:

  • (String, nil)


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

optional :reply_to_from, String, api_name: :replyToFrom

#reply_to_message_idString?

Zavu message ID of the quoted message this message replies to. Present on inbound messages that quote an earlier message. Omitted when the quoted message is not found in Zavu (e.g. an old or unknown message) — use replyToProviderMessageId in that case.

Returns:

  • (String, nil)


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

optional :reply_to_message_id, String, api_name: :replyToMessageId

#reply_to_message_typeString?

Type of the quoted message (text, image, video, etc.).

Returns:

  • (String, nil)


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

optional :reply_to_message_type, String, api_name: :replyToMessageType

#reply_to_provider_message_idString?

Provider message ID (WhatsApp WAMID) of the quoted message. Present whenever an inbound message is a reply, even if the quoted message is not stored in Zavu.

Returns:

  • (String, nil)


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

optional :reply_to_provider_message_id, String, api_name: :replyToProviderMessageId

#reply_to_textString?

Truncated snippet of the quoted message’s text, for display. Empty when the quoted message has no text (e.g. media).

Returns:

  • (String, nil)


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

optional :reply_to_text, String, api_name: :replyToText

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

Sections for list messages.



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

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)


181
182
183
# File 'lib/zavudev/models/message_content.rb', line 181

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

#template_header_variablesHash{Symbol=>String}?

Value for a text-header variable, keyed by ‘1` (WhatsApp text headers allow at most one variable). Optional override. If omitted, Zavu resolves the header from `templateVariables` using the header placeholder’s name (e.g. ‘novios`). Static text headers need no value.

Returns:

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


192
193
194
# File 'lib/zavudev/models/message_content.rb', line 192

optional :template_header_variables,
Zavudev::Internal::Type::HashOf[String],
api_name: :templateHeaderVariables

#template_idString?

Template ID for template messages.

Returns:

  • (String, nil)


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

optional :template_id, String, api_name: :templateId

#template_variablesHash{Symbol=>String}?

Variables for body placeholders. Key them to match the template body: by position (‘1`, `2`, …) for positional templates, or by name (e.g. `customer_name`) for named templates. Zavu detects the template’s format and sends the correct payload to Meta. Named keys also resolve a named text-header variable. Do not mix positional and named keys in the same request.

Returns:

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


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

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 319