Class: EvolutionApi::Message

Inherits:
Object
  • Object
show all
Defined in:
lib/evolution_api/message.rb

Overview

Classe para representar mensagens do WhatsApp

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, instance_name = nil) ⇒ Message

Returns a new instance of Message.



8
9
10
11
12
13
14
15
16
# File 'lib/evolution_api/message.rb', line 8

def initialize(data, instance_name = nil)
  @id = data['id']
  @key = data['key']
  @message = data['message']
  @message_timestamp = data['messageTimestamp']
  @status = data['status']
  @participant = data['participant']
  @instance_name = instance_name
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



6
7
8
# File 'lib/evolution_api/message.rb', line 6

def id
  @id
end

#instance_nameObject (readonly)

Returns the value of attribute instance_name.



6
7
8
# File 'lib/evolution_api/message.rb', line 6

def instance_name
  @instance_name
end

#keyObject (readonly)

Returns the value of attribute key.



6
7
8
# File 'lib/evolution_api/message.rb', line 6

def key
  @key
end

#messageObject (readonly)

Returns the value of attribute message.



6
7
8
# File 'lib/evolution_api/message.rb', line 6

def message
  @message
end

#message_timestampObject (readonly)

Returns the value of attribute message_timestamp.



6
7
8
# File 'lib/evolution_api/message.rb', line 6

def message_timestamp
  @message_timestamp
end

#participantObject (readonly)

Returns the value of attribute participant.



6
7
8
# File 'lib/evolution_api/message.rb', line 6

def participant
  @participant
end

#statusObject (readonly)

Returns the value of attribute status.



6
7
8
# File 'lib/evolution_api/message.rb', line 6

def status
  @status
end

Instance Method Details

#audioObject

Obtém informações do áudio



49
50
51
52
53
# File 'lib/evolution_api/message.rb', line 49

def audio
  return nil unless audio?

  message['audioMessage']
end

#audio?Boolean

Verifica se é uma mensagem de áudio

Returns:

  • (Boolean)


44
45
46
# File 'lib/evolution_api/message.rb', line 44

def audio?
  message&.key?('audioMessage')
end

#broadcast?Boolean

Verifica se é uma mensagem de broadcast

Returns:

  • (Boolean)


169
170
171
# File 'lib/evolution_api/message.rb', line 169

def broadcast?
  key['remoteJid']&.include?('@broadcast')
end

#buttonObject

Obtém informações do botão



109
110
111
112
113
114
# File 'lib/evolution_api/message.rb', line 109

def button
  return message['buttonsResponseMessage'] if message&.key?('buttonsResponseMessage')
  return message['buttonMessage'] if message&.key?('buttonMessage')

  nil
end

#button?Boolean

Verifica se é uma mensagem de botão

Returns:

  • (Boolean)


104
105
106
# File 'lib/evolution_api/message.rb', line 104

def button?
  message&.key?('buttonsResponseMessage') || message&.key?('buttonMessage')
end

#contactObject

Obtém informações do contato



97
98
99
100
101
# File 'lib/evolution_api/message.rb', line 97

def contact
  return nil unless contact?

  message['contactMessage']
end

#contact?Boolean

Verifica se é um contato

Returns:

  • (Boolean)


92
93
94
# File 'lib/evolution_api/message.rb', line 92

def contact?
  message&.key?('contactMessage')
end

#delivered?Boolean

Verifica se a mensagem foi entregue

Returns:

  • (Boolean)


194
195
196
# File 'lib/evolution_api/message.rb', line 194

def delivered?
  status == 'delivered'
end

#documentObject

Obtém informações do documento



73
74
75
76
77
# File 'lib/evolution_api/message.rb', line 73

def document
  return nil unless document?

  message['documentMessage']
end

#document?Boolean

Verifica se é um documento

Returns:

  • (Boolean)


68
69
70
# File 'lib/evolution_api/message.rb', line 68

def document?
  message&.key?('documentMessage')
end

#failed?Boolean

Verifica se a mensagem falhou

Returns:

  • (Boolean)


204
205
206
# File 'lib/evolution_api/message.rb', line 204

def failed?
  status == 'failed'
end

#fromObject

Obtém o número do remetente



154
155
156
# File 'lib/evolution_api/message.rb', line 154

def from
  key['remoteJid']&.split('@')&.first
end

#from_me?Boolean

Verifica se a mensagem foi enviada pelo próprio usuário

Returns:

  • (Boolean)


179
180
181
# File 'lib/evolution_api/message.rb', line 179

def from_me?
  key['fromMe'] == true
end

#group?Boolean

Verifica se é uma mensagem de grupo

Returns:

  • (Boolean)


164
165
166
# File 'lib/evolution_api/message.rb', line 164

def group?
  key['remoteJid']&.include?('@g.us')
end

#imageObject

Obtém informações da imagem



37
38
39
40
41
# File 'lib/evolution_api/message.rb', line 37

def image
  return nil unless image?

  message['imageMessage']
