Каталог

Для описи ассортимента компании в расширении Facebook Business используется каталог. Он используется для поддержки различных функций, в том числе динамической рекламы, магазинов Страниц и карточки избранных услуг. Это необязательная часть интеграции, но она необходима для определенных функций.

Каталог Facebook имеет свой собственный набор API, но расширение Facebook Business интегрируется с некоторыми из них напрямую, чтобы вы могли легко обновлять ассортимент компании на нашей платформе (без необходимости отслеживать ID каталога Facebook с вашей стороны).

Подробнее о том, как заполнить обязательные поля каталога для динамической рекламы и различных сценариев использования, включая магазины на Страницах, Instagram Shopping и Marketplace, см. в этой статье.

Обновление ассортимента

Обновить ассортимент можно двумя способами:

  • отправка — отправить каталог на Facebook с помощью API (рекомендуется);
  • считывание — позволить Facebook периодически считывать каталог с вашей платформы (не рекомендуется, так как приводит к позднему обновлению ассортимента и создает лишнюю нагрузку на сервер).

Методы отправки

Мы настоятельно рекомендуем использовать один из методов отправки (Batch API или API однократной загрузки ленты), так как это позволяет быстро обновлять ассортимент и снижает нагрузку на серверы с обеих сторон. Для этого используется тот же самый access_token, который возвращается входом для компании и Webhook.

При получении Webhook новой установки необходимо отправить нам полный ассортимент компании. Обновления необходимо отправлять каждый раз, когда компания изменяет свой ассортимент у вас на сайте.

API Batch

Рекомендуется для большинства компаний электронной коммерции. Batch API — это стандартный API каталога Facebook. Он подходит для компаний с большим (более 100 товаров) и (или) часто обновляемым ассортиментом.

API однократной загрузки ленты

Используется для бронирования (услуг) компаний.API однократной загрузки ленты — это стандартный API каталога Facebook. Он подходит для компаний с небольшим ассортиментом (до 100 товаров).

Он позволяет отправлять полный ассортимент каждый раз, когда в него вносятся изменения. При этом ассортимент в каталоге Facebook обновляется полностью.

Шаг 1. Получите ID ленты, созданный во время установки расширения Facebook Business, отправив ID подключенного каталога (из уведомлений Webhook или от нашей конечной точки API установки расширения Facebook Business):

curl -G \
-d "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/product_feeds

Подробнее об API ленты продуктов см. в этом разделе.

Шаг 2. Выполните однократную загрузку в ленту:

Пример: файлы ленты, размещенные в общедоступном месте.

Graph API Explorer
curl -X POST \
  -F 'url="http://www.example.com/sample_feed.xml"' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{FEED_ID}/uploads
POST /{FEED_ID}/uploads HTTP/1.1
Host: graph.facebook.com

url=http%3A%2F%2Fwww.example.com%2Fsample_feed.xml
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{FEED_ID}/uploads',
    array (
      'url' => 'http://www.example.com/sample_feed.xml',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{FEED_ID}/uploads",
    "POST",
    {
        "url": "http:\/\/www.example.com\/sample_feed.xml"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);

Пример: загрузка файлов ленты непосредственно с локального компьютера. Путь к файлу здесь нужно заменить реальным значением.

Graph API Explorer
curl -X POST \
  -F 'file=@catalog.csv;type=text/csv' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{FEED_ID}/uploads
POST /{FEED_ID}/uploads HTTP/1.1
Host: graph.facebook.com

file=%40catalog.csv%3Btype%3Dtext%2Fcsv
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{FEED_ID}/uploads',
    array (
      'file' => '@catalog.csv;type=text/csv',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{FEED_ID}/uploads",
    "POST",
    {
        "file": "@catalog.csv;type=text\/csv"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);

Поддерживаемые форматы

Форматы запросов и ответов совпадают с форматами для исходной конечной точки.

Информацию о поддерживаемых полях каталога бронирований (услуг) см. в этом разделе.

Метод считывания

Мы не рекомендуем использовать этот способ, так как он приводит к тому, что состояние ассортимента может оставаться неактуальным до тех пор, пока не будет выполнена следующая операция считывания. Этот способ подходит для небольших компаний, самостоятельно размещающих каталог с использованием общедоступного файла ассортимента. Если вы хотите использовать этот способ, в конфигурации компании необходимо указать функцию catalog_feed_scheduled (передается с помощью входа для компаний). Если эта функция указана, мы регулярно загружаем ассортимент компании с указанного общедоступного URL-адреса вне зависимости от того, были внесены изменения или нет.

Подробнее о запланированной загрузке ленты.