Следующий контент взят из документации по Webhooks. Ознакомьтесь с ней, если вы еще не работали с Webhooks.

Настройка Webhooks для Instagram

С помощью Webhooks для Instagram можно в реальном времени получать уведомления о том, что кто-то прокомментировал медиаобъекты пользователей вашего приложения или @упомянул этих пользователей, а также что истекает срок действия их историй.

Получение уведомлений Webhooks в режиме реального времени

Для получения уведомлений Webhooks в режиме реального времени должны быть соблюдены следующие условия:

Если для разрешений приложения не будет обеспечен уровень расширенного доступа, это приложение не будет получать уведомления Webhooks.

  • Пользователь должен предоставить приложению соответствующие разрешения (instagram_manage_insights для историй, instagram_manage_comments для комментариев и @упоминаний).
  • На Странице, связанной с аккаунтом пользователя приложения, должны быть включены подписки.
  • Компания, связанная со Страницей пользователя приложения, должна быть подтверждена.
  • Аккаунт владельца медиаобъекта, к которому относится комментарий или @упоминание, не должен быть закрытым.

Ограничения

  • Уведомления Webhooks о комментариях к альбомам не содержат ID альбома. Чтобы получить его, запросите поле media ID комментария из Webhooks.
  • Приложения не будут получать уведомления Webhooks, если медиафайл, в котором отображается комментарий или @упоминание, был создан с использованием закрытого аккаунта.
  • Если значение метрики истории меньше 5, возвращается значение -1.
  • Приложения будут получать уведомления Webhooks для комментариев к IG Media в прямом эфире, только если медиафайл находится в режиме трансляции.
  • Видео Reels не поддерживаются.
  • Чтобы получать уведомления Webhooks для полей comments и live_comments, ваше приложение должно пройти проверку (получить расширенный доступ).

Шаг 1. Создание конечной точки.

Создайте конечную точку, которая принимает и обрабатывает Webhooks. Во время конфигурации выберите объект API Instagram Graph, нажмите Настроить и подпишитесь на одно или несколько полей Instagram.

Поля Instagram

ПолеОписаниеНеобходимые разрешения

comments

Комментарии к IG Media, которым владеет пользователь Instagram вашего приложения.

Когда человек комментирует продвигаемую публикацию Instagram или публикацию с рекламой, в объект медиафайла возвращаются параметры ad_id и ad_title. Это может привести к дублированию уведомлений Webhooks.

live_comments

Комментарии к IG Media в прямом эфире, которым владеет пользователь Instagram вашего приложения.

mentions

@Упоминания пользователя Instagram вашего приложения в комментарии.

story_insights

Метрики, описывающие взаимодействия с историей. Отправляются через 1 час после истечения срока действия истории.

Шаг 2. Включение подписок на Странице.

На Странице, связанной с аккаунтом пользователя приложения, должны быть включены подписки. Для этого приложение должно отправить запрос POST к границе контекста Page Subscribed Apps и подписаться на любое поле Страницы.

Требования конечной точки

  • Маркер доступа к Странице, принадлежащий пользователю приложения
  • Разрешение pages_manage_metadata

Синтаксис запроса

POST /{page-id}/subscribed_apps
  ?access_token={access-token}
  &subscribed_fields={fields}

Параметры запроса

Заполнитель значения Описание значения

{page_id}

ID Страницы, связанной с аккаунтом пользователя приложения.

{access_token}

Маркер доступа к Странице пользователя приложения.

{fields}

Поле Страницы (пример: feed).

Приложение не будет получать уведомления об изменениях в нем, если только вы не настроите подписки на Странице на Панели приложений и не подпишетесь на это поле.

Пример запроса

curl -i -X POST \
  "https://graph.facebook.com/v19.0/1755847768034402/subscribed_apps?subscribed_fields=feed&access_token=EAAFB..."
Пример ответа
{
  "success": true
}

Стандартное использование

Получение статистики истории

Если вы подпишетесь на поле story_insights, то при истечении срока действия истории мы отправим на вашу конечную точку уведомление Webhooks с метриками статистики истории.

Пример полезных данных в уведомлении со статистикой истории

