Dasturchi uchun

Webhook — YozibOl'dan o'z dasturingizga

YozibOl'dagi har bir o'zgarish sizning dasturingizga JSON bo'lib yuboriladi: kompaniya ochilishi, xodim qo'shilishi, qo'ng'iroq, audio havolasi va matni. Manzil har bir kompaniya uchun alohida sozlanadi.

01Webhook nima qiladi

YozibOl hodisa sodir bo'lishi bilan sizning manzilingizga POST so'rov yuboradi. Siz hech narsa so'rab turishingiz shart emas — ma'lumot o'zi keladi.

telefon → YozibOl server → POST https://dasturim.uz/api/yozibol ↓ sizning bazangiz
HodisaQachon yuboriladi
kompaniyaKompaniya ochilganda yoki kabinet paroli o'zgarganda
xodimlarXodim qo'shilganda yoki paroli yangilanganda
qongiroqQo'ng'iroq tugab, serverga tushganda
audioYozuv yuklanib, ochiq havola tayyor bo'lganda
transkriptAudio matnga o'girilganda (tahlili bilan)
sinovPanelda «Sinov yuborish» tugmasi bosilganda

02Panelda sozlash

  1. Admin panel → kompaniyani tanlang → Integratsiya bo'limi.
  2. 🪝 Webhook — mijozning o'z dasturi kartochkasiga manzilni yozing, masalan https://dasturim.uz/api/yozibol.
  3. Kalit yaratish tugmasini bosing — maxfiy kalit paydo bo'ladi. Uni dasturingizga ham qo'ying.
  4. Kerak bo'lmagan hodisalarning belgisini olib tashlang.
  5. Saqlash, so'ng Sinov yuborish — dasturingiz javob berganini darhol ko'rasiz.
Har kompaniya — o'z manzili Manzil loyiha ichida saqlanadi. Bir nechta mijoz bo'lsa, har biri o'z dasturiga ulanadi.

03So'rov ko'rinishi

POST https://dasturim.uz/api/yozibol
Content-Type: application/json
x-webhook-token: sizning-maxfiy-kalitingiz

{
  "hodisa": "qongiroq",
  "vaqt": "2026-09-24T09:15:22.431Z",
  "malumot": { ... }
}

Dasturingiz 200 qaytarishi kerak. Boshqa javob kelsa yoki 10 soniya ichida javob bo'lmasa — 2 soniyadan keyin bir marta qayta uriniladi. Undan keyin hodisa tashlab yuboriladi.

Kalitni tekshiring Har so'rovda x-webhook-token sarlavhasini solishtiring. Mos kelmasa 401 qaytaring — aks holda manzilingizni bilgan har kim ma'lumot yubora oladi.

04kompaniya

Kompaniya ochilganda yoki kabinet logini/paroli o'zgarganda keladi.

{
  "projectId": "532842a5-e82f-4e1f-9e09-a0cf20ba8625",
  "kompaniyaNomi": "Lesailes",
  "login": "lesailes",
  "parol": "yangi-parol",
  "subdomen": "lesailes"
}

Kabinet manzili: https://<subdomen>.yozibol.complexgroup.uz. parol faqat o'zgargan paytda to'ladi.

05xodimlar

{
  "projectId": "532842a5-...",
  "kompaniyaNomi": "Lesailes",
  "xodimlar": [
    {
      "employeeId": "0b7f...",
      "ism": "Shoira",
      "login": "Shoira",
      "parol": "12345678",
      "telefon": "+998901234567",
      "bolim": "Sotuv",
      "rol": "operator"
    }
  ]
}

rol: operator, manager, head, director.

06qongiroq

{
  "projectId": "532842a5-...",
  "kompaniyaNomi": "Lesailes",
  "qongiroqId": "9f2c...",
  "externalCallId": "a1b2c3d4-8842",
  "yonalish": "in",
  "mijozRaqami": "+998935556677",
  "xodimRaqami": "+998901234567",
  "employeeId": "0b7f...",
  "xodimIsmi": "Shoira",
  "brend": "Purion",
  "boshlandi": "2026-09-24T09:14:02.000Z",
  "davomiylikSek": 42,
  "javobBerilgan": true,
  "audioUrl": null,
  "bitrixHolati": "finished"
}
MaydonIzoh
yonalishin — kiruvchi, out — chiquvchi
javobBerilganfalse — javobsiz qo'ng'iroq
audioUrlBu bosqichda odatda null — audio biroz keyin yuklanadi
bitrixHolatifinished, registered, skipped (Bitrix ulanmagan — xato emas), error

07audio

qongiroq bilan bir xil maydonlar, ustiga havola va hajmi qo'shiladi.

{
  "qongiroqId": "9f2c...",
  "audioUrl": "https://yozibol.complexgroup.uz/rec/9f2c....mp3",
  "audioBayt": 284531
}

Audio doim mp3. Havola ochiq — yuklab olsangiz ham, to'g'ridan-to'g'ri o'ynatsangiz ham bo'ladi.

08transkript

{
  "projectId": "532842a5-...",
  "qongiroqId": "9f2c...",
  "externalCallId": "a1b2c3d4-8842",
  "yonalish": "in",
  "mijozRaqami": "+998935556677",
  "employeeId": "0b7f...",
  "xodimIsmi": "Shoira",
  "boshlandi": "2026-09-24T09:14:02.000Z",
  "davomiylikSek": 42,
  "audioUrl": "https://yozibol.complexgroup.uz/rec/9f2c....mp3",
  "matn": "Assalomu alaykum, buyurtma bermoqchi edim...",
  "til": "uz",
  "tahlil": null
}

tahlil — sun'iy intellekt tahlili (mavzu, kayfiyat, keyingi qadam). Tahlil yoqilmagan yoki hali tugamagan bo'lsa null keladi.

09Nimaga e'tibor berish kerak

Takrorlanish

Bitta qo'ng'iroq bo'yicha uchta hodisa keladi: qongiroq, audio, transkript. Uchalasida ham qongiroqId bir xil — yozuvni shu bo'yicha topib yangilang, har safar yangi yozuv yaratmang.

Tartib

Hodisalar tartibi kafolatlanmaydi: tarmoq sekin bo'lsa audio qongiroqdan oldin kelishi mumkin. qongiroqId bazangizda topilmasa — yozuvni o'sha hodisaning maydonlaridan yaratib qo'ying.

Tez javob

10 soniya ichida 200 qaytaring. Og'ir ishni (audio yuklab olish, tahlil) navbatga qo'yib, keyin bajaring.

Bo'sh maydonlar

null kelishi normal holat: xodim ismi kiritilmagan, brend belgilanmagan yoki audio topilmagan bo'lishi mumkin.

10Kod namunasi

app.post('/api/yozibol', async (req, res) => {
  if (req.headers['x-webhook-token'] !== process.env.YOZIBOL_TOKEN) {
    return res.status(401).end();
  }
  const { hodisa, malumot } = req.body;
  res.json({ ok: true });            // avval javob, keyin ish

  switch (hodisa) {
    case 'kompaniya':  await kompaniyaSaqla(malumot); break;
    case 'xodimlar':   await xodimlarSaqla(malumot); break;
    case 'qongiroq':
    case 'audio':
    case 'transkript': await qongiroqYangila(malumot); break;
  }
});
Sinovdan boshlang Manzilni sozlab, panelda «Sinov yuborish» ni bosing. hodisa: "sinov" keladi — shu kelsa, qolgan hammasi ham keladi.