end

#image?Boolean

Verifica se é uma mensagem de imagem

Returns:

  • (Boolean)


32
33
34
# File 'lib/evolution_api/message.rb', line 32

def image?
  message&.key?('imageMessage')
end

#listObject

Obtém informações da lista



122
123
124
125
126
127
# File 'lib/evolution_api/message.rb', line 122

def list
  return message['listResponseMessage'] if message&.key?('listResponseMessage')
  return message['listMessage'] if message&.key?('listMessage')

  nil
end

#list?Boolean

Verifica se é uma lista

Returns:

  • (Boolean)


117
118
119
# File 'lib/evolution_api/message.rb', line 117

def list?
  message&.key?('listResponseMessage') || message&.key?('listMessage')
end

#locationObject

Obtém informações da localização



85
86
87
88
89
# File 'lib/evolution_api/message.rb', line 85

def location
  return nil unless location?

  message['locationMessage']
end

#location?Boolean

Verifica se é uma localização

Returns:

  • (Boolean)


80
81
82
# File 'lib/evolution_api/message.rb', line 80

def location?
  message&.key?('locationMessage')
end

#message_idObject

Obtém o ID da mensagem



159
160
161
# File 'lib/evolution_api/message.rb', line 159

def message_id
  key['id']
end

#private?Boolean

Verifica se é uma mensagem privada

Returns:

  • (Boolean)


174
175
176
# File 'lib/evolution_api/message.rb', line 174

def private?
  !group? && !broadcast?
end

#reactionObject

Obtém informações da reação



135
136
137
138
139
# File 'lib/evolution_api/message.rb', line 135

def reaction
  return nil unless reaction?

  message['reactionMessage']
end

#reaction?Boolean

Verifica se é uma mensagem de reação

Returns:

  • (Boolean)


130
131
132
# File 'lib/evolution_api/message.rb', line 130

def reaction?
  message&.key?('reactionMessage')
end

#read?Boolean

Verifica se a mensagem foi lida

Returns:

  • (Boolean)


189
190
191
# File 'lib/evolution_api/message.rb', line 189

def read?
  status == 'read'
end

#sent?Boolean

Verifica se a mensagem foi enviada

Returns:

  • (Boolean)


199
200
201
# File 'lib/evolution_api/message.rb', line 199

def sent?
  status == 'sent'
end

#stickerObject

Obtém informações do sticker



147
148
149
150
151
# File 'lib/evolution_api/message.rb', line 147

def sticker
  return nil unless sticker?

  message['stickerMessage']
end

#sticker?Boolean

Verifica se é uma mensagem de sticker

Returns:

  • (Boolean)


142
143
144
# File 'lib/evolution_api/message.rb', line 142

def sticker?
  message&.key?('stickerMessage')
end

#textObject

Obtém o texto da mensagem



24
25
26
27
28
29
# File 'lib/evolution_api/message.rb', line 24

def text
  return message['conversation'] if message&.key?('conversation')
  return message['extendedTextMessage']['text'] if message&.key?('extendedTextMessage')

  nil
end

#text?Boolean

Verifica se é uma mensagem de texto

Returns:

  • (Boolean)


19
20
21
# File 'lib/evolution_api/message.rb', line 19

def text?
  message&.key?('conversation') || message&.key?('extendedTextMessage')
end

#timestampObject

Obtém o timestamp da mensagem



184
185
186
# File 'lib/evolution_api/message.rb', line 184

def timestamp
  Time.at(message_timestamp) if message_timestamp
end

#to_hObject

Converte para hash



226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
# File 'lib/evolution_api/message.rb', line 226

def to_h
  {
    id: id,
    key: key,
    message: message,
    message_timestamp: message_timestamp,
    status: status,
    participant: participant,
    instance_name: instance_name,
    type: type,
    from: from,
    from_me: from_me?,
    group: group?,
    timestamp: timestamp,
    text: text
  }
end

#to_json(*args) ⇒ Object

Converte para JSON



245
246
247
# File 'lib/evolution_api/message.rb', line 245

def to_json(*args)
  to_h.to_json(*args)
end

#typeObject

Obtém o tipo da mensagem



209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
# File 'lib/evolution_api/message.rb', line 209

def type
  return 'text' if text?
  return 'image' if image?
  return 'audio' if audio?
  return 'video' if video?
  return 'document' if document?
  return 'location' if location?
  return 'contact' if contact?
  return 'button' if button?
  return 'list' if list?
  return 'reaction' if reaction?
  return 'sticker' if sticker?

  'unknown'
end

#videoObject

Obtém informações do vídeo



61
62
63
64
65
# File 'lib/evolution_api/message.rb', line 61

def video
  return nil unless video?

  message['videoMessage']
end

#video?Boolean

Verifica se é uma mensagem de vídeo

Returns:

  • (Boolean)


56
57
58
# File 'lib/evolution_api/message.rb', line 56

def video?
  message&.key?('videoMessage')
end