Asosiy mazmunga o'tish
Socialift
Texnik qo'llanma

Instagram Messaging API: Direct xabarlar bo'yicha texnik qo'llanma

Instagram Messaging API professional akkauntga Direct xabarlarni webhook orqali qabul qilish va POST /<IG_ID>/messages bilan javob berish imkonini beradi. Mijoz birinchi yozishi shart; shundan keyin javob uchun 24 soat bor, jonli operator esa App Review talab qiladigan HUMAN_AGENT tegi bilan 7 kungacha javob bera oladi. Instagram Login'da instagram_business_manage_messages kerak, Facebook Login esa Messenger Platform orqali ishlaydi.

Yangilangan:

Instagram DM API qanday ishlaydi?

Suhbatni doim Instagram foydalanuvchisi boshlaydi — profil, post, story eslatmasi yoki boshqa kirish nuqtasi orqali. Meta messages webhook'ini yuboradi, unda yuboruvchining Instagram-scoped ID si (IGSID) bo'ladi. Serveringiz shu IGSID ga Send API orqali 24 soat ichida javob beradi. Tarix Conversations API orqali, profil ma'lumoti esa foydalanuvchi sizga yozgandan keyin User Profile API orqali olinadi.

Bu maqola API mexanikasiga bag'ishlangan. Biznes va sotuv nuqtai nazaridan nima mumkinligi — Instagram Direct'ni avtomatlashtirish maqolasida, Socialift xom endpointlar ustiga nima qo'shishi esa Instagram Direct API sahifasida.

Login turiga ko'ra talablar

Login turiga ko'ra talablar — Platformalar bo'yicha imkoniyatlar jadvali
Instagram LoginFacebook Login (Messenger Platform)
Hostgraph.instagram.comgraph.facebook.com
TokenInstagram User access tokenPage access token (MESSAGE vazifasiga ega odamdan)
Ruxsatlarinstagram_business_basic, instagram_business_manage_messagesinstagram_basic, instagram_manage_messages, pages_manage_metadata
Xabar yuborishPOST /<IG_ID>/messagesPOST /<PAGE_ID>/messages
Suhbatlar ro'yxatiGET /me/conversationsGET /<PAGE_ID>/conversations?platform=instagram
Webhook obunasiPOST /me/subscribed_appsApp Dashboard'da instagram obyekti + bog'langan sahifa obunasi
Standard Access bilanFaqat o'zingiz boshqaradigan akkauntlarFaqat ilovada rolga ega odamlarga xabar
Izohlar va cheklovlar

Facebook Login yo'lida Meta Instagram ilovasida "Allow access to messages" tugmasini ham yoqishni talab qiladi (Sozlamalar → Xabarlar va story javoblari → Xabar nazorati → Ulangan vositalar).

24 soatlik oyna va HUMAN_AGENT tegi

Ilovangiz Instagram foydalanuvchisiga faqat u professional akkauntga yozganidan keyin xabar yubora oladi. Foydalanuvchining oxirgi xabaridan boshlab javob uchun 24 soat bor va shu oyna ichidagi javobda reklama mazmuni ham bo'lishi mumkin.

Jamoangizdagi odamga ko'proq vaqt kerak bo'lsa — biznes dam olish kunlari yopiq yoki masala bir kundan ko'p vaqt talab qiladi — javob HUMAN_AGENT xabar tegi bilan foydalanuvchi xabaridan keyin 7 kungacha yuborilishi mumkin. Teg jonli operatorning qo'lda yozgan javobi uchun mo'ljallangan; Human Agent funksiyasi App Review va biznes verifikatsiyasini talab qiladi.

Bu oynalardan tashqarida API orqali foydalanuvchiga yetib borish yo'li yo'q: Messenger'dagi One-Time Notification, News Messaging va Sponsored Messages Instagram Messaging API uchun mavjud emas.

Socialift SDK'da send_message tegsiz oddiy matnli javob yuboradi. Oyna yopilgan bo'lsa Meta so'rovni rad etadi va SDK PermissionError ko'taradi — uni ushlang va qayta urinish o'rniga suhbatni jonli operatorga yo'naltiring.

Instagram xabarlari uchun webhook maydonlari

Faqat qayta ishlaydigan maydonlaringizga obuna bo'ling. Instagram Login'da ular instagram_business_basic va instagram_business_manage_messages ni talab qiladi, ilova esa Live rejimida bo'lishi kerak.

