link-stack/packages/zammad-addon-bridge/src/lib/cdr_whatsapp_api.rb
Darren Clarke d2a3c71bcd feat: Add attachment support for Signal and WhatsApp channels
- Signal: Use base64Attachments field in signal-cli-rest-api
- WhatsApp: Implement Baileys attachment sending for images, videos, audio, and documents
- Both channels retrieve attachments from Zammad Store model
- Support multiple attachments per message
2025-09-02 10:55:04 +02:00

43 lines
1 KiB
Ruby

# frozen_string_literal: true
require 'json'
require 'net/http'
require 'net/https'
require 'uri'
class CdrWhatsappApi
def initialize(api_url, token)
@token = token
@last_update = 0
@api_url = api_url
end
def parse_hash(hash)
ret = {}
hash.map do |k, v|
ret[k] = CGI.encode(v.to_s.gsub('\\\'', '\''))
end
ret
end
def get(api)
url = "#{@api_url}/bots/#{@token}/#{api}"
JSON.parse(Faraday.get(url, { Accept: "application/json" }).body)
end
def post(api, params = {})
url = "#{@api_url}/bots/#{@token}/#{api}"
JSON.parse(Faraday.post(url, params.to_json, { "Content-Type": "application/json", Accept: "application/json" }).body)
end
def fetch_self
get('')
end
def send_message(recipient, text, options = {})
params = { to: recipient.to_s, message: text }
params[:attachments] = options[:attachments] if options[:attachments]
options.delete(:attachments) if options[:attachments]
post('send', params.merge(parse_hash(options)))
end
end