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.
| Hodisa | Qachon yuboriladi |
|---|---|
kompaniya | Kompaniya ochilganda yoki kabinet paroli o'zgarganda |
xodimlar | Xodim qo'shilganda yoki paroli yangilanganda |
qongiroq | Qo'ng'iroq tugab, serverga tushganda |
audio | Yozuv yuklanib, ochiq havola tayyor bo'lganda |
transkript | Audio matnga o'girilganda (tahlili bilan) |
sinov | Panelda «Sinov yuborish» tugmasi bosilganda |
02Panelda sozlash
- Admin panel → kompaniyani tanlang → Integratsiya bo'limi.
- 🪝 Webhook — mijozning o'z dasturi kartochkasiga manzilni yozing,
masalan
https://dasturim.uz/api/yozibol. - Kalit yaratish tugmasini bosing — maxfiy kalit paydo bo'ladi. Uni dasturingizga ham qo'ying.
- Kerak bo'lmagan hodisalarning belgisini olib tashlang.
- Saqlash, so'ng Sinov yuborish — dasturingiz javob berganini darhol ko'rasiz.
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.
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"
}
| Maydon | Izoh |
|---|---|
yonalish | in — kiruvchi, out — chiquvchi |
javobBerilgan | false — javobsiz qo'ng'iroq |
audioUrl | Bu bosqichda odatda null — audio biroz keyin yuklanadi |
bitrixHolati | finished, 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;
}
});
hodisa: "sinov"
keladi — shu kelsa, qolgan hammasi ham keladi.