Tranzaksion xabarlar va kaskadlar
Tranzaksion xabarlar — buyurtma tasdiqlari, kirish kodlari, yetkazib berish haqidagi bildirishnomalar. Xaridor ularni kutadi, shuning uchun ular darhol va alohida navbat orqali yuboriladi: katta kampaniya ularni ushlab qolmaydi. Kaskad bitta xabarni bir nechta kanal orqali navbat bilan yuboradi. Masalan, avval WhatsApp, agar 2 daqiqada yetkazilmasa — SMS.
Bunday xabarni zanjirdan yoki oʻz serveringizdan API orqali yuborish mumkin.
Tranzaksion shablon
Xabar tranzaksion hisoblanishi uchun uning shablonida Tranzaksion xabar belgisini qoʻying. Bunday xabar obuna, chastota cheklovlari va sokin soatlar tekshiruvisiz yuboriladi. OneTrace.ru pochta xizmati orqali xatlar qizdirishsiz va alohida oqim bilan, sarlavhalarda obunani bekor qilish havolasisiz yuboriladi.
Reklamani bunday belgilamang: bu qabul qiluvchilarning huquqlarini buzadi va yuboruvchi obroʻsiga putur yetkazadi.
Hatto tranzaksion xabar ham qabul qiluvchida kanal yopiq boʻlsa yuborilmaydi:
| Kanal | Qachon yopiq |
|---|---|
| manzilga yuborilgan xat doimiy xato bilan qaytgan (pochta qutisi yoʻq) | |
| SMS, WhatsApp | provayder raqam mavjud emasligini xabar qilgan; xaridor WhatsAppda «stop» deb yozgan |
| Telegram | xaridor botga /stop yuborgan yoki uni bloklagan |
| Viber | xaridor botdan obunani bekor qilgan |
Bunday xabar «kanal qabul qiluvchi uchun bloklangan» sababi bilan «Oʻtkazib yuborildi» holatini oladi. Xaridor qaytadan obuna boʻlganda — masalan, botda «Start» ni bosganda — kanal yana ochiladi. Spam haqidagi shikoyat kanalni yopmaydi: bu manzilga buyurtmalar haqidagi xatlar kelishda davom etadi.
API orqali yuborish
Serveringiz xabarni POST /api/v1/messages soʻrovi bilan yuboradi. «Alohida xabarlar yuborish» ruxsatli maxfiy kalit kerak, qarang: API kalitlari.
curl -X POST https://cdp.onetrace.ru/api/v1/messages \
-H "Authorization: Bearer $CDP_SECRET_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-A-1001" \
-d '{
"identity": {"type": "email", "value": "anna@example.com"},
"template_id": 12,
"traits": {"first_name": "Anna"},
"data": {"order_id": "A-1001", "amount": 4990}
}'
| Maydon | Nimani bildiradi |
|---|---|
identity |
Qabul qiluvchi: identifikator turi va qiymati — email, phone, user_id, telegram_chat_id va boshqalar. Profil boʻlmasa, u yaratiladi |
template_id |
Xabar shabloni. Uning id si shablon sahifasi manzilida koʻrinadi |
integration_id |
Shablon kanalining integratsiyasi. Faqat kanalda bir nechta faol integratsiya boʻlsa kerak |
traits |
Yuborishdan oldin profilga yoziladigan xususiyatlar. Shablonda — {{ traits.first_name }} |
data |
Faqat shu xabarga tegishli maʼlumotlar. Shablonda — {{ context.data.order_id }} |
202 javobida xabarning id si va holati boʻladi. Joriy holatni GET /api/v1/messages/{id} qaytaradi: queued, sent, delivered, failed, skipped va boshqalar, oʻtkazib yuborish yoki xato sababi bilan.
- Takrorlash xavfsiz. Xuddi shu
Idempotency-Keysarlavhali soʻrov allaqachon yaratilgan xabarni qaytaradi, ikkinchisi yuborilmaydi. Buyurtma raqami yoki operatsiya id sidan foydalaning. - Qabul qiluvchiga limit — API orqali soatiga 20 ta xabar. Oshib ketganda
Retry-Aftersarlavhali429keladi. - Oddiy shablonni «Tranzaksion» belgisisiz ham API orqali yuborish mumkin. Bunda xabar yuborishning barcha qoidalari tekshiriladi.
Tayyor PHP kutubxonasida bu $onetrace->messages()->send(Identity::email('anna@example.com'), 12, ['data' => [...]], 'order-A-1001'), Laravel paketida esa — messages()->send(...).
Zanjirdagi kaskad
Zanjirga «Amallar» guruhidan Kaskadli yuborish tugunini qoʻshing. Kanallar navbat bilan maydonida 2 tadan 5 tagacha qadam belgilang. Har bir qadam uchun koʻrsating:
- Kanal uchun Integratsiya va Shablon.
- Kutish — nima muvaffaqiyat hisoblanadi: «yuborildi», «yetkazildi» yoki «oʻqildi».
- Kutish vaqti — «yetkazildi» va «oʻqildi» uchun, standart boʻyicha 15 daqiqa.

