Class: Line::Bot::V2::MessagingApi::PnpTemplatedMessageBody

Inherits:
Object
  • Object
show all
Defined in:
lib/line/bot/v2/messaging_api/model/pnp_templated_message_body.rb,
sig/line/bot/v2/messaging_api/model/pnp_templated_message_body.rbs

Overview

The body object of the template you want to send. You can't specify the same item more than once in a single message.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(emphasized_item: nil, items: nil, buttons: nil, **dynamic_attributes) ⇒ Object

Parameters:

  • emphasized_item (PnpTemplatedEmphasizedItem, Hash[Symbol, untyped], nil) (defaults to: nil)
  • items (Array[PnpTemplatedItem, Hash[Symbol, untyped]], nil) (defaults to: nil) —

    Array of items to include in the message. The itemKey must be unique across emphasizedItem and items.

  • buttons (Array[PnpTemplatedButton, Hash[Symbol, untyped]], nil) (defaults to: nil) —

    Array of buttons to include in the message. The buttonKey must be unique.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/line/bot/v2/messaging_api/model/pnp_templated_message_body.rb', line 30

def initialize(
  emphasized_item: nil,
  items: nil,
  buttons: nil,
  **dynamic_attributes
)
  
  @emphasized_item = emphasized_item.is_a?(Line::Bot::V2::MessagingApi::PnpTemplatedEmphasizedItem) || emphasized_item.nil? ? emphasized_item : Line::Bot::V2::MessagingApi::PnpTemplatedEmphasizedItem.create(**emphasized_item)
  @items = items&.map do |item|
    if item.is_a?(Hash)
      Line::Bot::V2::MessagingApi::PnpTemplatedItem.create(**item)
    else
      item
    end
  end
  @buttons = buttons&.map do |item|
    if item.is_a?(Hash)
      Line::Bot::V2::MessagingApi::PnpTemplatedButton.create(**item)
    else
      item
    end
  end

  dynamic_attributes.each do |key, value|
    self.class.attr_accessor key

    if value.is_a?(Hash)
      struct_klass = Struct.new(*value.keys.map(&:to_sym))
      struct_values = value.map { |_k, v| v.is_a?(Hash) ? Line::Bot::V2::Utils.hash_to_struct(v) : v }
      instance_variable_set("@#{key}", struct_klass.new(*struct_values))
    else
      instance_variable_set("@#{key}", value)
    end
  end
end

Instance Attribute Details

#buttons ⇒ Array[PnpTemplatedButton]?

Returns Array of buttons to include in the message. The buttonKey must be unique.

Returns:

  • (Array[PnpTemplatedButton], nil) —

    Array of buttons to include in the message. The buttonKey must be unique.



25
26
27
# File 'lib/line/bot/v2/messaging_api/model/pnp_templated_message_body.rb', line 25

def buttons
  @buttons
end

#emphasized_item ⇒ PnpTemplatedEmphasizedItem?

Returns:



19
20
21
# File 'lib/line/bot/v2/messaging_api/model/pnp_templated_message_body.rb', line 19

def emphasized_item
  @emphasized_item
end

#items ⇒ Array[PnpTemplatedItem]?

Returns Array of items to include in the message. The itemKey must be unique across emphasizedItem and items.

Returns:

  • (Array[PnpTemplatedItem], nil) —

    Array of items to include in the message. The itemKey must be unique across emphasizedItem and items.



22
23
24
# File 'lib/line/bot/v2/messaging_api/model/pnp_templated_message_body.rb', line 22

def items
  @items
end

Class Method Details

.create(args) ⇒ Line::Bot::V2::MessagingApi::PnpTemplatedMessageBody

Create an instance of the class from a hash

Parameters:

  • args (Hash) —

    Hash containing all the required attributes

  • (Hash[Symbol, untyped])

Returns:



69
70
71
72
# File 'lib/line/bot/v2/messaging_api/model/pnp_templated_message_body.rb', line 69

def self.create(args)
  symbolized_args = Line::Bot::V2::Utils.deep_symbolize(args)
  return new(**symbolized_args)
end

Instance Method Details

#==(other) ⇒ Boolean

Returns true if the objects are equal, false otherwise.

Parameters:

  • other (Object) —

    Object to compare

Returns:

  • (Boolean) —

    true if the objects are equal, false otherwise



76
77
78
79
80
81
82
# File 'lib/line/bot/v2/messaging_api/model/pnp_templated_message_body.rb', line 76

def ==(other)
  return false unless self.class == other.class

  instance_variables.all? do |var|
      instance_variable_get(var) == other.instance_variable_get(var)
  end
end

#hash ⇒ Integer

Returns Hash code of the object.

Returns:

  • (Integer) —

    Hash code of the object



85
86
87
# File 'lib/line/bot/v2/messaging_api/model/pnp_templated_message_body.rb', line 85

def hash
  [self.class, *instance_variables.map { |var| instance_variable_get(var) }].hash
end