enВойти в Senler

Импорт лидов из Senler.ru через API

API загружает подписчиков из связанного канала Senler.ru в лиды Senler.io. Список внешних ID передавать не нужно. Для запуска из кабинета используйте «Загрузить лидов» в настройках канала; для собственной интеграции выполните запросы ниже.

Подготовьте канал и авторизацию

  1. Подключите канал VK, Telegram или MAX в Senler.io.
  2. Привяжите соответствующий канал Senler.ru. Подключение Senler.ru должно быть действующим; токен бота платформы его не заменяет.
  3. Получите пользовательский OAuth-токен с subject=user. Для запуска нужен доступ can_manage_leads к проекту канала, для чтения результата — can_view_processes, для отмены — can_manage_processes. Эти права должны быть и у пользователя.

Проектный API-ключ и проектный OAuth-токен для запуска этого импорта не подходят: операция выполняется от имени пользователя. OAuth-токен храните на сервере интеграции.

Запустите импорт

В channel_id передайте UUID канала Senler.io, а не числовой ID канала Senler.ru:

curl --fail-with-body \
  "https://api.senler.io/api/processes/import-senler-leads" \
  --header "Authorization: Bearer $USER_ACCESS_TOKEN" \
  --header "Content-Type: application/json" \
  --data "{\"channel_id\":\"$CHANNEL_ID\"}"

Ответ 201 Created содержит новый или уже активный фоновый процесс типа leads_import_senler. Пока загрузка канала выполняется, повторные и одновременные запросы возвращают тот же id. Сохраните его id. Создание процесса не означает завершения загрузки.

Импорт добавляет новые профили с внешним ID, доступными именем, фамилией, username, аватаром, статусом подписки и признаком чёрного списка из Senler.ru. Если статус подписки в исходной записи неизвестен, импорт не считает такого лида подписанным.

Существующие лиды в том же канале пропускаются: их профиль, подписка и чёрный список не перезаписываются. История переписки, настройки ботов, группы подписчиков и переменные Senler.ru не переносятся. Импорт не отправляет сообщения и не запускает автоматизации.

Проверьте результат

Чтобы восстановить процесс после перезагрузки или потерянного ответа, вызовите GET /api/processes/import-senler-leads/CHANNEL_ID. Ответ содержит process с последней сохранённой загрузкой этого канала или null, если её нет. Нужно право can_view_processes.

Запрашивайте GET /api/processes/PROCESS_ID с тем же заголовком авторизации:

  • pending, preparing, processing — процесс ещё не завершён;
  • completed — импорт завершён; проверьте счётчики в result;
  • failed — импорт остановился с ошибкой;
  • cancelled — импорт отменён.

Пока общее количество записей не определено, progress может отсутствовать. Не считайте отсутствие процента признаком остановки.

Результат также доступен через GET /api/processes/PROCESS_ID/result. Поля result означают:

  • imported — добавленные лиды;
  • skipped — уже существующие лиды;
  • updated — всегда 0: этот импорт не обновляет существующие профили;
  • failed — записи, которые не удалось обработать.

Для ошибки используйте безопасный error_code, а не технический текст:

  • senler_import_connection_required — обновите подключение Senler.ru и запустите импорт снова;
  • senler_import_connection_changed — канал или привязка изменились; начните новую загрузку из нужного канала;
  • senler_import_source_unavailable при активном процессе — запрос повторится автоматически; при failed попытки исчерпаны, повторите импорт позже;
  • senler_import_source_rejected — проверьте подключение; если отказ повторяется, обратитесь в поддержку;
  • senler_import_invalid_response — повторите импорт позже; если ошибка повторяется, обратитесь в поддержку.

Даже при completed проверяйте failed: завершение обхода базы не означает, что каждая запись добавлена.

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

DELETE /api/processes/PROCESS_ID отменяет процесс в состоянии pending, preparing или processing. Уже добавленные лиды остаются. Для завершённого процесса тот же запрос удаляет запись из журнала, а не лидов.

Повторный POST возвращает активный процесс канала. После завершения, отмены или ошибки он создаёт новую загрузку. Для проверки хода используйте сохранённый ID или метод последней загрузки канала.

Повторный импорт пропустит существующих лидов и сможет добавить новые. Он не синхронизирует изменившиеся профили. Не меняйте привязку канала Senler.ru во время загрузки: продолжить тот же процесс с другой привязкой нельзя.