Class: Knockapi::Resources::Messages

Inherits:
Object
  • Object
show all
Defined in:
lib/knockapi/resources/messages.rb,
lib/knockapi/resources/messages/batch.rb,
sig/knockapi/resources/messages.rbs,
sig/knockapi/resources/messages/batch.rbs

Overview

A message sent to a single recipient on a channel.

Defined Under Namespace

Classes: Batch

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ Messages

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Messages.

Parameters:



358
359
360
361
# File 'lib/knockapi/resources/messages.rb', line 358

def initialize(client:)
  @client = client
  @batch = Knockapi::Resources::Messages::Batch.new(client: client)
end

Instance Attribute Details

#batchKnockapi::Resources::Messages::Batch (readonly)

A message sent to a single recipient on a channel.



9
10
11
# File 'lib/knockapi/resources/messages.rb', line 9

def batch
  @batch
end

Instance Method Details

#archive(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Archives a message for the user. Archived messages are hidden from the default message list in the feed but can still be accessed and unarchived later.

Parameters:

Returns:

See Also:



76
77
78
79
80
81
82
83
# File 'lib/knockapi/resources/messages.rb', line 76

def archive(message_id, params = {})
  @client.request(
    method: :put,
    path: ["v1/messages/%1$s/archived", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#get(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Retrieves a specific message by its ID.

Parameters:

Returns:

See Also:



96
97
98
99
100
101
102
103
# File 'lib/knockapi/resources/messages.rb', line 96

def get(message_id, params = {})
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#get_content(message_id, request_options: {}) ⇒ Knockapi::Models::MessageGetContentResponse

Returns the fully rendered contents of a message, where the response depends on which channel the message was sent through.

Parameters:

Returns:

See Also:



117
118
119
120
121
122
123
124
# File 'lib/knockapi/resources/messages.rb', line 117

def get_content(message_id, params = {})
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s/content", message_id],
    model: Knockapi::Models::MessageGetContentResponse,
    options: params[:request_options]
  )
end

#list(after: nil, before: nil, channel_id: nil, engagement_status: nil, inserted_at: nil, message_ids: nil, page_size: nil, source: nil, status: nil, tenant: nil, trigger_data: nil, workflow_categories: nil, workflow_recipient_run_id: nil, workflow_run_id: nil, request_options: {}) ⇒ Knockapi::Internal::ItemsCursor<Knockapi::Models::Message>

Some parameter documentations has been truncated, see Models::MessageListParams for more details.

Returns a paginated list of messages for the current environment.

Parameters:

  • after (String)

    The cursor to fetch entries after.

  • before (String)

    The cursor to fetch entries before.

  • channel_id (String)

    Limits the results to items with the corresponding channel ID.

  • engagement_status (Array<Symbol, Knockapi::Models::MessageListParams::EngagementStatus>)

    Limits the results to messages with the given engagement status.

  • inserted_at (Knockapi::Models::MessageListParams::InsertedAt)
  • message_ids (Array<String>)

    Limits the results to only the message IDs given (max 50). Note: when using this

  • page_size (Integer)

    The number of items per page (defaults to 50).

  • source (String)

    Limits the results to messages triggered by the given workflow key.

  • status (Array<Symbol, Knockapi::Models::MessageListParams::Status>)

    Limits the results to messages with the given delivery status.

  • tenant (String)

    Limits the results to items with the corresponding tenant.

  • trigger_data (String)

    Limits the results to only messages that were generated with the given data. See

  • workflow_categories (Array<String>)

    Limits the results to messages related to any of the provided categories.

  • workflow_recipient_run_id (String)

    Limits the results to messages for a specific recipient's workflow run.

  • workflow_run_id (String)

    Limits the results to messages associated with the top-level workflow run ID ret

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/knockapi/resources/messages.rb', line 51

def list(params = {})
  parsed, options = Knockapi::MessageListParams.dump_request(params)
  query = Knockapi::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: "v1/messages",
    query: query,
    page: Knockapi::Internal::ItemsCursor,
    model: Knockapi::Message,
    options: options
  )
end

#list_activities(message_id, after: nil, before: nil, page_size: nil, trigger_data: nil, request_options: {}) ⇒ Knockapi::Internal::ItemsCursor<Knockapi::Models::Activity>

Returns a paginated list of activities for the specified message.

Parameters:

  • message_id (String)

    The ID of the message to fetch activities for.

  • after (String)

    The cursor to fetch entries after.

  • before (String)

    The cursor to fetch entries before.

  • page_size (Integer)

    The number of items per page (defaults to 50).

  • trigger_data (String)

    The trigger data to filter activities by.

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/knockapi/resources/messages.rb', line 145

