Перейти к содержанию

01.1.8 OnSocial

Версия 1.2.0
Количество листов

Оглавление

История изменений

№ 1 Дата: 15.12.25 Автор: Ляшук Андрей RFC: RPL-2000 Версия: 1.0.0
Изменено:
В “01.1.8_1_2 Маппинг данных аккаунта от OnSocial” изменен маппинг параметра “relevantTags”.
№ 2 Дата: 23.12.25 Автор: Ляшук Андрей RFC: RPL-2097 Версия: 1.1.0
Отменены:
изменения, которые были добавлены в рамках RPL-2000.
№3 Дата: 26.06.26 Автор: Ляшук Андрей RFC: RPL-2803 Версия: 1.2.0
Добавлено:
• "01.1.8_1_3 Процедура принудительного обновления AD Report"
• "1.2 Очередь проверки статуса задачи AD Report Refresh"
• "01.1.8_1.2_1 Процедура обработки сообщения "Задача AD Report Refresh"".

1. OnSocial

Сервис OnSocial используется для получения информации об аккаунте Инфлюэнсера и аудитории данного аккаунта.

Интеграция с сервисом осуществляется на основе API документации сервиса(документация доступна только для авторизованных пользователей)

1_1 Переменные окружения

Переменная окружения Описание
ONSOCIAL_HOST Хост для выполнения запросов к сервису.
ONSOCIAL_API_KEY АПИ ключ для аутентификации запросов.
01.1.8_1_1 Процедура получения данных аккаунта от OnSocial
  1. Выполняется инициация данной процедуры с параметрами:
  2. account;
  3. Выполняется:
  4. Запрос "New report" к сервису OnSocial c параметрами:
    1. url - согласно значению параметра “account”, который был указан при инициации данной процедуры;
    2. dry_run - true.
  5. Если запрос "New report" к сервису OnSocial:
    1. Не выполнен:
      1. Выполняется логирование события с Payload:
        1. title - “Get account data from OnSocial”;
        2. error - "OnSocial service did not respond on request with dry_run - true";
        3. data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
      2. Процедура является не выполненной. Дальнейшие этапы процедуры не выполняются.
    2. Выполнен успешно, код ответа не 200 и:
      1. Значение параметра “error” не “retry_later” выполняется:
        1. Логирование события с Payload:
        2. title - “Get account data from OnSocial”;
        3. error - "Request returned error with non-200 response code";
        4. data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.;
        5. Изменение параметров “Данных аккаунта”:
        6. Дата обновления - согласно текущей дате;
        7. Исходные данные - согласно телу ответа который был получен в результатах запроса
        8. В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
        9. text - “OnSocial: error receiving data for {account, который был указан при инициации запроса}. {Код ответа на запрос} - {значение параметра “message” ответа на запрос}”.
        10. Процедура является успешно выполненной. Дальнейшие этапы процедуры не выполняются.
      2. Значение параметра “error” - “retry_later” выполняется:
        1. Логирование события с Payload:
        2. title - “Get account data from OnSocial”;
        3. error - "OnSocial returned retry_later. Audience update is still in progress";
        4. data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
        5. Изменение параметров “Данных аккаунта”:
        6. Дата обновления - согласно текущей дате.
        7. Процедура является не выполненной. Дальнейшие этапы процедуры не выполняются.
  6. Выполняется:
  7. Запрос "New report" к сервису OnSocial c параметрами:
    1. url - согласно значению параметра “account”, который был указан при инициации данной процедуры;
    2. Согласно настройке “onsocial_new_report_query_parameters”.
  8. Если запрос "New report" к сервису OnSocial:
    1. Не выполнен:
      1. Выполняется логирование события с Payload:
        1. title - “Get account data from OnSocial”;
        2. error - "OnSocial service did not respond on main report request";
        3. data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
      2. Процедура является не выполненной. Дальнейшие этапы процедуры не выполняются.
    2. Выполнен успешно, код ответа не 200 и:
      1. Значение параметра “error” не “retry_later” выполняется:
        1. Логирование события с Payload:
        2. title - “Get account data from OnSocial”;
        3. error - "Main request returned error with non-200 response code";
        4. data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
        5. Изменение параметров “Данных аккаунта”:
        6. Дата обновления - согласно текущей дате;
        7. Исходные данные - согласно телу ответа который был получен в результатах запроса
        8. В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
        9. text - “OnSocial: error receiving data for {account, который был указан при инициации запроса}. {Код ответа на запрос} - {значение параметра “error_message” ответа на запрос}”.
        10. Процедура является успешно выполненной. Дальнейшие этапы процедуры не выполняются.
      2. Значение параметра “error” - “retry_later” выполняется:
        1. Логирование события с Payload:
        2. title - “Get account data from OnSocial”;
        3. error - "OnSocial returned retry_later. Audience update is still pending";
        4. data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
        5. Изменение параметров “Данных аккаунта”:
        6. Дата обновления - согласно текущей дате.
        7. Процедура является не выполненной. Дальнейшие этапы процедуры не выполняются.
    3. Выполнен успешно, код ответа 200 и в ответе на запрос значение параметра “audience_followers.success”:
      1. Не “true”, выполняется:
        1. Логирование события с Payload:
        2. title - “Get account data from OnSocial”;
        3. error - "audience_followers.success is not true";
        4. data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
        5. Изменение параметров “Данных аккаунта”:
        6. Дата обновления - согласно текущей дате;
        7. Исходные данные - согласно телу ответа который был получен в результатах запроса.
        8. В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
        9. text - “OnSocial: error receiving data for {account, который был указан при инициации запроса}. No information about the audience”
        10. Процедура является успешно выполненной. Дальнейшие этапы процедуры не выполняются.
      2. “True”, выполняется изменение параметров “Данных аккаунта”:

        1. Дата получения - согласно текущей дате;
        2. Исходные данные - согласно телу ответа, которое было получено в результатах запроса "New report".

        процедура является успешно выполненной.

