Кросспостинг
Подключите Telegram-канал один раз, и каждая новая страница сайта сама выйдет в нем постом. Вам не придется копировать текст и картинки вручную, а подписчики канала перейдут на сайт по ссылке из поста.
OnPress публикует посты в Telegram-каналах. Пост содержит картинку страницы, заголовок, первые абзацы и ссылку на страницу.
Во всех примерах API — https://onpress.pro/api/v2, SITE — id сайта (SITE_ID), OP_TOKEN — токен op_XXXX. Полный перечень полей и ошибок — в справочнике API.
Подключить канал
Откройте канал в Telegram и добавьте бота @onpress_tg_bot администратором с правом публикации сообщений. Затем укажите канал в консоли или через API.
В консоли. Откройте «Настройки» → «Кросспостинг» и выберите сайт. В поле «Канал» укажите @имя, ссылку t.me или ID закрытого канала. Когда появится надпись «Бот может публиковать», включите «Публиковать новые страницы».
Через API. PUT /crosspost/telegram сохраняет канал, проверяет бота и включает отправку. Например, подключите канал @channel:
curl -s -X PUT "$API/site/$SITE/crosspost/telegram" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"channel": "@channel", "enabled": true}'
Если в ответе telegram.active равно true, новые страницы будут выходить в канале. Если API отказал, откройте коды ошибок в справочнике.
Выбрать разделы
По умолчанию OnPress отправляет в канал все новые страницы. Если подписчикам нужны только новости или только статьи, выберите разделы сайта.
В консоли. В блоке «Разделы» выберите раздел из списка или впишите его путь и нажмите «Добавить».
Через API. Передайте пути разделов в sections. Например, оставьте только раздел /news/:
curl -s -X PUT "$API/site/$SITE/crosspost/telegram" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"sections": ["/news/"]}'
Пустой список [] вернет в канал все новые страницы.
Проверить пост
Тестовый пост показывает, как страница выглядит в канале. Он выходит в подключенном канале, и подписчики его увидят, поэтому для первой пробы подойдет отдельный закрытый канал.
В консоли. Нажмите «Тестовый пост». OnPress отправит последнюю опубликованную страницу и покажет ссылку «Открыть пост».
Через API. POST /crosspost/telegram/test отправляет страницу с id из поля page, а без него — последнюю опубликованную. Например, отправьте страницу 7148:
curl -s -X POST "$API/site/$SITE/crosspost/telegram/test" \
-H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
-d '{"page": 7148}'
В ответе message_url ведет на готовый пост.
Какие страницы выходят в канале
Пост выходит один раз, примерно через минуту после первой публикации страницы. Правка опубликованной страницы новый пост не создает. OnPress не отправляет страницы, опубликованные до включения кросспостинга, главную и служебные страницы, страницы под паролем и закрытые от индексации, а также страницы с датой старше трех дней. Полные правила и лимиты описывает справочник API.
Отправить пропущенную страницу
Журнал показывает, какие страницы ушли в канал, а какие OnPress пропустил или не смог отправить. Такую страницу вы можете отправить вручную.
В консоли. Откройте блок «Журнал» и нажмите «Отправить» в строке страницы.
Через API. GET /crosspost/log отдает журнал, а POST /crosspost/log/{id}/send отправляет страницу из записи журнала. Например, отправьте запись 141:
curl -s -X POST "$API/site/$SITE/crosspost/log/141/send" -H "Authorization: Bearer $OP_TOKEN"
Отключить канал
Отключите канал, если посты больше не нужны. Журнал отправок останется на месте. Чтобы только приостановить посты и сохранить канал, выключите «Публиковать новые страницы» или передайте "enabled": false.
В консоли. Нажмите «Отключить».
Через API. DELETE /crosspost/telegram снимает канал и останавливает отправку. Например, отключите канал сайта:
curl -s -X DELETE "$API/site/$SITE/crosspost/telegram" -H "Authorization: Bearer $OP_TOKEN"
Вопросы и ответы
Почему страница не вышла в канале?
Откройте журнал. Он показывает причину у пропущенных и неотправленных страниц. Страницы, опубликованные до включения кросспостинга или вне выбранных разделов, в журнал не попадают.
Что будет, если убрать бота из канала?
Страницы продолжат выходить на сайте, а посты остановятся. Верните боту права администратора и нажмите «Проверить» в консоли.
Можно ли подключить закрытый канал?
Да. Укажите числовой ID канала, он начинается с -100. Ссылка-приглашение вида t.me/+… не называет канал, поэтому API ее не примет.