Class: EvolutionApi::Client

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/evolution_api/client.rb

Overview

Cliente principal para interagir com a Evolution API

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config = nil) ⇒ Client

Returns a new instance of Client.



10
11
12
13
# File 'lib/evolution_api/client.rb', line 10

def initialize(config = nil)
  @config = config || EvolutionApi.config
  setup_http_client
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



8
9
10
# File 'lib/evolution_api/client.rb', line 8

def config
  @config
end

Instance Method Details

#archive_chat(instance_name, number) ⇒ Object

Arquivar chat



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

def archive_chat(instance_name, number)
  post("/chat/archiveChat/#{instance_name}", { number: number })
end

#block_contact(instance_name, number) ⇒ Object

Bloqueia um contato



226
227
228
# File 'lib/evolution_api/client.rb', line 226

def block_contact(instance_name, number)
  post("/contact/blockContact/#{instance_name}", { number: number })
end

#check_number(instance_name, number) ⇒ Object

Verifica se um número existe no WhatsApp



221
222
223
# File 'lib/evolution_api/client.rb', line 221

def check_number(instance_name, number)
  post("/contact/checkNumber/#{instance_name}", { number: number })
end

#connect_instance(instance_name) ⇒ Object

Conecta uma instância



38
39
40
# File 'lib/evolution_api/client.rb', line 38

def connect_instance(instance_name)
  post("/instance/connect/#{instance_name}")
end

#create_instance(instance_name, options = {}) ⇒ Object

Cria uma nova instância



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/evolution_api/client.rb', line 23

def create_instance(instance_name, options = {})
  body = {
    instanceName: instance_name,
    qrcode: options[:qrcode] || true,
    number: options[:number],
    token: options[:token],
    webhook: options[:webhook],
    webhookByEvents: options[:webhook_by_events] || false,
    webhookBase64: options[:webhook_base64] || false
  }.compact

  post('/instance/create', body)
end

#delete_chat(instance_name, number) ⇒ Object

Deletar chat



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

def delete_chat(instance_name, number)
  delete("/chat/deleteChat/#{instance_name}/#{number}")
end

#delete_instance(instance_name) ⇒ Object

Remove uma instância



48
49
50
# File 'lib/evolution_api/client.rb', line 48

def delete_instance(instance_name)
  delete("/instance/delete/#{instance_name}")
end

#delete_webhook(instance_name) ⇒ Object

Remove webhook



256
257
258
# File 'lib/evolution_api/client.rb', line 256

def delete_webhook(instance_name)
  delete("/webhook/del/#{instance_name}")
end

#disconnect_instance(instance_name) ⇒ Object

Desconecta uma instância



43
44
45
# File 'lib/evolution_api/client.rb', line 43

def disconnect_instance(instance_name)
  delete("/instance/logout/#{instance_name}")
end

#get_chats(instance_name) ⇒ Object

Obtém chats de uma instância



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

def get_chats(instance_name)
  get("/chat/findChats/#{instance_name}")
end

#get_contact(instance_name, number) ⇒ Object

Obtém informações de um contato



216
217
218
# File 'lib/evolution_api/client.rb', line 216

def get_contact(instance_name, number)
  get("/contact/findContact/#{instance_name}/#{number}")
end

#get_contacts(instance_name) ⇒ Object

Obtém contatos de uma instância



211
212
213
# File 'lib/evolution_api/client.rb', line 211

def get_contacts(instance_name)
  get("/contact/findContacts/#{instance_name}")
end

#get_instance(instance_name) ⇒ Object

Obtém informações de uma instância



53
54
55
# File 'lib/evolution_api/client.rb', line 53

def get_instance(instance_name)
  get("/instance/fetchInstances/#{instance_name}")
end

#get_messages(instance_name, number, options = {}) ⇒ Object

Obtém mensagens de um chat



179
180
181
182
183
184
185
186
# File 'lib/evolution_api/client.rb', line 179

def get_messages(instance_name, number, options = {})
  params = {
    limit: options[:limit] || 50,
    cursor: options[:cursor]
  }.compact

  get("/chat/findMessages/#{instance_name}/#{number}", params)
end

#get_qr_code(instance_name) ⇒ Object

Obtém QR Code de uma instância



58
59
60
# File 'lib/evolution_api/client.rb', line 58

def get_qr_code(instance_name)
  get("/instance/connect/#{instance_name}")
end

#get_webhook(instance_name) ⇒ Object

Obtém configuração de webhook



251
252
253
# File 'lib/evolution_api/client.rb', line 251

def get_webhook(instance_name)
  get("/webhook/find/#{instance_name}")
end

#list_instancesObject

Lista todas as instâncias



18
19
20
# File 'lib/evolution_api/client.rb', line 18

def list_instances
  get('/instance/fetchInstances')
end

#mark_messages_as_read(instance_name, number) ⇒ Object

Marca mensagens como lidas



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

