Asosiy mazmunga o'tish
Socialift
Imkoniyat

Webhook integratsiyasi

Webhook — platforma hodisa yuz berganda sizga o'zi yuboradigan HTTP so'rov. Socialift Python SDK endpointingiz uchun Meta webhooklarining asosiy qismlarini beradi: verify_challenge GET tekshiruviga javob beradi, verify_request X-Hub-Signature-256 imzosini xom tanaga qarab tekshiradi, parse_events yetkazishni alohida hodisalarga ajratadi, dedupe_key esa takrorlarni tashlash uchun barqaror kalit beradi. Hodisani CRM'ga yozish — sizning kodingizda.

Yangilangan:

Webhook nima va u API'dan nimasi bilan farq qiladi?

Webhook — hodisa yuz berganda serverdan sizning manzilingizga yuboriladigan HTTP so'rov. Oddiy API'da siz so'rovni o'zingiz yuborasiz va javob kutasiz; webhookda esa aksincha — platforma sizni chaqiradi. Shu sababli yangi Direct xabari yoki to'ldirilgan lead haqida davriy so'rov yubormasdan, hodisadan keyin tez orada xabar topasiz.

Meta uchun bu ikki bosqichli: avval GET so'rov bilan manzil tasdiqlanadi (hub.mode, hub.verify_token, hub.challenge), keyin hodisalar POST bilan keladi va X-Hub-Signature-256 sarlavhasida HMAC-SHA256 imzo bo'ladi.

Amaliy qiyinchilik imzoni to'g'ri hisoblashda: HMAC xom bayt oqimi bo'yicha hisoblanadi. Agar siz JSON'ni pars qilib qayta serializatsiya qilsangiz, bo'shliqlar va maydonlar tartibi o'zgaradi va imzo mos kelmaydi.

Meta webhookini ulash

  1. Endpoint oching

    HTTPS manzil kerak. GET va POST metodlarini qo'llab-quvvatlashi shart.

  2. Tasdiqlash so'roviga javob bering

    GET so'rovda hub.verify_token sizdagi qiymatga mos kelsa, hub.challenge qiymatini oddiy matn sifatida qaytaring.

  3. Imzoni tekshiring

    X-Hub-Signature-256 sarlavhasidagi qiymatni ilova sirining HMAC-SHA256 hisobi bilan solishtiring — xom tanaga qarab.

  4. Hodisalarni ajrating

    Bitta yetkazishda bir nechta obyekt va bir nechta o'zgarish kelishi mumkin. Har birini alohida hodisaga aylantiring.

  5. Dedupe qiling

    Meta hodisa ID yubormaydi va yetkazishni qayta yuborishi mumkin. Kalitni mazmundan yig'ing (leadgen_id, xabar mid, izoh ID) — SDK'da dedupe_key(event) — va uni unikal ustunga yozing.

  6. Tez javob qaytaring

    200 ni darhol qaytaring va og'ir ishni navbatga qo'ying — aks holda Meta yetkazishni muvaffaqiyatsiz deb hisoblaydi.

Imzoni to'g'ri tekshirish

Quyidagi kod Meta hujjatidagi standart tekshiruvni SDK'siz ko'rsatadi. Socialift SDK'da xuddi shu tekshiruv verify_request(app_secret, body, headers) funksiyasida — uni endpointingizda o'zingiz chaqirasiz.

verify.py
import hmac, hashlib

def verify(raw_body: bytes, header: str, app_secret: str) -> bool:
    # header ko'rinishi: "sha256=abcdef..."
    if not header or not header.startswith("sha256="):
        return False
    expected = hmac.new(
        app_secret.encode(), raw_body, hashlib.sha256
    ).hexdigest()
    # doimiy vaqtli solishtirish — timing hujumidan himoya
    return hmac.compare_digest(expected, header.split("=", 1)[1])

E'tibor bering: raw_body — bu framework bergan xom baytlar. json.dumps(request.json) natijasi bilan hisoblansa, imzo deyarli har doim mos kelmaydi.

Socialift SDK nimani beradi

01

Imzo tekshiruvi

verify_request(app_secret, body, headers) X-Hub-Signature-256 ni doimiy vaqtda tekshiradi va imzo yo'q yoki noto'g'ri bo'lsa False qaytaradi — bunday so'rovga 403 bering.

02

Hodisalarni ajratish

entry/changes/messaging tuzilmasi yagona hodisalar oqimiga tekislanadi.

03

Takrorlarni yo'q qilish

Meta hodisa ID bermaydi; dedupe_key(event) mazmundan barqaror kalit yig'adi. Uni unikal ustunga yozsangiz, CRM'da dubl bitim paydo bo'lmaydi.