01.1.8_1_2 Маппинг данных аккаунта от OnSocial

Параметр Параметр Yoloco Описание
avatar user_profile.picture Ссылка на “Аватар” аккаунта инфлюэнсера.
fullName user_profile.fullname “Полное имя” аккаунта инфлюэнсера.
biography user_profile.description “Информация о пользователе” аккаунта инфлюэнсера.
engagementRate user_profile.engagement_rate “Показатель вовлеченности аудитории” аккаунта инфлюэнсера.
followersCount user_profile.followers “Количество подписчиков” аккаунта инфлюэнсера.
likesCount user_profile.avg_likes “Среднее количество лайков” аккаунта инфлюэнсера.
commentsCount user_profile.avg_comments “Среднее количество комментов” аккаунта инфлюэнсера.
city Определяется как объект с параметрами: "name" - user_profile.geo.city.name; countryName - user_profile.geo.country.name. “Город” аккаунта инфлюэнсера.
languageCode user_profile.language.code “Код языка” аккаунта инфлюэнсера.
interests Определяется как массив из объектов массива “user_profile.interests” Элементом массива является строка “user_profile.interests[ ].name” Массив “Интересов аккаунта”.
languageAudience Определяется как массив из объектов массива “audience_followers.data.audience_languages” Элементом массива является объект с параметрами: "code" - audience_followers.data.audience_languages[].code; "share" - audience_followers.data.audience_languages[].weight. Массив “Аудиторий аккаунта по языку”.
countryAudience Определяется как массив из объектов массива “audience_followers.data.audience_geo.countries” Элементом массива является объект с параметрами: "countryName" - audience_followers.data.audience_geo.countries[].name; "share" - audience_followers.data.audience_geo.countries[].weight. Массив “Аудиторий аккаунта по стране”.
cityAudience Определяется как массив из объектов массива “audience_followers.data.audience_geo.cities” Элементом массива является объект с параметрами: "cityName" - audience_followers.data.audience_geo.cities[].name; "countryName" - audience_followers.data.audience_geo.cities[].country.name; "share" - audience_followers.data.audience_geo.cities[].weight. Массив “Аудиторий аккаунта по стране”.
genderAudience Определяется как массив из объектов массива “audience_followers.data.audience_genders” Элементом массива является объект с параметрами: "genderName" - audience_followers.data.audience_genders[].code; "share" - audience_followers.data.audience_genders[].weight. Массив “Аудиторий аккаунта по полу”.
ageRangeAudience Определяется как массив из объектов массива “audience_followers.data.audience_genders_per_age”. Элементом массива является объект с параметрами: "ageRangeName" - audience_followers.data.audience_genders_per_age[].code; "share" - определяется как сумма “maleShare” и “femaleShare; "maleShare" - audience_followers.data.audience_genders_per_age[].male; "femaleShare" - audience_followers.data.audience_genders_per_age[].female. Массив “Аудиторий аккаунта по возрастной группе”.
profileUpdated report_info.profile_updated “Дата обновления в источнике данных” аккаунта инфлюэнсера.
isVerified user_profile.is_verified “Является ли верифицированным в источнике данных” аккаунта инфлюэнсера.
accountType Определяется согласно значению параметра “user_profile.account_type”: 1 - Regular; 2 - Business; 3 - Creator. “Тип аккаунта в источнике данных” аккаунта инфлюэнсера.
ageGroup user_profile.age_group “Возрастная группа” аккаунта инфлюэнсера.
avgReelsPlays user_profile.avg_reels_plays “Среднее количество просмотров reels” аккаунта инфлюэнсера.
avgShares user_profile.avg_shares “Среднее количество публикаций, которыми поделились” аккаунта инфлюэнсера.
email user_profile.contacts[ ].formatted_value объекта для которого значение параметра “user_profile.contacts[ ].type” - “email”.
accounts Определяется как массив из объектов массива “user_profile.contacts”, за исключение объекта для которого значение параметра “user_profile.contacts[ ].type” - “email”. Элементом массива является объект с параметрами: type - user_profile.contacts[ ].type value - user_profile.contacts[ ].value formatted_value - user_profile.contacts[ ].formatted_value
statHistory user_profile.stat_history
relevantTags Определяется как массив из объектов массива “user_profile.relevant_tags”. Элементом массива является строка “user_profile.relevant_tags[ ].tag”. Массив “Тегов аккаунта”.
topPosts user_profile.top_posts
recentPosts user_profile.recent_posts
topReels user_profile.top_reels
recentReels user_profile.recent_reels
audienceLikers audience_likers
audienceFollowers audience_followers
01.1.8_1_3 Процедура принудительного обновления AD Report
  1. Выполняется инициация данной процедуры с параметрами:
  2. account_data_id;
  3. Если значение параметра "Принудительное обновление в процессе" "Данных аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан при инициации данной процедуры, — true:
  4. В ПУ должна отобразиться ошибка с текстом: "Refresh is already in progress. Please wait until the current refresh is complete." Дальнейшие этапы процедуры не выполняются.
  5. Выполняется запрос "AD Report Refresh" к сервису OnSocial с параметрами:
  6. user_id - "Имя в сервисе" аккаунта, к которому относятся "Данные аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан при инициации данной процедуры.
  7. Если запрос "AD Report Refresh" к сервису OnSocial:
  8. Не выполнен:
    1. Выполняется логирование события с Payload:
      1. title - "AD Report Refresh";
      2. error - "OnSocial service did not respond on AD Report Refresh request";
      3. data.account_data_id - Идентификатор данных аккаунта, который был указан при инициации данной процедуры.
    2. В ПУ должна отобразиться ошибка с текстом: "Failed to start refresh. Please try again later." Дальнейшие этапы процедуры не выполняются.
  9. Выполнен успешно, код ответа не 200 и значение параметра "error" - "retry_later":
    1. Выполняется логирование события с Payload:
      1. title - "AD Report Refresh";
      2. error - "OnSocial returned retry_later. Daily refresh limit exceeded";
      3. data.account_data_id - Идентификатор данных аккаунта, который был указан при инициации данной процедуры.
    2. В ПУ должна отобразиться ошибка с текстом: "Daily refresh limit exceeded. Please try again tomorrow." Дальнейшие этапы процедуры не выполняются.
  10. Выполнен успешно, код ответа 200:
    1. Выполняется изменение "Данных аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан при инициации данной процедуры:
      1. Дата принудительного обновления - согласно текущей дате;
      2. Принудительное обновление в процессе - true.
    2. В "1.2 Очередь проверки статуса задачи AD Report Refresh" добавляется сообщение "Задача AD Report Refresh" с параметрами:
      1. Идентификатор данных аккаунта - согласно значению параметра "account_data_id", который был указан при инициации данной процедуры;
      2. Идентификатор задачи - согласно значению параметра "task_id", который был получен в ответе на запрос "AD Report Refresh".
    3. В панели управление должно отобразиться сообщение об успешном выполнении данной процедуры.
    4. Процедура является успешно выполненной.

