[Модуль] Telegram (telegram)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 868 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Пт дек 29, 2017 1:48 pm

oasis писал(а):Добрый день, проблема: не приходят сообщения с телефона на мажордомо, вообще никакие. Хотя события от мажордомо все приходят. Пользователь telegram в списке присутсвует, права администратора. В чем может быть загвоздка?
Что в логе с включенным debug?

Отправлено с моего MX_Base через Tapatalk
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
oasis
Сообщения: 4
Зарегистрирован: Вс окт 26, 2014 10:42 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль

Сообщение oasis » Пт дек 29, 2017 6:07 pm

Eraser писал(а):
oasis писал(а):Добрый день, проблема: не приходят сообщения с телефона на мажордомо, вообще никакие. Хотя события от мажордомо все приходят. Пользователь telegram в списке присутсвует, права администратора. В чем может быть загвоздка?
Что в логе с включенным debug?
Совершено ничего нет, когда отправляю сообщение с телефона. Если отправляешь с мажордомо на телефон то все ок:
СпойлерПоказать
[text] => тест
[date] => 1514559844
)
[type] => private
[username] => oasis_bob
[last_name] => Mik
[first_name] => Bob
[id] => 103343974
(
[chat] => Array
)
[username] => Oasishomebot
[first_name] => Oasis.home
[is_bot] => 1
[id] => 525825753
(
[from] => Array
[message_id] => 69
(
[result] => Array
[ok] => 1
(
18:04:02 Array
18:04:02 {"keyboard":[],"one_time_keyboard":false,"resize_keyboard":true,"selective":true}
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 868 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Пт дек 29, 2017 7:45 pm

oasis писал(а):
Eraser писал(а):
oasis писал(а):Добрый день, проблема: не приходят сообщения с телефона на мажордомо, вообще никакие. Хотя события от мажордомо все приходят. Пользователь telegram в списке присутсвует, права администратора. В чем может быть загвоздка?
Что в логе с включенным debug?
Совершено ничего нет, когда отправляю сообщение с телефона. Если отправляешь с мажордомо на телефон то все ок:
СпойлерПоказать
[text] => тест
[date] => 1514559844
)
[type] => private
[username] => oasis_bob
[last_name] => Mik
[first_name] => Bob
[id] => 103343974
(
[chat] => Array
)
[username] => Oasishomebot
[first_name] => Oasis.home
[is_bot] => 1
[id] => 525825753
(
[from] => Array
[message_id] => 69
(
[result] => Array
[ok] => 1
(
18:04:02 Array
18:04:02 {"keyboard":[],"one_time_keyboard":false,"resize_keyboard":true,"selective":true}
Либо цикл не работает, либо включен webhook и не настроен доступ извне

Отправлено с моего MX_Base через Tapatalk
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
oasis
Сообщения: 4
Зарегистрирован: Вс окт 26, 2014 10:42 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль

Сообщение oasis » Пт дек 29, 2017 8:59 pm

Eraser писал(а):
oasis писал(а):
Eraser писал(а):Добрый день, проблема: не приходят сообщения с телефона на мажордомо, вообще никакие. Хотя события от мажордомо все приходят. Пользователь telegram в списке присутсвует, права администратора. В чем может быть загвоздка?
Что в логе с включенным debug?
Совершено ничего нет, когда отправляю сообщение с телефона. Если отправляешь с мажордомо на телефон то все ок:
СпойлерПоказать
[text] => тест
[date] => 1514559844
)
[type] => private
[username] => oasis_bob
[last_name] => Mik
[first_name] => Bob
[id] => 103343974
(
[chat] => Array
)
[username] => Oasishomebot
[first_name] => Oasis.home
[is_bot] => 1
[id] => 525825753
(
[from] => Array
[message_id] => 69
(
[result] => Array
[ok] => 1
(
18:04:02 Array
18:04:02 {"keyboard":[],"one_time_keyboard":false,"resize_keyboard":true,"selective":true}
Либо цикл не работает, либо включен webhook и не настроен доступ извне
webhook галка не стоит, при первоначальной настройке, прочитав мануал, сразу понял что пока буду без webhook. А как проверить работает ли цикл?
У меня еще в истории событий выходит сообщение
СпойлерПоказать
Warning: Cannot modify header information - headers already sent by (output started at C:\_majordomo\htdocs\languages\telegram_ru.php:1) in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 147

Warning: Cannot modify header information - headers already sent by (output started at C:\_majordomo\htdocs\languages\telegram_ru.php:1) in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 148
Руслан
Сообщения: 193
Зарегистрирован: Чт дек 17, 2015 10:08 am
Откуда: Уфа
Благодарил (а): 36 раз
Поблагодарили: 14 раз

Re: Модуль "Telegram"

Сообщение Руслан » Пт дек 29, 2017 9:19 pm

oasis писал(а): А как проверить работает ли цикл?
X-Ray----Services
если цикл синим, значит не работает
oasis
Сообщения: 4
Зарегистрирован: Вс окт 26, 2014 10:42 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Модуль "Telegram"

Сообщение oasis » Пт дек 29, 2017 9:37 pm

Руслан писал(а):
oasis писал(а): А как проверить работает ли цикл?
X-Ray----Services
если цикл синим, значит не работает
Цикл останавливается с ошибкой:
СпойлерПоказать
21:31:33 Running cycle_telegram.php
21:31:33 Init module

Fatal error: Cannot redeclare class Bot in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 3
21:34:12 Running cycle_telegram.php
21:34:12 Init module

Fatal error: Cannot redeclare class Bot in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 3
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 868 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Пт дек 29, 2017 10:01 pm

oasis писал(а):
Руслан писал(а):
oasis писал(а): А как проверить работает ли цикл?
X-Ray----Services
если цикл синим, значит не работает
Цикл останавливается с ошибкой:
СпойлерПоказать
21:31:33 Running cycle_telegram.php
21:31:33 Init module

Fatal error: Cannot redeclare class Bot in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 3
21:34:12 Running cycle_telegram.php
21:34:12 Init module

Fatal error: Cannot redeclare class Bot in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 3
скорее всего в команде или в обработчике ошибка
возможно вместо require_once используется require
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
serge_wddm
Сообщения: 9
Зарегистрирован: Вс июн 26, 2016 9:58 am
Благодарил (а): 8 раз
Поблагодарили: 2 раза

Re: Модуль "Telegram"

Сообщение serge_wddm » Чт янв 11, 2018 9:29 am

Подскажите, пожалуйста, про поддержку HTML разметки в интерактивной клавиатуре.

Код: Выделить всё

<b>bold</b>, <strong>bold</strong>
<i>italic</i>, <em>italic</em>
<a href="URL">inline URL</a>
<code>inline fixed-width code</code>
<pre>pre-formatted fixed-width code block</pre>
 
У меня на сегодняшний день HTML разметка работает только при ответе на комманду:

Код: Выделить всё

...
return "<strong>Климат в квартире: </strong>" . PHP_EOL . "Температура <b>" . $temp . "</b> °С";
 
В случае интерактивной клавиатуры HTML тэги не поддерживаются и выводятся вместе с сообщением:
1) Команда:Показать

Код: Выделить всё

 $on = hex2bin('F09F94B4');
 $off = hex2bin('E2AD95');

 $light = $off;
 $fan = $off;
 if (gg("BathroomController.light_status") == 1)
    $light = $on;
 if (gg("BathroomController.fan_status") == 1)
    $fan = $on;
 $option = array( array($this->buildInlineKeyboardButton($text=$light." Свет","","Callback_BathroomLight",""),
                       $this->buildInlineKeyboardButton($text=$fan." Вентилятор","","Callback_BathroomFan","") ) );
 
 $keyb = $this->buildInlineKeyBoard($option);

 // загружаем данные по температуре и влажности
 $temperature = gg("BathroomController.temperature");
 $hum = gg("BathroomController.humidity");

 $strMsg = "<strong>Ванная комната:</strong>" . PHP_EOL . "Температура " . $temperature . " °C" . PHP_EOL . "Влажность " . $hum . " %";

 $content = array('chat_id' => $chat_id, 'text' => $strMsg, 'reply_markup' => $keyb);
 $this->sendContent($content);
 
2) Callback событие:Показать

Код: Выделить всё

$sw = false;
$light_status = 0;
$fan_status = 0;

// нажали кнопку СВЕТ
if ($callback == 'Callback_BathroomLight')
{
 $sw = true;
 cm("BathroomController.LightSwitch");
}

// нажали кнопку ВЕНТИЛЯТОР
if ($callback == 'Callback_BathroomFan')
{
 $sw = true;
 cm("BathroomController.VentilateBathroom");
}

// получаем эмоджи для индикаторов вкл/выкл
if ($sw == true)
{
 sleep(3);

 $on = hex2bin('F09F94B4');
 $off = hex2bin('E2AD95');

 // загружаем данные по температуре и влажности
$temperature = gg("BathroomController.temperature");
$hum = gg("BathroomController.humidity");
 
$light = $off;
$fan = $off;
if (gg("BathroomController.light_status") == 1)
    $light = $on;
if (gg("BathroomController.fan_status") == 1)
   $fan = $on;
 
// $this->deleteMessage($chat_id, $message_id);
 
// формируем кнопки
$option = array( array($this->buildInlineKeyboardButton($text=$light." Свет","","Callback_BathroomLight",""),
                       $this->buildInlineKeyboardButton($text=$fan." Вентилятор","","Callback_BathroomFan","") ) );
$keyb = $this->buildInlineKeyBoard($option);

$strMsg = "<strong>Ванная комната:</strong>" . PHP_EOL . "Температура " . $temperature . " °C" . PHP_EOL . "Влажность " . $hum . " %";
$this->editMessage($chat_id,$message_id,$strMsg,$keyb);

}
 
В Telegramm выводится следующее:
СкринПоказать
telegram.messenger.png
telegram.messenger.png (61.94 КБ) 6366 просмотров
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 868 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Чт янв 11, 2018 9:38 am

serge_wddm писал(а):Подскажите, пожалуйста, про поддержку HTML разметки в интерактивной клавиатуре.

Код: Выделить всё

<b>bold</b>, <strong>bold</strong>
<i>italic</i>, <em>italic</em>
<a href="URL">inline URL</a>
<code>inline fixed-width code</code>
<pre>pre-formatted fixed-width code block</pre>
 
У меня на сегодняшний день HTML разметка работает только при ответе на комманду:

Код: Выделить всё

...
return "<strong>Климат в квартире: </strong>" . PHP_EOL . "Температура <b>" . $temp . "</b> °С";
 
В случае интерактивной клавиатуры HTML тэги не поддерживаются и выводятся вместе с сообщением:
1) Команда:Показать

Код: Выделить всё

 $on = hex2bin('F09F94B4');
 $off = hex2bin('E2AD95');

 $light = $off;
 $fan = $off;
 if (gg("BathroomController.light_status") == 1)
    $light = $on;
 if (gg("BathroomController.fan_status") == 1)
    $fan = $on;
 $option = array( array($this->buildInlineKeyboardButton($text=$light." Свет","","Callback_BathroomLight",""),
                       $this->buildInlineKeyboardButton($text=$fan." Вентилятор","","Callback_BathroomFan","") ) );
 
 $keyb = $this->buildInlineKeyBoard($option);

 // загружаем данные по температуре и влажности
 $temperature = gg("BathroomController.temperature");
 $hum = gg("BathroomController.humidity");

 $strMsg = "<strong>Ванная комната:</strong>" . PHP_EOL . "Температура " . $temperature . " °C" . PHP_EOL . "Влажность " . $hum . " %";

 $content = array('chat_id' => $chat_id, 'text' => $strMsg, 'reply_markup' => $keyb);
 $this->sendContent($content);
 
2) Callback событие:Показать

Код: Выделить всё

$sw = false;
$light_status = 0;
$fan_status = 0;

// нажали кнопку СВЕТ
if ($callback == 'Callback_BathroomLight')
{
 $sw = true;
 cm("BathroomController.LightSwitch");
}

// нажали кнопку ВЕНТИЛЯТОР
if ($callback == 'Callback_BathroomFan')
{
 $sw = true;
 cm("BathroomController.VentilateBathroom");
}

// получаем эмоджи для индикаторов вкл/выкл
if ($sw == true)
{
 sleep(3);

 $on = hex2bin('F09F94B4');
 $off = hex2bin('E2AD95');

 // загружаем данные по температуре и влажности
$temperature = gg("BathroomController.temperature");
$hum = gg("BathroomController.humidity");
 
$light = $off;
$fan = $off;
if (gg("BathroomController.light_status") == 1)
    $light = $on;
if (gg("BathroomController.fan_status") == 1)
   $fan = $on;
 
// $this->deleteMessage($chat_id, $message_id);
 
// формируем кнопки
$option = array( array($this->buildInlineKeyboardButton($text=$light." Свет","","Callback_BathroomLight",""),
                       $this->buildInlineKeyboardButton($text=$fan." Вентилятор","","Callback_BathroomFan","") ) );
$keyb = $this->buildInlineKeyBoard($option);

$strMsg = "<strong>Ванная комната:</strong>" . PHP_EOL . "Температура " . $temperature . " °C" . PHP_EOL . "Влажность " . $hum . " %";
$this->editMessage($chat_id,$message_id,$strMsg,$keyb);

}
 
В Telegramm выводится следующее:
СкринПоказать
telegram.messenger.png
c новым сообщением все проще
 $strMsg = "<strong>Ванная комната:</strong>" . PHP_EOL . "Температура " . $temperature . " °C" . PHP_EOL . "Влажность " . $hum . " %";
 $content = array('chat_id' => $chat_id, 'text' => $strMsg, 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
 $this->sendContent($content);

а вот в редактировании parse_mode не включен, скоро залью исправление
За это сообщение автора Eraser поблагодарили (всего 2):
serge_wddm (Чт янв 11, 2018 10:30 am) • Samir77 (Ср фев 03, 2021 12:33 pm)
Рейтинг: 2.33%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Пн янв 15, 2018 9:39 pm

Поиском не нашел, можно ли график charts.html отправить в телегу? PChart есть, но графики не такие красивые.

Увидел вариант: <!--<img src="/jpgraph/?p=sensorMovementSUM.status&type=24h&width=700&gtype=curve"><br> -->

то в ответ
СпойлерПоказать
jpgraph.png
jpgraph.png (3.43 КБ) 6296 просмотров
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Ответить