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¶
- Выполняется инициация данной процедуры с параметрами:
- account;
- Выполняется:
- Запрос "New report" к сервису OnSocial c параметрами:
- url - согласно значению параметра “account”, который был указан при инициации данной процедуры;
- dry_run - true.
- Если запрос "New report" к сервису OnSocial:
- Не выполнен:
- Выполняется логирование события с Payload:
- title - “Get account data from OnSocial”;
- error - "OnSocial service did not respond on request with dry_run - true";
- data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
- Процедура является не выполненной. Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен успешно, код ответа не 200 и:
- Значение параметра “error” не “retry_later” выполняется:
- Логирование события с Payload:
- title - “Get account data from OnSocial”;
- error - "Request returned error with non-200 response code";
- data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.;
- Изменение параметров “Данных аккаунта”:
- Дата обновления - согласно текущей дате;
- Исходные данные - согласно телу ответа который был получен в результатах запроса
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “OnSocial: error receiving data for {account, который был указан при инициации запроса}. {Код ответа на запрос} - {значение параметра “message” ответа на запрос}”.
- Процедура является успешно выполненной. Дальнейшие этапы процедуры не выполняются.
- Значение параметра “error” - “retry_later” выполняется:
- Логирование события с Payload:
- title - “Get account data from OnSocial”;
- error - "OnSocial returned retry_later. Audience update is still in progress";
- data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
- Изменение параметров “Данных аккаунта”:
- Дата обновления - согласно текущей дате.
- Процедура является не выполненной. Дальнейшие этапы процедуры не выполняются.
- Значение параметра “error” не “retry_later” выполняется:
- Не выполнен:
- Выполняется:
- Запрос "New report" к сервису OnSocial c параметрами:
- url - согласно значению параметра “account”, который был указан при инициации данной процедуры;
- Согласно настройке “onsocial_new_report_query_parameters”.
- Если запрос "New report" к сервису OnSocial:
- Не выполнен:
- Выполняется логирование события с Payload:
- title - “Get account data from OnSocial”;
- error - "OnSocial service did not respond on main report request";
- data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
- Процедура является не выполненной. Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен успешно, код ответа не 200 и:
- Значение параметра “error” не “retry_later” выполняется:
- Логирование события с Payload:
- title - “Get account data from OnSocial”;
- error - "Main request returned error with non-200 response code";
- data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
- Изменение параметров “Данных аккаунта”:
- Дата обновления - согласно текущей дате;
- Исходные данные - согласно телу ответа который был получен в результатах запроса
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “OnSocial: error receiving data for {account, который был указан при инициации запроса}. {Код ответа на запрос} - {значение параметра “error_message” ответа на запрос}”.
- Процедура является успешно выполненной. Дальнейшие этапы процедуры не выполняются.
- Значение параметра “error” - “retry_later” выполняется:
- Логирование события с Payload:
- title - “Get account data from OnSocial”;
- error - "OnSocial returned retry_later. Audience update is still pending";
- data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
- Изменение параметров “Данных аккаунта”:
- Дата обновления - согласно текущей дате.
- Процедура является не выполненной. Дальнейшие этапы процедуры не выполняются.
- Значение параметра “error” не “retry_later” выполняется:
- Выполнен успешно, код ответа 200 и в ответе на запрос значение параметра “audience_followers.success”:
- Не “true”, выполняется:
- Логирование события с Payload:
- title - “Get account data from OnSocial”;
- error - "audience_followers.success is not true";
- data.account - “Имя в сервисе” аккаунта, для которого инициирована данная процедура.
- Изменение параметров “Данных аккаунта”:
- Дата обновления - согласно текущей дате;
- Исходные данные - согласно телу ответа который был получен в результатах запроса.
- В очередь “Очередь отправки сообщений в Телеграм” добавляется сообщение “Telegram message” с параметрами:
- text - “OnSocial: error receiving data for {account, который был указан при инициации запроса}. No information about the audience”
- Процедура является успешно выполненной. Дальнейшие этапы процедуры не выполняются.
-
“True”, выполняется изменение параметров “Данных аккаунта”:
- Дата получения - согласно текущей дате;
- Исходные данные - согласно телу ответа, которое было получено в результатах запроса "New report".
процедура является успешно выполненной.
- Не “true”, выполняется:
- Не выполнен:
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 | “Среднее количество публикаций, которыми поделились” аккаунта инфлюэнсера. |
| 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¶
- Выполняется инициация данной процедуры с параметрами:
- account_data_id;
- Если значение параметра "Принудительное обновление в процессе" "Данных аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан при инициации данной процедуры, — true:
- В ПУ должна отобразиться ошибка с текстом: "Refresh is already in progress. Please wait until the current refresh is complete." Дальнейшие этапы процедуры не выполняются.
- Выполняется запрос "AD Report Refresh" к сервису OnSocial с параметрами:
- user_id - "Имя в сервисе" аккаунта, к которому относятся "Данные аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан при инициации данной процедуры.
- Если запрос "AD Report Refresh" к сервису OnSocial:
- Не выполнен:
- Выполняется логирование события с Payload:
- title - "AD Report Refresh";
- error - "OnSocial service did not respond on AD Report Refresh request";
- data.account_data_id - Идентификатор данных аккаунта, который был указан при инициации данной процедуры.
- В ПУ должна отобразиться ошибка с текстом: "Failed to start refresh. Please try again later." Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен успешно, код ответа не 200 и значение параметра "error" - "retry_later":
- Выполняется логирование события с Payload:
- title - "AD Report Refresh";
- error - "OnSocial returned retry_later. Daily refresh limit exceeded";
- data.account_data_id - Идентификатор данных аккаунта, который был указан при инициации данной процедуры.
- В ПУ должна отобразиться ошибка с текстом: "Daily refresh limit exceeded. Please try again tomorrow." Дальнейшие этапы процедуры не выполняются.
- Выполняется логирование события с Payload:
- Выполнен успешно, код ответа 200:
- Выполняется изменение "Данных аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан при инициации данной процедуры:
- Дата принудительного обновления - согласно текущей дате;
- Принудительное обновление в процессе - true.
- В "1.2 Очередь проверки статуса задачи AD Report Refresh" добавляется сообщение "Задача AD Report Refresh" с параметрами:
- Идентификатор данных аккаунта - согласно значению параметра "account_data_id", который был указан при инициации данной процедуры;
- Идентификатор задачи - согласно значению параметра "task_id", который был получен в ответе на запрос "AD Report Refresh".
- В панели управление должно отобразиться сообщение об успешном выполнении данной процедуры.
- Процедура является успешно выполненной.
- Выполняется изменение "Данных аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан при инициации данной процедуры:
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.
Очередь состоит из:
- Брокера сообщений, который предназначен для хранения информации о задаче, статус которой необходимо проверить.
- Обработчика сообщений.
Повторная отправка сообщения очереди
Если сообщение не было обработано Обработчиком сообщений, должна выполняться повторная отправка сообщения Обработчику сообщений согласно настройкам повторной отправки сообщений.
Настройки повторной отправки сообщений
| Настройка | Значение | Описание |
|---|---|---|
| Первоначальная отсрочка | 60000 | Первоначальная отсрочка отправки сообщения в миллисекундах. |
| Количество попыток | 30 | Количество повторных попыток отправки сообщения. |
| Множитель отсрочки | 1 |
1.2_1 Параметры сообщения "Задача AD Report Refresh"
| Название | Ключ | Значение |
|---|---|---|
| Идентификатор данных аккаунта | account_data_id | |
| Идентификатор задачи | task_id |
01.1.8_1.2_1 Процедура обработки сообщения "Задача AD Report Refresh"¶
- Наступает время обработки сообщения, брокер отправляет сообщение обработчику сообщений.
- Обработчик получает сообщение "Задача AD Report Refresh".
- Выполняется логирование события с Payload:
- event - "received";
- title - "AD Report Refresh task";
- data.account_data_id - Идентификатор данных аккаунта, который был указан в сообщении для которого была инициирована данная процедура;
- data.task_id - Идентификатор задачи, который был указан в сообщении для которого была инициирована данная процедура.
- Если не имеется "Данных аккаунта" идентификатор которых соответствует значению параметра "account_data_id", который был указан в сообщении для которого была инициирована данная процедура:
- Выполняется логирование события с Payload:
- event - "processed";
- title - "AD Report Refresh task";
- info - "Account data not found";
- data.account_data_id - Идентификатор данных аккаунта, который был указан в сообщении для которого была инициирована данная процедура.
- В очередь "Очередь отправки сообщений в Телеграм" добавляется сообщение "Telegram message" с параметрами:
- text - "AD Report Refresh task: account data not found. account_data_id: {account_data_id}".
- Брокеру сообщений возвращается информация о том что сообщение было обработано. Дальнейшие этапы данной процедуры не выполняются.
- Выполняется запрос "Get AD Report Refresh task status" к сервису OnSocial с параметрами:
- task_id - согласно значению параметра "task_id", который был указан в сообщении для которого была инициирована данная процедура.
- Если запрос "Get AD Report Refresh task status" к сервису OnSocial:
- Не выполнен:
- Выполняется логирование события с Payload:
- event - "processed";
- title - "AD Report Refresh task";
- error - "OnSocial service did not respond on status request";
- data.account_data_id - Идентификатор данных аккаунта, который был указан в сообщении для которого была инициирована данная процедура;
- data.task_id - Идентификатор задачи, который был указан в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений не возвращается информация о том что сообщение было обработано.
- Выполняется логирование события с Payload:
- Выполнен успешно, код ответа не 200:
- Выполняется логирование события с Payload:
- event - "processed";
- title - "AD Report Refresh task";
- error - "Status request returned non-200 response code";
- data.account_data_id - Идентификатор данных аккаунта, который был указан в сообщении для которого была инициирована данная процедура;
- data.task_id - Идентификатор задачи, который был указан в сообщении для которого была инициирована данная процедура.
- Брокеру сообщений не возвращается информация о том что сообщение было обработано.
- Выполняется логирование события с Payload:
- Выполнен успешно, код ответа 200 и в ответе на запрос значение параметра "task.is_completed":
- false:
- Брокеру сообщений не возвращается информация о том что сообщение было обработано.
- true:
- В "3.2.1 Очередь синхронизации данных аккаунта" добавляется сообщение "Аккаунт для обновления данных" с параметрами:
- Идентификатор данных аккаунта - согласно значению параметра "account_data_id", который был указан в сообщении для которого была инициирована данная процедура.
- Выполняется изменение "Данных аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан в сообщении для которого была инициирована данная процедура:
- Принудительное обновление в процессе - false.
- Брокеру сообщений возвращается информация о том что сообщение было обработано.
- В "3.2.1 Очередь синхронизации данных аккаунта" добавляется сообщение "Аккаунт для обновления данных" с параметрами:
- false:
- Если сообщение "Задача AD Report Refresh" удаляется из очереди:
- Выполняется изменение "Данных аккаунта", идентификатор которых соответствует значению параметра "account_data_id", который был указан в сообщении для которого была инициирована данная процедура:
- Принудительное обновление в процессе - false.
- В очередь "Очередь отправки сообщений в Телеграм" добавляется сообщение "Telegram message" с параметрами:
- text - "AD Report Refresh task has not been processed. account_data_id: {account_data_id}".
- Брокеру сообщений возвращается информация о том что сообщение было обработано.