[
  {
    "entry": [
      {
        "changes": [
          {
            "field": "story_insights",
            "value": {
              "media_id": "18023345989012587",
              "exits": 1,
              "replies": 0,
              "reach": 17,
              "taps_forward": 12,
              "taps_back": 0,
              "impressions": 28
            }
          }
        ],
        "id": "17841405309211844",  // Instagram Business or Creator Account ID
        "time": 1547687043
      }
    ],
    "object": "instagram"
  }
]

Ответ на @упоминания в комментариях

Если вы подпишетесь на поле mentions, то при каждом @упоминании бизнес-аккаунта или аккаунта автора Instagram в комментарии или подписи мы будем отправлять уведомление Webhooks на вашу конечную точку.

Ниже приведен пример полезных данных в уведомлении Webhooks о комментарии для бизнес-аккаунта Instagram (17841405726653026).

Пример полезных данных в уведомлении об @упоминании в комментарии

[
  {
    "entry": [
      {
        "changes": [
          {
            "field": "mentions",
            "value": {
              "comment_id": "17894227972186120",
              "media_id": "17918195224117851"
            }
          }
        ],
        "id": "17841405726653026",
        "time": 1520622968
      }
    ],
    "object": "instagram"
  }
]

Получение содержимого комментария

Чтобы получить содержимое комментария, выполните запрос к границе контекста GET /{ig-user-id}/mentioned_comment со свойством comment_id.

Пример запроса

GET https://graph.facebook.com/17841405726653026 ?fields=mentioned_comment.comment_id(17894227972186120) 

Пример ответа

{
  "mentioned_comment": {
    "timestamp": "2018-03-20T00:05:29+0000",
    "text": "@bluebottle challenge?",
    "id": "17894227972186120"
  },
  "id": "17841405726653026"
}

Анализ полезных данных и ответ

Получив ответ, проанализируйте полезные данные свойства text и решите, нужно ли отвечать на комментарий. Чтобы ответить на него, выполните запрос к конечной точке POST /{ig-user-id}/mentions, указав значения свойств caption_id и media_id из полезных данных уведомления Webhooks.

Пример запроса

curl -i -X POST \
  -d "comment_id=17894227972186120" \
  -d "media_id=17918195224117851" \
  -d "message=Challenge%20accepted!" \
  -d "access_token={access-token}" \
  "https://graph.facebook.com/17841405726653026/mentions"

Пример ответа

{
  "id": "17911496353086895"
}

Ответ на @упоминания в подписях

Если вы подпишетесь на поле mentions, то при каждом @упоминании бизнес-аккаунта или аккаунта автора Instagram в комментарии или подписи к медиаобъекту, не принадлежащему соответствующей компании или автору, мы будем отправлять уведомление Webhooks на вашу конечную точку.

Ниже приведен пример уведомления Webhooks об @упоминании в подписи для бизнес-аккаунта Instagram (17841405726653026).

Пример уведомления Webhooks об @упоминании в подписи

[
  {
    "entry": [
      {
        "changes": [
          {
            "field": "mentions",
            "value": {
              "media_id": "17918195224117851"
            }
          }
        ],
        "id": "17841405726653026",
        "time": 1520622968
      }
    ],
    "object": "instagram"
  }
]

Получение содержимого подписи

Чтобы получить содержимое подписи, выполните запрос к границе контекста GET /{ig-user-id}/mentioned_media со свойством media_id.

Пример запроса

GET https://graph.facebook.com/17841405726653026 ?fields=mentioned_media.media_id(17918195224117851){caption,media_type} 

Пример ответа

{
  "mentioned_media": {
    "caption": "@bluebottle There can be only one!",
    "media_type": "IMAGE",
    "id": "17918195224117851"
  },
  "id": "17841405726653026"
}

Анализ полезных данных и ответ

Получив ответ, проанализируйте полезные данные свойства caption и решите, нужно ли отвечать на комментарий. Чтобы ответить на него, выполните запрос к границе контекста POST /{ig-user-id}/mentions, указав значение свойства media_id уведомления Webhooks.

Пример запроса

curl -i -X POST \
  -d "media_id=17918195224117851" \
  -d "message=MacLeod%20agrees!" \
  -d "access_token={access-token}" \
  "https://graph.facebook.com/17841405726653026/mentions"

Пример ответа

{
  "id": "17911496353086895"
}