Poll (Об'єднаний)

Посібник з інтеграції мобільного додатку

Poll (Об'єднаний)

POST /?endpoint=poll

Рекомендований endpoint для циклу сервісу Android. Один POST замінює окремі виклики heartbeat, pending_messages, get_config та отримання команд.

*
Recommended: Use poll as your primary background-service loop. It replaces pending_messages, heartbeat, get_config, and command fetching in a single request.

Тіло запиту (all fields optional)

ПолеТипОпис
service_activebooleantrue якщо фоновий сервіс запущено.
sms_countintegerЗагальна кількість SMS з моменту останнього скидання.
fail_countintegerЗагальна кількість невдалих повідомлень з моменту останнього скидання.
whatsapp_enabledbooleantrue якщо WhatsApp підключено на пристрої.
is_default_smsbooleantrue якщо цей додаток є обробником SMS за замовчуванням.
fcm_tokenstringОновлений FCM-токен (надсилайте лише коли змінюється).
ack_idsinteger[]Масив ID команд для підтвердження та видалення перед отриманням нових.
sms_limitintegerМаксимальна кількість SMS у цій відповіді (1-10, за замовчуванням 1).
wa_limitintegerМаксимальна кількість WhatsApp у цій відповіді (1-10, за замовчуванням 10).

Приклад запиту

cURL
curl -X POST "https://api.rcszilla.com/?endpoint=poll" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR-DEVICE-TOKEN" \
  -d '{
    "service_active": true,
    "sms_count": 42,
    "fail_count": 1,
    "whatsapp_enabled": false,
    "is_default_sms": true,
    "ack_ids": [88, 89],
    "sms_limit": 5,
    "wa_limit": 10
  }'

Відповідь

JSON200 OK
{
  "success": true,
  "config": {
    "retry_limit": "3",
    "poll_interval_seconds": "5"
  },
  "commands": [
    {"id": 90, "command": "restart_service", "payload": null}
  ],
  "sms": [
    {
      "id": 103,
      "channel": "sms",
      "phone": "+40712345678",
      "message": "Hello!",
      "sim_slot": 0,
      "device_id": 7,
      "campaign_id": null,
      "priority": 1,
      "scheduled_at": null,
      "created_at": "2026-04-29 10:05:00"
    }
  ],
  "whatsapp": [],
  "ai_config": null
}

Response Fields

ПолеТипОпис
configobjectKey/value device configuration set from the web panel.
commandsarrayPending commands for this device. ACK them via ack_ids on the next poll.
smsarrayClaimed SMS messages ready to send (same schema as pending_messages).
whatsapparrayClaimed WhatsApp messages ready to send.
ai_configobject|nullWhatsApp Gemini AI configuration (system prompt, keys, model settings). null if not configured.

Command Payload

commandОпис
restart_serviceApp should restart its background SMS service.
set_default_smsPrompt user to set app as default SMS handler.
update_configRe-fetch config (payload contains changed keys).
*
При кожному poll сервер автоматично скидає повідомлення, що застрягли в processing більше 5 хвилин, назад до pending.

Typical Service Loop (Android)

Kotlin (pseudocode)
while (serviceRunning) {
    val resp = api.poll(
        service_active = true,
        sms_count      = smsSentTotal,
        ack_ids        = pendingAckIds
    )
    pendingAckIds.clear()

    for (cmd in resp.commands)  handleCommand(cmd)
    for (sms in resp.sms)       sendSms(sms)
    for (wa  in resp.whatsapp)  sendWhatsApp(wa)

    Thread.sleep(pollIntervalMs)
}