Instagram xabarlari uchun webhook maydonlari — Platformalar bo'yicha imkoniyatlar jadvali
MaydonQachon keladi
messagesFoydalanuvchi xabar yuborganda; payload'da sender.id (IGSID), recipient.id, timestamp, message.mid va matn yoki biriktirma
message_echoesBiznes akkaunt xabar yuborganda (Instagram Login maydoni); Messenger Platform yo'lida bunday xabarlar messages ichida is_echo bilan keladi
message_reactionsFoydalanuvchi xabarga reaksiya bildirganda
messaging_postbacksFoydalanuvchi icebreaker yoki tugmani bosganda
messaging_seenFoydalanuvchi xabarni o'qiganda
messaging_referralFoydalanuvchi suhbatni ig.me havolasi orqali ochganda
message_editFoydalanuvchi xabarni tahrirlaganda (2025-yil 10-sentabrdan)

Xabarlarni qabul qilish: webhook handler

Socialift webhook yordamchilari X-Hub-Signature-256 ni tekshiradi, ikkala payload formatini tekislaydi va barqaror dedupe kalitini yasaydi.

ig_webhook.py
import json, os
from socialift.webhooks import dedupe_key, parse_events, verify_request

APP_SECRET = os.environ["WEBHOOK_APP_SECRET"]  # webhook'ni qabul qiluvchi ilova siri

def handle_instagram_webhook(raw_body: bytes, headers, seen: set) -> int:
    if not verify_request(APP_SECRET, raw_body, headers):
        return 403
    for event in parse_events(json.loads(raw_body)):
        key = dedupe_key(event)
        if event.field != "messages" or key in seen:
            continue
        seen.add(key)
        message = event.value.get("message") or {}
        if message.get("is_echo"):
            continue  # o'zimiz yuborgan xabar
        igsid = event.value["sender"]["id"]
        print("DM:", igsid, message.get("text"))  # navbatga qo'ying, shu yerda ishlamang
    return 200

200 javobni tez qaytaring va ishlovni navbatga o'tkazing: Meta'ning Messenger Platform hujjati 5 soniya ichida 200 OK kutadi, bir soat davomida muvaffaqiyatsiz yetkazilgan webhook esa o'chiriladi.

seen — bazangizdagi unikal ustun o'rnida: Meta bir hodisani bir necha marta yetkazishi mumkin.

Suhbatlarni o'qish va SDK bilan javob berish

ig_inbox.py
import asyncio, os
from socialift import Instagram, PermissionError as MetaPermissionError

async def main():
    token = os.environ["IG_USER_TOKEN"]
    async with Instagram.from_env() as ig:
        chats = await ig.conversations(token, limit=10)
        for chat in chats["data"]:
            contact = chat["contact"] or {}
            history = await ig.messages(chat["id"], token, limit=20)
            print(contact.get("username"), len(history["data"]))

        igsid = os.environ["CUSTOMER_IGSID"]
        print(await ig.contact(igsid, token))
        try:
            await ig.send_message(igsid, token, "Rahmat! Menejer tez orada javob beradi.")
        except MetaPermissionError:
            print("24 soatlik oyna yopilgan: jonli operatorga yo'naltiring")

asyncio.run(main())

conversations data (har birida id va contact) va paging qaytaradi; keyingi sahifa uchun after= bering. enrich=True (standart) bo'lsa suhbatdosh profillari parallel olinadi.

contact(igsid, token) User Profile API'ni chaqiradi va profil o'qilmasa istisno o'rniga available: False qaytaradi.

Facebook Login: Instagram.via_facebook(app_secret=...), keyin ig.conversations(page_token, page_id=..., ig_user_id=...) va ig.send_message(igsid, page_token, text, page_id=...) — platform=instagram ni SDK o'zi qo'shadi.

send_message matnni qamrab oladi; biriktirmalar, quick reply, shablonlar, xabar teglari va private reply uchun Graph API to'g'ridan-to'g'ri chaqiriladi.

Izohlarga private reply

Private reply akkauntning posti, Reels, story, Live efiri yoki reklama postiga izoh qoldirgan odamga Direct xabar yuboradi. Chaqiruv — POST /<IG_ID>/messages, faqat recipient ichida IGSID o'rniga comment_id beriladi.

Qoidalar: izohdan keyin 7 kun ichida javob bering (Live uchun — faqat efir davomida); bitta izohga faqat bitta xabar; keyingi xabarlar faqat foydalanuvchi javob bersa va 24 soat ichida yuboriladi. Xabar foydalanuvchining akkauntni kuzatishiga qarab Inbox yoki Requests papkasiga tushadi.