Kaskad keyingi qadamga oʻtadi, agar:
- profilda kanal uchun manzil yoki raqam boʻlmasa yoki kanal unda yopiq boʻlsa — qadam darhol oʻtkazib yuboriladi, xabar yaratilmaydi;
- xabar ketmagan boʻlsa: yuborish xatosi yoki xabar yuborish qoidalari boʻyicha oʻtkazib yuborilgan;
- provayder yetkazilmaganini xabar qilgan boʻlsa;
- kutish vaqti ichida yetkazilganlik yoki oʻqilganlik tasdigʻi kelmagan boʻlsa.
Yetkazilishi va oʻqilishini hamma kanallarda ham kutib boʻlmaydi:
| Kutish | Kanallar |
|---|---|
| yuborildi | hammasi |
| yetkazildi | SMS, WhatsApp, Viber, Telegram, webhook; email — faqat OneTrace.ru pochta xizmati orqali, oʻz SMTP serveringiz orqali emas |
| oʻqildi | email, WhatsApp, Viber |
Tugunning ikkita chiqishi bor: yetib bordi — qadamlardan birining xabari maqsadga erishdi; xato — birorta ham kanal ishlamadi. Kaskad davom etayotganda ishtirokchi tugunda kutadi.
Kaskadli yuborish bitta va oʻsha xabarni yetkazadi. «Savatcha: push → email → SMS» kabi zanjir shablonlari boshqacha tuzilgan: ularda xaridor buyurtma bermaguncha turli xabarlar pauzalar bilan yuboriladi.
API orqali kaskad
template_id oʻrniga steps ni yuboring — zanjir tugunidagi oʻsha qadamlar:
{
"identity": {"type": "phone", "value": "+79991234567"},
"steps": [
{"integration_id": 3, "template_id": 21, "wait_for": "delivered", "timeout": {"amount": 2, "unit": "minute"}},
{"integration_id": 4, "template_id": 22, "wait_for": "sent"}
],
"data": {"code": "482913"}
}
wait_for sent, delivered yoki opened qiymatlarini qabul qiladi, timeout birliklari — minute, hour, day, week. 202 javobida kaskadning id si boʻladi, GET /api/v1/messages/cascades/{id} uning holatini qaytaradi:
status—running,reachedyokifailed;- joriy qadam
step; - ishlagan kanal —
reached_channel; - qadamlar xabarlari
messages.
Tarif
Tranzaksion xabarlar va API orqali yuborish barcha tariflarda mavjud. Kaskad — «Oʻsish» tarifidan boshlab, qarang: Tarif va toʻlov. «Start» tarifida tugun muharrir palitrasida qulf bilan belgilangan, API esa 402 bilan javob beradi. Agar tarif pasaytirilsa, allaqachon ishlayotgan zanjirlarda kaskadning faqat birinchi qadami yuboriladi.