можно подробнее описать, что хотелось бы, так сказать на примереSas писал(а):А можно ли сделать отправку поюзерно?
В системе же все равно есть привязка айди телеграмма к айди пользователя мжд. С гетюзернейм уже легче, но все равно надо будет каждому писать свой велосипед.
Удобно же когда система отвечает на сообщение только тому кто спросил что то, а не всем в общий чат
[Модуль] Telegram (telegram)
Модератор: immortal
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 869 раз
- Контактная информация:
Re: Модуль "Telegram"
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
-
- Сообщения: 119
- Зарегистрирован: Вт ноя 08, 2016 4:27 pm
- Благодарил (а): 11 раз
- Поблагодарили: 10 раз
Re: Модуль "Telegram"
Была остановка циклов и модуль перестал реагировать на сообщения, перестал отправлять и принимать. Как можно решить?
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 869 раз
- Контактная информация:
Re: Модуль
Перезапустить циклAkorolev писал(а):Была остановка циклов и модуль перестал реагировать на сообщения, перестал отправлять и принимать. Как можно решить?
Чтобы не зависеть от работы циклов надо настроить работу модуля через webhook
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Модуль "Telegram"
Сам спросил, сам отвечаю. ))skysilver писал(а):Webhook классная тема, но выставлять сервер наружу только ради этого идея, так скажем, не очень.
Есть ли какой-то вариант, например, перенести https://ваш_сервер/webhook_telegram.php на другой порт, чтобы на роутере разрешить проброс порта исключительно для бота?! Основная веб-морда MjD при этом останется доступной только в локальной сети. Такой принцип реализован в IOBroker.
Решил для себя эту задачу следующим образом.
1. Поднял виртуальный сервер Apache на https с самоподписанным сертифкатом.
Конфиг такой:
СпойлерПоказать
Код: Выделить всё
<IfModule mod_ssl.c>
<VirtualHost ЛОКАЛЬНЫЙ_ИП_СЕРВЕРА:443>
ServerAdmin почта@админа.ru
ServerName ИМЯ.no-ip.org
DocumentRoot /var/www/tgwebhook
<Directory /var/www/tgwebhook>
Options FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
deny from all
allow from 149.154.167.192/26
allow from ИП_ЛОКАЛЬНОЙ_СЕТИ/24
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/error.tgwebhook.log
CustomLog ${APACHE_LOG_DIR}/access.tgwebhook.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/mysert.crt
SSLCertificateKeyFile /etc/apache2/ssl/mysert.key
</VirtualHost>
</IfModule>
3. В корневой директории виртуального сервера (/var/www/tgwebhook) создал папку с именем токена моего бота. В качестве имени папки можно использовать любую другую последовательность символов, известную только вам. Это для усложнения поиска пути к скрипту. Такой вариант рекомендуется самим телеграмом наряду с ограничением доступа с определенных IP.
4. В директорию поместил файл webhook_telegram.php с таким содержанием:
СпойлерПоказать
Код: Выделить всё
<?php
$content = file_get_contents("php://input");
$update = json_decode($content, TRUE);
$data_string = json_encode($update);
$ch = curl_init('http://127.0.0.1:80/webhook_telegram.php');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
curl_exec($ch);
?>
Не забываем выставить права и владельца www-data на директории и файл.
5. На роутере настроил проброс порта 8443 на 443. В МЭ роутера разрешил доступ только с серверов телеграма, чтобы у всяких ботнетов не было желания сканить мой веб-сервер (хоть он и пустой по сути).
6. Вручную зарегистрировал вебхук со ссылкой вида https://ИМЯ.no-ip.org:8443/ТОКЕН_БОТА/webhook_telegram.php. Через приложение не получится, т.к. оно не поддерживает указание своего каталога для вебхук-скрипта.
7. Остановил и убрал из загрузки цикл телеграмма в MJD.
8. Профит!
В итоге обошлось без Nginx или mod_proxy Apache в качестве прокси, и без выставления наружу MJD.
Возможно, увеличилось время отклика из-за того, что сервер телеграмма дергает не сразу вебхук-скрипт приложения, а идет через "посредника" на другом виртуальном сервере. Но визуально все работает довольно быстро.
Пожелание к Eraser - добавить возможность указания своего каталога для размещения вебхук-скрипта.
P.S.: да, временами мой внутренний параноик на профессиональной почве на дает мне спать ночами.
- Рейтинг: 1.16%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 869 раз
- Контактная информация:
Re: Модуль "Telegram"
Попробовал зарегистрировать с указанием своего каталогаskysilver писал(а): 6. Вручную зарегистрировал вебхук со ссылкой вида https://ИМЯ.no-ip.org:8443/ТОКЕН_БОТА/webhook_telegram.php. Через приложение не получится, т.к. оно не поддерживает указание своего каталога для вебхук-скрипта.
Пожелание к Eraser - добавить возможность указания своего каталога для размещения вебхук-скрипта.
Указал в поле "Webhook URL" https://ИМЯ.no-ip.org:8443/ТОКЕН_БОТА
Зарегистрировалось на адрес https://ИМЯ.no-ip.org:8443/ТОКЕН_БОТА/webhook_telegram.php
Или как-то надо по другому?
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1753 раза
- Контактная информация:
Re: Модуль "Telegram"
Не-не, все так и надо. Насчёт пожелания беру слова обратно. ))Eraser писал(а):Или как-то надо по другому?
Просто в справке приложения написано "3. В поле Webhook URL задается имя вашего сервера или ip", т.е. строго сервер, а не путь к скрипту. Вот это и смутило. Если работает, то все ок. )
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 869 раз
- Контактная информация:
Re: Модуль "Telegram"
Надо подумать. А для каких целей надо несколько ботов? Мне ничего в голову не приходитErmolenkoM писал(а):Уважаемый Eraser, возможно ли доработать модуль,что бы иметь несколько ботов?
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
-
- Сообщения: 560
- Зарегистрирован: Ср сен 04, 2013 10:31 am
- Откуда: Самара
- Благодарил (а): 99 раз
- Поблагодарили: 140 раз
- Контактная информация:
Re: Модуль "Telegram"
Самое простое - один - полный лог с отключенным в телеге звуком, второй АЛАРМ.Eraser писал(а):Надо подумать. А для каких целей надо несколько ботов? Мне ничего в голову не приходитErmolenkoM писал(а):Уважаемый Eraser, возможно ли доработать модуль,что бы иметь несколько ботов?
Другой вариант - можно делать полезное для друзей, например - автоответчик. Но без доступа к дому.
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 869 раз
- Контактная информация:
Re: Модуль "Telegram"
Первое лучше реализовать на основе каналов, создать несколько каналов и настроить им разные уровни истории, на канале с полным логом отключить уведомленияErmolenkoM писал(а): Самое простое - один - полный лог с отключенным в телеге звуком, второй АЛАРМ.
Другой вариант - можно делать полезное для друзей, например - автоответчик. Но без доступа к дому.
Да и второе можно реализовать с текущим функционалом, но уже сложнее, нужно создать обработчик события на получение сообщения, и в нем выполнять всю обработку по выполнению определенных действий
Как вариант можно еще добавить один пункт настройки для пользователя - выполнение сценариев, команды останутся отдельно.
Те при получении сообщения будет выполнятся поиск команды в соответствии с разрешениями данного пользователя, и если не найдена, передавать дальше на обработку в сценарии, при выключенной опции не передавать.
- Рейтинг: 1.16%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!