1.1 Запрос "New report" к сервису OnSocial

01.1.8_1.1_1
Настройки параметров запроса должны храниться в "01_06 Настройках сервиса".

01.1.8_1.1_2 Предустановленные параметры запроса

Параметр Значение
Идентификатор onsocial_new_report_query_parameters
Значение { "query_parameters": { "subscribe": false, "calculation_method": "average" } }

1.2 Очередь проверки статуса задачи AD Report Refresh

Очередь предназначена для отслеживания статуса задачи принудительного обновления AD Report.

Очередь состоит из:

  1. Брокера сообщений, который предназначен для хранения информации о задаче, статус которой необходимо проверить.
  2. Обработчика сообщений.

Повторная отправка сообщения очереди

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

Настройки повторной отправки сообщений

Настройка Значение Описание
Первоначальная отсрочка 60000 Первоначальная отсрочка отправки сообщения в миллисекундах.
Количество попыток 30 Количество повторных попыток отправки сообщения.
Множитель отсрочки 1

1.2_1 Параметры сообщения "Задача AD Report Refresh"

Название Ключ Значение
Идентификатор данных аккаунта account_data_id
Идентификатор задачи task_id
01.1.8_1.2_1 Процедура обработки сообщения "Задача AD Report Refresh"
  1. Наступает время обработки сообщения, брокер отправляет сообщение обработчику сообщений.
  2. Обработчик получает сообщение "Задача AD Report Refresh".
  3. Выполняется логирование события с Payload:
  4. event - "received";
  5. title - "AD Report Refresh task";
  6. data.account_data_id - Идентификатор данных аккаунта, который был указан в сообщении для которого была инициирована данная процедура;
  7. data.task_id - Идентификатор задачи, который был указан в сообщении для которого была инициирована данная процедура.
  8. Если не имеется "Данных аккаунта" идентификатор которых соответствует значению параметра "account_data_id", который был указан в сообщении для которого была инициирована данная процедура:
  9. Выполняется логирование события с Payload:
    1. event - "processed";
    2. title - "AD Report Refresh task";
    3. info - "Account data not found";
    4. data.account_data_id - Идентификатор данных аккаунта, который был указан в сообщении для которого была инициирована данная процедура.
  10. В очередь "Очередь отправки сообщений в Телеграм" добавляется сообщение "Telegram message" с параметрами:
    1. text - "AD Report Refresh task: account data not found. account_data_id: {account_data_id}".
  11. Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
  12. Выполняется запрос "Get AD Report Refresh task status" к сервису OnSocial с параметрами:
  13. task_id - согласно значению параметра "task_id", который был указан в сообщении для которого была инициирована данная процедура.
  14. Если запрос "Get AD Report Refresh task status" к сервису OnSocial:
  15. Не выполнен:
    1. Выполняется логирование события с Payload:
      1. event - "processed";
      2. title - "AD Report Refresh task";
      3. error - "OnSocial service did not respond on status request";
      4. data.account_data_id - Идентификатор данных аккаунта, который был указан в сообщении для которого была инициирована данная процедура;
      5. data.task_id - Идентификатор задачи, который был указан в сообщении для которого была инициирована данная процедура.
    2. Брокеру сообщений не возвращается информация о том что сообщение было обработано.
  16. Выполнен успешно, код ответа не 200:
    1. Выполняется логирование события с Payload:
      1. event - "processed";
      2. title - "AD Report Refresh task";
      3. error - "Status request returned non-200 response code";
      4. data.account_data_id - Идентификатор данных аккаунта, который был указан в сообщении для которого была инициирована данная процедура;
      5. data.task_id - Идентификатор задачи, который был указан в сообщении для которого была инициирована данная процедура.
    2. Брокеру сообщений не возвращается информация о том что сообщение было обработано.
  17. Выполнен успешно, код ответа 200 и в ответе на запрос значение параметра "task.is_completed":
    1. false:
      1. Брокеру сообщений не возвращается информация о том что сообщение было обработано.
    2. true:
      1. В "3.2.1 Очередь синхронизации данных аккаунта" добавляется сообщение "Аккаунт для обновления данных" с параметрами:
        1. Идентификатор данных аккаунта - согласно значению параметра "account_data_id", который был указан в сообщении для которого была инициирована данная процедура.
      2. Выполняется изменение "Данных аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан в сообщении для которого была инициирована данная процедура:
        1. Принудительное обновление в процессе - false.
      3. Брокеру сообщений возвращается информация о том что сообщение было обработано.
  18. Если сообщение "Задача AD Report Refresh" удаляется из очереди:
  19. Выполняется изменение "Данных аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан в сообщении для которого была инициирована данная процедура:
    1. Принудительное обновление в процессе - false.
  20. В очередь "Очередь отправки сообщений в Телеграм" добавляется сообщение "Telegram message" с параметрами:
    1. text - "AD Report Refresh task has not been processed. account_data_id: {account_data_id}".
  21. Брокеру сообщений возвращается информация о том что сообщение было обработано.