RCSZilla Versiunea 1.0

API Mesaje Primite

Citește mesajele SMS, WhatsApp și Email primite prin API-ul REST.

Prezentare generală

Aceste endpoint-uri îți permit să extragi mesajele primite de RCSZilla — SMS și WhatsApp prin dispozitive Android, și Email prin verificare IMAP. Folosește-le pentru citiri în masă, sincronizare cu un CRM sau ca alternativă la webhooks.

EndpointMetodăDescriere
incoming_messagesGETListare mesaje SMS și WhatsApp primite.
incoming_emailsGETListare emailuri primite din căsuțele IMAP.
*
Pentru interogare eficientă, folosește after_id în loc de intervale de date. Salvează cel mai mare id din ultimul răspuns și transmite-l la următorul apel — vei primi doar mesaje noi, fără duplicate.

Listare SMS / WhatsApp primite

GET /?endpoint=incoming_messages

Returnează o listă paginată de mesaje SMS și WhatsApp primite de dispozitivele tale Android. Include informații despre contact și dispozitiv.

Parametri interogare

CâmpTipDescriere
sincestring opțional Dată și oră ISO 8601. Doar mesajele primite la sau după această oră.
untilstring opțional Dată și oră ISO 8601. Doar mesajele primite la sau înainte de această oră.
channelstring opțional Filtrare după canal: sms sau whatsapp.
device_idint opțional Filtrare după ID dispozitiv.
from_phonestring opțional Filtrare după numărul de telefon al expeditorului (potrivire exactă).
after_idint opțional Returnează doar mesajele cu ID mai mare decât această valoare. Ideal pentru interogare incrementală.
limitint opțional Rezultate pe pagină (1–100). Implicit: 50.
offsetint opțional Offset paginare. Implicit: 0.

Exemplu cerere

curl "https://api.rcszilla.com/?endpoint=incoming_messages&after_id=208&limit=50" \
  -H "Authorization: Bearer YOUR-API-TOKEN"
curl "https://api.rcszilla.com/?endpoint=incoming_messages&since=2026-05-27T00:00:00Z&channel=sms&limit=20" \
  -H "Authorization: Bearer YOUR-API-TOKEN"
curl "https://api.rcszilla.com/?endpoint=incoming_messages&from_phone=%2B40712345678&limit=10" \
  -H "Authorization: Bearer YOUR-API-TOKEN"

Răspuns

JSON
{
  "success": true,
  "total": 142,
  "limit": 50,
  "offset": 0,
  "messages": [
    {
      "id": 209,
      "channel": "sms",
      "from_phone": "+40712345678",
      "message": "Yes, I want to book an appointment for Monday",
      "received_at": "2026-05-27 14:30:05",
      "contact": {
        "id": 42,
        "name": "John Doe",
        "phone": "+40712345678"
      },
      "device": {
        "id": 6,
        "name": "Office Samsung"
      }
    },
    {
      "id": 208,
      "channel": "whatsapp",
      "from_phone": "+40798765432",
      "message": "Hello, do you have availability this week?",
      "received_at": "2026-05-27 14:25:12",
      "contact": null,
      "device": {
        "id": 6,
        "name": "Office Samsung"
      }
    }
  ]
}

Câmpuri răspuns

CâmpTipDescriere
idintID unic mesaj. Folosește cea mai mare valoare ca after_id pentru interogare incrementală.
channelstringsms or whatsapp
from_phonestringNumărul de telefon al expeditorului.
messagestringTextul mesajului.
received_atstringCând a fost primit mesajul.
contactobject|nullContact potrivit (id, nume, telefon) sau null dacă expeditorul este necunoscut.
deviceobject|nullDispozitivul care a primit mesajul (id, nume).

Listare emailuri primite

GET /?endpoint=incoming_emails

Returnează o listă paginată de emailuri primite de căsuțele IMAP legate de serverele tale SMTP. Include atât textul simplu cât și corpul HTML.

Parametri interogare

CâmpTipDescriere
sincestring opțional Dată și oră ISO 8601. Doar mesajele primite la sau după această oră.
untilstring opțional Dată și oră ISO 8601. Doar mesajele primite la sau înainte de această oră.
smtp_server_idint opțional Filtrare după ID server SMTP/IMAP.
from_emailstring opțional Filtrare după adresa de email a expeditorului (potrivire exactă).
searchstring opțional Căutare în subiect, from_email și from_name (potrivire parțială).
after_idint opțional Returnează doar mesajele cu ID mai mare decât această valoare. Ideal pentru interogare incrementală.
limitint opțional Rezultate pe pagină (1–100). Implicit: 50.
offsetint opțional Offset paginare. Implicit: 0.

