Class: SimpleConnect::Api::Messages

Inherits:
Object
  • Object
show all
Includes:
ResponseAttachment
Defined in:
lib/simple_connect/api/messages.rb

Overview

Messages resource. Sends WhatsApp template messages over Bearer auth via the account API (POST /api/v1/whatsapp_messages). Holds the shared Request and the base URI (host); owns the fixed endpoint path.

Constant Summary collapse

MESSAGES_PATH =
"/api/v1/whatsapp_messages"
MESSAGE_TYPE_TEMPLATE =
"template"

Instance Method Summary collapse

Constructor Details

#initialize(request:, base_uri:) ⇒ Messages

Returns a new instance of Messages.



14
15
16
17
# File 'lib/simple_connect/api/messages.rb', line 14

def initialize(request:, base_uri:)
  @request  = request
  @base_uri = base_uri
end

Instance Method Details

#deliver(template_name:, recipients:, language_code: nil, sender_phone_number: nil, header: nil, body: nil, buttons: nil, message_group: nil) ⇒ Object

Raises:

  • (ArgumentError)


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/simple_connect/api/messages.rb', line 19

def deliver(template_name:, recipients:, language_code: nil, sender_phone_number: nil,
            header: nil, body: nil, buttons: nil, message_group: nil)
  raise ArgumentError, "template_name is required" if template_name.to_s.strip.empty?

  entry = {
    "message_type" => MESSAGE_TYPE_TEMPLATE,
    "template_name" => template_name,
    "recipients" => normalize_recipients(recipients),
    "language_code" => language_code,
    "sender_phone_number" => sender_phone_number,
    "header" => header,
    "body" => body,
    "buttons" => buttons,
    "message_group" => message_group
  }.compact

  payload = { "messages" => [entry] }.to_json
  attach_response(@request.post(collection_uri, body: payload), Responses::MessageDeliverResponse)
end

#detail(message_id) ⇒ Object

Raises:

  • (ArgumentError)


39
40
41
42
43
# File 'lib/simple_connect/api/messages.rb', line 39

def detail(message_id)
  raise ArgumentError, "message_id is required" if message_id.to_s.strip.empty?

  attach_response(@request.get(member_uri(message_id)), Responses::MessageDetailResponse)
end