04

Meta qayta yuboradi

Javob bermagan endpointga Meta hodisani 36 soatgacha qayta yuboradi — dedupe_key bilan idempotent bo'ling. SDK'dagi RetryPolicy faqat chiquvchi API so'rovlariga tegishli; hodisani CRM'ga uzatish va qayta urinish sizning kodingizda.

05

Lead mazmunini to'ldirish

leadgen hodisasida faqat ID'lar bor (leadgen_id, form_id, page_id). Javoblarni fb.lead(leadgen_id, page_token) bilan oling va socialift.leads.normalize() bilan ism/telefon/emailga keltiring. Kabinetda ulangan sahifalar uchun server buni o'zi bajaradi — leadlar Playground'dagi GET /crm/leads da ko'rinadi.

06

Diagnostika

Kabinetdagi «Statistika» SDK aktivatsiyalari va API/Playground chaqiruvlarini xatolar soni bilan ko'rsatadi. Webhook yetkazishlari u yerda ko'rinmaydi — ularni endpointingizda log qiling.

Qaysi hodisalar keladi

Qaysi hodisalar keladi — Platformalar bo'yicha imkoniyatlar jadvali
HodisaInstagramFacebookOdatiy CRM harakati
Yangi Instagram Direct xabariboryo'qKontakt + bitim yaratish yoki yangilash
Post ostidagi izohborborVazifa yaratish, javob navbatiga qo'yish
Lead Ads formasi to'ldirildiborborLead yaratish, menejerga biriktirish
Ruxsat bekor qilindiborborUlanishni «uzilgan» deb belgilash

boryo'qJadvalni yon tomonga suring

Izohlar va cheklovlar

Instagram izoh webhooklari uchun ilova Live rejimda, comments uchun Advanced Access bo'lishi va akkaunt ochiq (public) bo'lishi kerak. Instagram reklamasidan kelgan leadlar Facebook sahifasining leadgen hodisasi bilan keladi. LinkedIn webhooklari faqat tasdiqlangan use case'li ilovalar uchun; Socialift LinkedIn klienti ularni qayta ishlamaydi — ma'lumot so'rov bilan olinadi.

Webhook endpointi uchun xavfsizlik ro'yxati

  • Imzosi tekshirilmagan so'rovni hech qachon ishlamang.
  • verify_token va app_secret'ni kodga yozmang — muhit o'zgaruvchisida saqlang.
  • Endpoint faqat HTTPS orqali ochiq bo'lsin.
  • So'rov tanasi hajmini cheklang va JSON parsni himoyalang.
  • Hodisalarni navbatga qo'ying: yetkazish javobi 200 bo'lishi kerak, ishlov keyinroq.
  • Dedupe kaliti va vaqt tamg'asini (entry.time) saqlang — takrorni ushlash va audit uchun.

Ko'p so'raladigan savollar

Webhook qanday ishlaydi?

Platformada hodisa yuz berganda u sizning HTTPS manzilingizga POST so'rov yuboradi. So'rov tanasida hodisa mazmuni, sarlavhada esa imzo bo'ladi. Siz imzoni tekshirib, hodisani qabul qilganingizni bildirish uchun 200 javobini qaytarasiz.

Nega webhook imzosi mos kelmayapti?

Eng ko'p uchraydigan sabab — imzo xom tana o'rniga qayta serializatsiya qilingan JSON bo'yicha hisoblanishi. Ikkinchi sabab — noto'g'ri ilova siri (app secret). Uchinchisi — proksi yoki framework tanani o'zgartirib yuborishi.

Bir xil hodisa ikki marta kelishi mumkinmi?

Ha. Meta muvaffaqiyatsiz yetkazishni 36 soatgacha qayta yuboradi, shuning uchun takror — normal holat. Meta hodisa ID bermaydi: kalitni mazmundan yig'ing (SDK'da dedupe_key) va unikal ustunda saqlang.

Webhook o'rniga davriy so'rov (polling) yuborsa bo'ladimi?

Texnik jihatdan mumkin, lekin bu limitlarni tez sarflaydi va javob vaqtini oshiradi. Xabarlar va leadlar uchun webhook to'g'ri yechim; polling faqat zaxira mexanizm sifatida ma'noli.

Manbalar

  1. Meta — webhooklar bilan ishlashni boshlash
  2. Meta — Instagram webhooklari
  3. LinkedIn — webhook tekshiruvi

Bog'liq sahifalar

Webhooklarni bugun ulang

Token oling va birinchi Meta hodisasining imzosini verify_request bilan tekshiring.

Bepul token olish →