Exemplu cerere

curl "https://api.rcszilla.com/?endpoint=incoming_emails&after_id=309&limit=20" \
  -H "Authorization: Bearer YOUR-API-TOKEN"
curl "https://api.rcszilla.com/?endpoint=incoming_emails&search=order&since=2026-05-01T00:00:00Z" \
  -H "Authorization: Bearer YOUR-API-TOKEN"

Răspuns

JSON
{
  "success": true,
  "total": 38,
  "limit": 20,
  "offset": 0,
  "emails": [
    {
      "id": 310,
      "from_email": "customer@example.com",
      "from_name": "John Doe",
      "to_email": "support@yourbusiness.com",
      "subject": "Re: Your order #1234",
      "body_text": "Hi, when will my order arrive?\n\nThanks,\nJohn",
      "body_html": "<p>Hi, when will my order arrive?</p>",
      "message_id": "<abc123@mail.example.com>",
      "received_at": "2026-05-27 14:28:00",
      "created_at": "2026-05-27 14:30:02",
      "server": {
        "id": 5,
        "label": "Support Mailbox"
      }
    }
  ]
}

Câmpuri răspuns

CâmpTipDescriere
idintID unic email. Folosește cea mai mare valoare ca after_id pentru interogare incrementală.
from_emailstringAdresa de email a expeditorului.
from_namestringNumele afișat al expeditorului.
to_emailstringAdresa destinatarului (căsuța ta).
subjectstringSubiectul emailului.
body_textstringCorpul text simplu.
body_htmlstringCorpul HTML (poate fi gol dacă emailul a fost doar text simplu).
message_idstringHeader-ul Message-ID al emailului (pentru threading / deduplicare).
received_atstringCând a fost primit mesajul.
serverobjectServerul SMTP/IMAP care a primit acest email (id, etichetă).

Model de interogare recomandat

Cel mai eficient mod de a citi mesaje noi este modelul cursor after_id. Iată un exemplu complet:

PHP
<?php
$token   = 'YOUR_API_TOKEN';
$api     = 'https://api.rcszilla.com';
$last_id = (int) file_get_contents('/tmp/last_sms_id.txt') ?: 0;

$url  = "$api/?endpoint=incoming_messages&after_id=$last_id&limit=100";
$resp = json_decode(file_get_contents($url, false, stream_context_create([
    'http' => ['header' => "Authorization: Bearer $token"]
])), true);

foreach ($resp['messages'] as $msg) {
    echo "[{$msg['channel']}] {$msg['from_phone']}: {$msg['message']}\n";
    if ((int)$msg['id'] > $last_id) $last_id = (int)$msg['id'];
}

file_put_contents('/tmp/last_sms_id.txt', $last_id);
Node.js
const fs = require('fs');
const TOKEN = 'YOUR_API_TOKEN';
const API   = 'https://api.rcszilla.com';

let lastId = 0;
try { lastId = parseInt(fs.readFileSync('/tmp/last_sms_id.txt', 'utf8')) || 0; } catch {}

const url = `${API}/?endpoint=incoming_messages&after_id=${lastId}&limit=100`;
const resp = await fetch(url, { headers: { Authorization: `Bearer ${TOKEN}` } });
const data = await resp.json();

for (const msg of data.messages) {
  console.log(`[${msg.channel}] ${msg.from_phone}: ${msg.message}`);
  if (msg.id > lastId) lastId = msg.id;
}

fs.writeFileSync('/tmp/last_sms_id.txt', String(lastId));
Python
import requests, pathlib

TOKEN = 'YOUR_API_TOKEN'
API   = 'https://api.rcszilla.com'
STATE = pathlib.Path('/tmp/last_sms_id.txt')

last_id = int(STATE.read_text()) if STATE.exists() else 0
resp = requests.get(f'{API}/?endpoint=incoming_messages&after_id={last_id}&limit=100',
                    headers={'Authorization': f'Bearer {TOKEN}'}).json()

for msg in resp['messages']:
    print(f"[{msg['channel']}] {msg['from_phone']}: {msg['message']}")
    last_id = max(last_id, msg['id'])

STATE.write_text(str(last_id))
*
Pentru livrare în timp real în loc de interogare, configurează un Webhook. Poți folosi ambele: webhooks pentru notificare instantanee și API-ul pentru citiri în masă sau recuperare după indisponibilitate.