Class: Blueticks::Resources::MessagesResource

Inherits:
BaseResource
  • Object
show all
Defined in:
lib/blueticks/resources/messages.rb

Instance Attribute Summary

Attributes inherited from BaseResource

#client

Instance Method Summary collapse

Methods inherited from BaseResource

#initialize

Constructor Details

This class inherits a constructor from Blueticks::BaseResource

Instance Method Details

#get(message_id) ⇒ Object

Retrieve a single message by id.



33
34
35
36
# File 'lib/blueticks/resources/messages.rb', line 33

def get(message_id)
  data = client.request("GET", "/v1/messages/#{message_id}")
  Types::Message.from_hash(data)
end

#list(limit: nil, cursor: nil) ⇒ Object

List messages sent through the API, newest first. Cursor-paginated.



39
40
41
42
43
44
45
# File 'lib/blueticks/resources/messages.rb', line 39

def list(limit: nil, cursor: nil)
  params = {}
  params["limit"] = limit unless limit.nil?
  params["cursor"] = cursor unless cursor.nil?
  data = client.request("GET", "/v1/messages", params: params.empty? ? nil : params)
  Types::Page.from_hash(data, item_type: Types::Message)
end

#send(to:, text: nil, media_url: nil, media_caption: nil, send_at: nil, from: nil, idempotency_key: nil) ⇒ Blueticks::Types::Message

Send a message immediately, or schedule one for later with ‘send_at:`.

Parameters:

  • to (String)

    WhatsApp chat-id or phone number

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

    Plain-text message body

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

    Public URL to media to attach

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

    Caption for media

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

    ISO 8601 timestamp to schedule

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

    Multi-number engine identifier

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

    Optional idempotency key

Returns:



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/blueticks/resources/messages.rb', line 20

def send(to:, text: nil, media_url: nil, media_caption: nil, send_at: nil,
         from: nil, idempotency_key: nil)
  body = { "to" => to }
  body["text"] = text unless text.nil?
  body["media_url"] = media_url unless media_url.nil?
  body["media_caption"] = media_caption unless media_caption.nil?
  body["send_at"] = send_at unless send_at.nil?
  body["from"] = from unless from.nil?
  data = client.request("POST", "/v1/messages", body: body, idempotency_key: idempotency_key)
  Types::Message.from_hash(data)
end