def list_activities(message_id, params = {})
  parsed, options = Knockapi::MessageListActivitiesParams.dump_request(params)
  query = Knockapi::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s/activities", message_id],
    query: query,
    page: Knockapi::Internal::ItemsCursor,
    model: Knockapi::Activity,
    options: options
  )
end

#list_delivery_logs(message_id, after: nil, before: nil, page_size: nil, request_options: {}) ⇒ Knockapi::Internal::ItemsCursor<Knockapi::Models::MessageDeliveryLog>

Returns a paginated list of delivery logs for the specified message.

Parameters:

  • message_id (String)

    The ID of the message to fetch delivery logs for.

  • after (String)

    The cursor to fetch entries after.

  • before (String)

    The cursor to fetch entries before.

  • page_size (Integer)

    The number of items per page (defaults to 50).

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/knockapi/resources/messages.rb', line 175

def list_delivery_logs(message_id, params = {})
  parsed, options = Knockapi::MessageListDeliveryLogsParams.dump_request(params)
  query = Knockapi::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s/delivery_logs", message_id],
    query: query,
    page: Knockapi::Internal::ItemsCursor,
    model: Knockapi::MessageDeliveryLog,
    options: options
  )
end

#list_events(message_id, after: nil, before: nil, page_size: nil, request_options: {}) ⇒ Knockapi::Internal::ItemsCursor<Knockapi::Models::MessageEvent>

Returns a paginated list of events for the specified message.

Parameters:

  • message_id (String)

    The ID of the message to fetch events for.

  • after (String)

    The cursor to fetch entries after.

  • before (String)

    The cursor to fetch entries before.

  • page_size (Integer)

    The number of items per page (defaults to 50).

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/knockapi/resources/messages.rb', line 205

def list_events(message_id, params = {})
  parsed, options = Knockapi::MessageListEventsParams.dump_request(params)
  query = Knockapi::Internal::Util.encode_query_params(parsed)
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s/events", message_id],
    query: query,
    page: Knockapi::Internal::ItemsCursor,
    model: Knockapi::MessageEvent,
    options: options
  )
end

#mark_as_interacted(message_id, metadata: nil, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as interacted with by the user. This can include any user action on the message, with optional metadata about the specific interaction. Cannot include more than 5 key-value pairs, must not contain nested data. Read more about message engagement statuses here.

Parameters:

  • message_id (String)

    The unique identifier for the message.

  • metadata (Hash{Symbol=>Object})

    Metadata about the interaction.

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



235
236
237
238
239
240
241
242
243
244
# File 'lib/knockapi/resources/messages.rb', line 235

def mark_as_interacted(message_id, params = {})
  parsed, options = Knockapi::MessageMarkAsInteractedParams.dump_request(params)
  @client.request(
    method: :put,
    path: ["v1/messages/%1$s/interacted", message_id],
    body: parsed,
    model: Knockapi::Message,
    options: options
  )
end

#mark_as_read(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as read. This indicates that the user has read the message content. Read more about message engagement statuses here.

Parameters:

Returns:

See Also:



259
260
261
262
263
264
265
266
# File 'lib/knockapi/resources/messages.rb', line 259

def mark_as_read(message_id, params = {})
  @client.request(
    method: :put,
    path: ["v1/messages/%1$s/read", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#mark_as_seen(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as seen. This indicates that the user has viewed the message in their feed or inbox. Read more about message engagement statuses here.

Parameters:

Returns:

See Also:



281
282
283
284
285
286
287
288
# File 'lib/knockapi/resources/messages.rb', line 281

def mark_as_seen(message_id, params = {})
  @client.request(
    method: :put,
    path: ["v1/messages/%1$s/seen", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#mark_as_unread(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as unread. This reverses the read state. Read more about message engagement statuses here.

Parameters:

Returns:

See Also:



303
304
305
306
307
308
309
310
# File 'lib/knockapi/resources/messages.rb', line 303

def mark_as_unread(message_id, params = {})
  @client.request(
    method: :delete,
    path: ["v1/messages/%1$s/read", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#mark_as_unseen(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as unseen. This reverses the seen state. Read more about message engagement statuses here.

Parameters:

Returns:

See Also:



325
326
327
328
329
330
331
332
# File 'lib/knockapi/resources/messages.rb', line 325

def mark_as_unseen(message_id, params = {})
  @client.request(
    method: :delete,
    path: ["v1/messages/%1$s/seen", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#unarchive(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Removes a message from the archived state, making it visible in the default message list in the feed again.

Parameters:

Returns:

See Also:



346
347
348
349
350
351
352
353
# File 'lib/knockapi/resources/messages.rb', line 346

def unarchive(message_id, params = {})
  @client.request(
    method: :delete,
    path: ["v1/messages/%1$s/archived", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end