Integração
API de WhatsApp para Ruby e Rails
Dispare mensagens de WhatsApp de um app Rails, de preferência em background job.
# app/services/zapixo.rb
require "net/http"
require "json"
class Zapixo
ENDPOINT = URI("https://zapixo.com.br/api/v1/messages/text")
def self.enviar_texto(instancia:, numero:, texto:)
req = Net::HTTP::Post.new(ENDPOINT)
req["Authorization"] = "Bearer #{ENV.fetch('ZAPIXO_API_KEY')}"
req["Content-Type"] = "application/json"
req.body = {
instance: instancia,
number: numero,
text: texto,
}.to_json
res = Net::HTTP.start(
ENDPOINT.hostname, ENDPOINT.port,
use_ssl: true, read_timeout: 30
) { |http| http.request(req) }
raise "Zapixo #{res.code}: #{res.body}" unless res.code == "200"
JSON.parse(res.body)["messageId"]
end
end
# app/jobs/aviso_whatsapp_job.rb — nunca envie direto do controller
class AvisoWhatsappJob < ApplicationJob
queue_as :default
retry_on StandardError, wait: :polynomially_longer, attempts: 3
def perform(pedido)
Zapixo.enviar_texto(
instancia: "loja",
numero: pedido.telefone_whatsapp,
texto: "Pedido ##{pedido.id} confirmado!"
)
end
end