Экспорт в Телеграм

Здравия желаю! Просьба о помощи.

На сегодняшний день можно при публикации настроить автоматический экспорт статьи в Телеграмм. При чём, не просто заголовка и ссылки, а в виде подгруженного «Instant View», когда пользователь мобильного устройства не переходя в браузер может почитать длинную статью. И при это совсем не обязательно публиковаться в telegra.ph или в medium.com. Это немножко отдельная тема (если нужны подробности могу описать, хотя информации много), сейчас речь о работе плагина в самом движке.

Я пытаюсь использовать плагин, который был опубликован в нашем сообществе. Плагин отлично работает, кроме случаев, когда бот в телеграмме недоступен. Тоесть когда недоступно API Телеграма. Подвисает вся работа, новые материалы невозможно опубликовать. Вот именно этот момент хотелось бы как-то обойти.

Сам плагин:

<?php
$title= $resource->get('pagetitle');
$alias= $resource->get('uri');

if ($resource->get('published') == "1")  {

$fp=fopen("https://api.telegram.org/bot777777777AAAAAAAAAAA7777777/sendMessage?chat_id=-chatname&text={$title} http://site.ru/{$alias}","r"); 
while(!feof($fp)) 
{  $content .= fread($fp,1024); } 
fclose($fp); };
Системные события:

OnCommentPublish
OnCommentUnpublish
OnDocFormSave
OnDocPublished
OnDocUnPublished
OnResourceAutoPublish
Ещё один вариант — добавить прокси SOCKS

Заранее благодарю за помощь и подсказку!
Александр Н
24 сентября 2018, 20:00
modx.pro
1 043
0

Комментарии: 1

Александр Н
03 октября 2018, 23:19
1
0
Помогло интересное и простое решение
habr.com/post/424427/

Нужно поднять свой служебный домен и настроить с него проксирование на api.telegram.org/

Nginx config
server {
listen 80;
server_name proxyapitelegam.example.ru;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://api.telegram.org/;
client_max_body_size 100M;
}
}
Дальше остаётся подставить свой домен

<?php
$title= $resource->get('pagetitle');
$alias= $resource->get('uri');

if ($resource->get('published') == "1")  {

$fp=fopen("http://proxyapitelegam.example.ru/bot777777777AAAAAAAAAAA7777777/sendMessage?chat_id=-chatname&text={$title} http://site.ru/{$alias}","r"); 
while(!feof($fp)) 
{  $content .= fread($fp,1024); } 
fclose($fp); };
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1