Розробка мобільного Instagram Direct-чат-бота
Instagram Direct Messaging API — частина екосистеми Meta Business Platform. Автоматизація Direct доступна тільки через офіційний Instagram Graph API, і тільки для бізнес-аккаунтів або аккаунтів творців, підключених до Meta Business Suite. Неофіційні інструменти порушують ToS.
Вимоги до аккаунту та налаштування
Для роботи з Instagram Messaging API потрібні:
- Instagram Business або Creator аккаунт (не особистий)
- Facebook Page, пов'язана з вашим Instagram-аккаунтом
-
Meta Developer App з дозволами:
instagram_basic,instagram_manage_messages,pages_manage_metadata - Проходження App Review для дозволу
instagram_manage_messages(обов'язково для продакшену)
App Review — найдовший крок: Meta проглядає ваш додаток вручну, що може займати 1–4 тижні. Без затвердження бот працює тільки з тестовими аккаунтами.
Webhook: отримання повідомлень
Instagram повідомлення приходять через ту саму Webhooks Platform, що й Messenger, але з object = "instagram":
@app.post("/webhook")
async def instagram_webhook(request: Request):
body = await request.json()
if body.get("object") != "instagram":
return "ok"
for entry in body.get("entry", []):
for messaging in entry.get("messaging", []):
sender_id = messaging["sender"]["id"] # Instagram Scoped User ID
if "message" in messaging:
message = messaging["message"]
if "text" in message:
await handle_text(sender_id, message["text"])
elif "attachments" in message:
for att in message["attachments"]:
await handle_attachment(sender_id, att)
elif "reaction" in messaging:
# Реакція користувача на повідомлення
await handle_reaction(sender_id, messaging["reaction"])
return "ok"
Відправлення відповідей через Graph API
async def send_instagram_message(recipient_id: str, message_data: dict):
ig_account_id = "your_ig_account_id"
async with httpx.AsyncClient() as client:
response = await client.post(
f"https://graph.facebook.com/v18.0/{ig_account_id}/messages",
params={"access_token": PAGE_ACCESS_TOKEN},
json={
"recipient": {"id": recipient_id},
"message": message_data
}
)
return response.json()
# Текстова відповідь
await send_instagram_message(sender_id, {"text": "Привіт! Радіємо вас бачити."})
# Реакція на повідомлення (лайк)
await send_instagram_message(sender_id, {
"reaction": {
"reaction": "love",
"mid": original_message_id
}
})
Типи повідомлень та обмеження
Instagram Messaging API менш функціональний за Telegram і навіть Messenger. Йому не вистачає:
- Persistent Menu
- Generic Template / Carousel (на даний момент 2024–2025)
- Rich Media карток
- Location повідомлень від бота
Підтримує: текст, зображення, стікери (через icebreakers), Quick Replies.
24-годинне вікно — строге обмеження. Після останнього повідомлення користувача бот може відповідати 24 години. Після цього — тільки через Human Agent Tag (якщо в переписці брав участь живий оператор) або Message Tags. На відміну від WhatsApp, немає зручного механізму для проактивних шаблонних повідомлень.
Автоматичні відповіді на Story mentions та Reactions
Користувач згадав ваш аккаунт в Stories — це окрема подія messaging_story_mentions:
if "story_mention" in messaging:
story_url = messaging["story_mention"].get("url", "")
# Подякувати користувачу за згадку
await send_instagram_message(sender_id, {
"text": "Дякуємо, що згадали нас в Stories! 🙌"
})
Це законний і популярний use-case для інтернет-магазинів: автоматична подяка за UGC.
Отримання медіа з вхідних повідомлень
Користувач відправив фото — в attachment приходить payload.url. URL дійсний обмежений час (~1 година). Завантажуйте та кешуйте негайно:
async def process_image_message(sender_id: str, attachment: dict):
if attachment["type"] == "image":
image_url = attachment["payload"]["url"]
# Завантажити через httpx з токеном авторизації
image_data = await download_media(image_url, PAGE_ACCESS_TOKEN)
# Розпізнати через Vision API / ML Kit
result = await analyze_image(image_data)
await send_instagram_message(sender_id, {"text": result})
Типовий use-case: користувач відправляє фото товару, бот шукає схожі в каталозі через vector similarity search.
Процес розробки
Налаштування Meta App та проходження App Review. Webhook з верифікацією та обробкою подій. Реалізація відповідей на текст та медіа. Автоматичні відповіді на Story mentions. Інтеграція з CRM для історії діалогів. Тестування на бізнес-аккаунті в тестовому режимі.
Орієнтири за часом
Базовий бот з текстовими відповідями — 1–2 тижні (плюс час App Review). Повнофункціональний бот з обробкою медіа, автоматичними відповідями на Stories та CRM-інтеграцією — 4–8 тижнів.