Ruxsatlar oddiy xabarlardan farq qiladi: Instagram Login'da instagram_business_basic va instagram_business_manage_comments; Facebook Login'da instagram_basic, instagram_manage_comments va pages_read_engagement. Limit — post va Reels uchun soatiga 750 ta, Live izohlari uchun soniyasiga 100 ta chaqiruv.

Instagram xabarlari limitlari

Instagram xabarlari limitlari — Platformalar bo'yicha imkoniyatlar jadvali
NimaLimit
Conversations APIProfessional akkaunt uchun soniyasiga 2 ta chaqiruv
Send API: matn, havola, reaksiya, stikerAkkaunt uchun soniyasiga 100 ta chaqiruv
Send API: audio va videoAkkaunt uchun soniyasiga 10 ta chaqiruv
Xabar matniUTF-8, 1000 baytgacha
Bitta xabardagi rasmlar10 tagacha
Biriktirma hajmiRasm 8 MB; audio, video va PDF 25 MB
Conversations API orqali xabar tafsilotlariSuhbatdagi faqat oxirgi 20 ta xabar
Requests papkasi30 kun faol bo'lmagan suhbatlar qaytarilmaydi

Loyihalashda hisobga olinadigan cheklovlar

  • Birinchi bo'lib yozib bo'lmaydi: foydalanuvchi birinchi yozishi shart.
  • Guruh chatlari yo'q — bitta suhbatda bitta mijoz.
  • Inbox papkalarini (Primary, General, Requests) API orqali boshqarib bo'lmaydi.
  • Faqat oxirgi 20 ta xabar tafsiloti olinadi — webhook'dan kelgan xabarlarni o'zingiz saqlang.
  • User Profile API ma'lumotlari (name, username, profile_pic, follower_count, is_user_follow_business, is_business_follow_user, is_verified_user) faqat foydalanuvchi yozgan yoki icebreaker bosgandan keyin ochiladi; profile_pic havolasi bir necha kunda eskiradi.
  • Foydalanuvchi biznesni bloklagan bo'lsa, uning profilini o'qib bo'lmaydi.
  • Xabarda ulashiladigan media va postlar biznes akkauntga tegishli bo'lishi kerak.
  • Webhook'lar faqat ilova Live rejimida bo'lganda keladi.

← Blogga qaytish

Ko'p so'raladigan savollar

Instagram API orqali foydalanuvchiga birinchi bo'lib yozish mumkinmi?

Yo'q. Suhbat faqat Instagram foydalanuvchisi professional akkauntga yozganda (private reply uchun — kontentiga izoh qoldirganda) boshlanadi. Instagram Messaging API orqali sovuq xabar va ommaviy tarqatma yuborib bo'lmaydi.

24 soatlik oyna yopilgandan keyin nima bo'ladi?

Oddiy javoblar rad etiladi. Jonli operator foydalanuvchining oxirgi xabaridan keyin 7 kungacha HUMAN_AGENT tegi bilan javob bera oladi, buning uchun Human Agent funksiyasi App Review'dan o'tgan bo'lishi kerak. Avtomatik xabarlar bu tegga to'g'ri kelmaydi.

Instagram DM API limitlari qanday?

Send API matn, havola, reaksiya va stikerlar uchun akkauntga soniyasiga 100 ta, audio va video uchun 10 ta chaqiruvga ruxsat beradi. Conversations API — soniyasiga 2 ta, private reply — post va Reels uchun soatiga 750 ta.

Instagram Messaging API uchun Facebook sahifasi kerakmi?

Yo'q. Instagram Login bilan graph.instagram.com ga instagram_business_manage_messages ruxsati orqali murojaat qilasiz. Sahifa faqat Facebook Login yo'lida kerak — u yerda Instagram xabarlari Messenger Platform orqali Page token bilan ishlaydi.

Nega mijoz profilini o'qib bo'lmayapti?

User Profile API ma'lumotni faqat foydalanuvchi akkauntingizga yozgan, icebreaker yoki doimiy menyuni bosgandan keyin beradi. Foydalanuvchi faqat izoh qoldirgan yoki sizni bloklagan bo'lsa Meta xato qaytaradi — Socialift SDK'ning contact metodi bunda available: False qaytaradi.

Manbalar

  1. Meta: Send messages (Instagram API with Instagram Login)
  2. Meta: Conversations API
  3. Meta: Private replies
  4. Meta: Instagram webhooks
  5. Meta: Human Agent feature
  6. Meta: Overview of the Instagram API (rate limits)

Bog'liq sahifalar