def mark_messages_as_read(instance_name, number)
  post("/chat/markMessageAsRead/#{instance_name}", { number: number })
end

#send_audio_message(instance_name, number, audio_url, options = {}) ⇒ Object

Envia uma mensagem de áudio



88
89
90
91
92
93
94
95
96
# File 'lib/evolution_api/client.rb', line 88

def send_audio_message(instance_name, number, audio_url, options = {})
  body = {
    number: number,
    audio: audio_url,
    options: options
  }

  post("/message/sendAudio/#{instance_name}", body)
end

#send_button_message(instance_name, number, title, description, buttons) ⇒ Object

Envia uma mensagem de botão



148
149
150
151
152
153
154
155
156
157
# File 'lib/evolution_api/client.rb', line 148

def send_button_message(instance_name, number, title, description, buttons)
  body = {
    number: number,
    title: title,
    description: description,
    buttons: buttons
  }

  post("/message/sendButton/#{instance_name}", body)
end

#send_contact_message(instance_name, number, contact_number, contact_name) ⇒ Object

Envia uma mensagem de contato



135
136
137
138
139
140
141
142
143
144
145
# File 'lib/evolution_api/client.rb', line 135

def send_contact_message(instance_name, number, contact_number, contact_name)
  body = {
    number: number,
    contacts: [{
      number: contact_number,
      name: contact_name
    }]
  }

  post("/message/sendContact/#{instance_name}", body)
end

#send_document_message(instance_name, number, document_url, caption = nil, options = {}) ⇒ Object

Envia um documento



111
112
113
114
115
116
117
118
119
120
# File 'lib/evolution_api/client.rb', line 111

def send_document_message(instance_name, number, document_url, caption = nil, options = {})
  body = {
    number: number,
    document: document_url,
    caption: caption,
    options: options
  }.compact

  post("/message/sendDocument/#{instance_name}", body)
end

#send_image_message(instance_name, number, image_url, caption = nil, options = {}) ⇒ Object

Envia uma mensagem de imagem



76
77
78
79
80
81
82
83
84
85
# File 'lib/evolution_api/client.rb', line 76

def send_image_message(instance_name, number, image_url, caption = nil, options = {})
  body = {
    number: number,
    image: image_url,
    caption: caption,
    options: options
  }.compact

  post("/message/sendImage/#{instance_name}", body)
end

#send_list_message(instance_name, number, title, description, sections) ⇒ Object

Envia uma lista de opções



160
161
162
163
164
165
166
167
168
169
# File 'lib/evolution_api/client.rb', line 160

def send_list_message(instance_name, number, title, description, sections)
  body = {
    number: number,
    title: title,
    description: description,
    sections: sections
  }

  post("/message/sendList/#{instance_name}", body)
end

#send_location_message(instance_name, number, latitude, longitude, description = nil) ⇒ Object

Envia uma localização



123
124
125
126
127
128
129
130
131
132
# File 'lib/evolution_api/client.rb', line 123

def send_location_message(instance_name, number, latitude, longitude, description = nil)
  body = {
    number: number,
    latitude: latitude,
    longitude: longitude,
    description: description
  }.compact

  post("/message/sendLocation/#{instance_name}", body)
end

#send_text_message(instance_name, number, text, options = {}) ⇒ Object

Envia uma mensagem de texto



65
66
67
68
69
70
71
72
73
# File 'lib/evolution_api/client.rb', line 65

def send_text_message(instance_name, number, text, options = {})
  body = {
    number: number,
    text: text,
    options: options
  }

  post("/message/sendText/#{instance_name}", body)
end

#send_video_message(instance_name, number, video_url, caption = nil, options = {}) ⇒ Object

Envia uma mensagem de vídeo



99
100
101
102
103
104
105
106
107
108
# File 'lib/evolution_api/client.rb', line 99

def send_video_message(instance_name, number, video_url, caption = nil, options = {})
  body = {
    number: number,
    video: video_url,
    caption: caption,
    options: options
  }.compact

  post("/message/sendVideo/#{instance_name}", body)
end

#set_webhook(instance_name, webhook_url, events = nil) ⇒ Object

Configura webhook para uma instância



238
239
240
241
242
243
244
245
246
247
248
# File 'lib/evolution_api/client.rb', line 238

def set_webhook(instance_name, webhook_url, events = nil)
  body = {
    webhook: webhook_url,
    webhookByEvents: events ? true : false,
    webhookBase64: false
  }

  body[:events] = events if events

  post("/webhook/set/#{instance_name}", body)
end

#unarchive_chat(instance_name, number) ⇒ Object

Desarquivar chat



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

def unarchive_chat(instance_name, number)
  post("/chat/unarchiveChat/#{instance_name}", { number: number })
end

#unblock_contact(instance_name, number) ⇒ Object

Desbloqueia um contato



231
232
233
# File 'lib/evolution_api/client.rb', line 231

def unblock_contact(instance_name, number)
  post("/contact/unblockContact/#{instance_name}", { number: number })
end