Страница 30 из 168

Re: Модуль "Telegram"

Добавлено: Сб окт 15, 2016 11:29 pm
Eraser
Jager писал(а):
Eraser писал(а):Итак, как и обещал, выкладываю свои изыскания по поводу создания меню с отображением статуса
Меню отлично работает, но есть пара моментов.
В меню статус отображается правильно, а в чате инвертированно.
После выполнения команды опять появляется надпись «Выберите комнату», это лишнее.
Без надписи "Выберите комнату" не отправляется обновлённое меню. В чате отображается, то что было написано на кнопке до отправки, поэтому и не совпадает с новым статусом.

Ps Есть еще одна задумка, как можно сделать

Re: Модуль

Добавлено: Вс окт 16, 2016 8:25 am
Jager
Eraser писал(а): Есть еще одна задумка, как можно сделать
В идеале уйти бы от кода в messageHook, завязав все на встроенные в мдм шаблоны поведения, оставив там лишь обработку статуса.

Re: Модуль "Telegram"

Добавлено: Вс окт 16, 2016 11:22 am
Eraser
Вот еще одно довольно интересное решение интерактивной клавиатуры:
1) Создается команда "Свет" с кодом

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

$off = json_decode('"'.'\ud83c\udf11'.'"');
$on = json_decode('"'.'\uD83C\uDF15'.'"');
 $ks = $off;
 $ts = $off;
 if (gg("kitchenLed.on") == 1)
    $ks = $on;
 if (gg("Relay1.status") == 1)
   $ts = $on;
$option = array( array($this->buildInlineKeyboardButton($text=$ks."Кухня","","Callback_kitchenLed",""),
                       $this->buildInlineKeyboardButton($text=$ts."Торшер","","Callback_Relay1","") ) );
$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Управление светом:", 'reply_markup' => $keyb);
$this->sendContent($content);
2) Создается событие "Callback_light" на "Callback" с кодом

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

$sw = false;
if ($callback == 'Callback_kitchenLed')
{
 $sw = true;
 cm("kitchenLed.switch");
}
if ($callback == 'Callback_Relay1')
{
 $sw = true;
 cm("Relay1.switch");
}
if ($sw)
{
 $off = json_decode('"'.'\ud83c\udf11'.'"');
 $on = json_decode('"'.'\uD83C\uDF15'.'"');
 $ks = $off;
 $ts = $off;
 if (gg("kitchenLed.on") == 1)
    $ks = $on;
 if (gg("Relay1.status") == 1)
   $ts = $on;
 $option = array( array($this->buildInlineKeyboardButton($text=$ks."Кухня","","Callback_kitchenLed",""),
                       $this->buildInlineKeyboardButton($text=$ts."Торшер","","Callback_Relay1","") ) );
 $keyb = $this->buildInlineKeyBoard($option);
 $this->editMessage($chat_id,$message_id,"Управление светом:",$keyb);
}
В результате будет клавиатура на которой будет отображаться текущий статус, при нажатии на кнопки будет выполняться действие и изменяться статус

Re: Модуль "Telegram"

Добавлено: Вс окт 16, 2016 7:52 pm
Varrcan
В логах:

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

PHP Warning:  Declaration of telegram::saveParams() should be compatible with module::saveParams($data = 1) in /var/www/modules/telegram/telegram.class.php on line 1084
PHP Warning:  Declaration of telegram::install() should be compatible with module::install($parent_name = '') in /var/www/modules/telegram/telegram.class.php on line 1084
Еще проблема. Если написать в чат МД команду, то ответ приходит в telegram, но через чат telegram МД не реагирует никак.
Даже стандартный Ping Pong не работает. Ping есть, а Pong нет.
Никаких изменений в настройках telegram не делал, буквально неделю назад все работало.
Что я делаю не так?

Re: Модуль "Telegram"

Добавлено: Вс окт 16, 2016 9:13 pm
Eraser
Varrcan писал(а):В логах:

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

PHP Warning:  Declaration of telegram::saveParams() should be compatible with module::saveParams($data = 1) in /var/www/modules/telegram/telegram.class.php on line 1084
PHP Warning:  Declaration of telegram::install() should be compatible with module::install($parent_name = '') in /var/www/modules/telegram/telegram.class.php on line 1084
Еще проблема. Если написать в чат МД команду, то ответ приходит в telegram, но через чат telegram МД не реагирует никак.
Даже стандартный Ping Pong не работает. Ping есть, а Pong нет.
Никаких изменений в настройках telegram не делал, буквально неделю назад все работало.
Что я делаю не так?
в "Истории событий" есть команды отправленные боту?

Re: Модуль "Telegram"

Добавлено: Вс окт 16, 2016 9:42 pm
Varrcan
Программирование - это магия.
Перезагрузил систему, все заработало...

Поймаю еще раз эту ошибку, отпишусь

Re: Модуль "Telegram"

Добавлено: Пн окт 17, 2016 12:41 am
Colp
Varrcan писал(а):Программирование - это магия.
Перезагрузил систему, все заработало...

Поймаю еще раз эту ошибку, отпишусь

Я тоже ловил подобный баг, когда сообщения от Алисы в телеграм приходят, а наоборот - нет. В том числе не работал и пинг. Замечал тогда, что в "истории событий" было пусто - ничего не приходило.
Баг пропадал сам если выставить пользователю все галки (Администратор, История, Команды, Загрузка, Играть голос) и перезапустить систему. Если галки потрогать, то всё опять отваливается. Возможно галки не причём, но после выполнения "ритуала" всё вроде работает. Чертовщина какая-то.

Re: Модуль "Telegram"

Добавлено: Пн окт 17, 2016 1:32 am
C_3AXAPOB
Warning: fopen(C:\_majordomo\htdocs/debmes/log_2016-10-17-cycle_telegram.php.txt): failed to open stream: Permission denied in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 122

Что значит эта ошибка?

Появляется при выполнении вот этого срипта
$image_url="http://192.168.2.91/modules/thumb/thumb ... 554ch0h264";
$result=getURL($image_url,0);
$save_to="./cached/roomcamera.jpg"; // куда сохранять
SaveFile($save_to, $result);
//отправляем картинку в телеграмм
$img='C:/_majordomo/htdocs/cached/roomcamera.jpg';
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToAll($img);

Re: Модуль "Telegram"

Добавлено: Пн окт 17, 2016 10:34 am
skysilver
Varrcan писал(а):Еще проблема. Если написать в чат МД команду, то ответ приходит в telegram, но через чат telegram МД не реагирует никак. Даже стандартный Ping Pong не работает. Ping есть, а Pong нет. Никаких изменений в настройках telegram не делал, буквально неделю назад все работало. Что я делаю не так?
Colp писал(а):Я тоже ловил подобный баг, когда сообщения от Алисы в телеграм приходят, а наоборот - нет. В том числе не работал и пинг. Замечал тогда, что в "истории событий" было пусто - ничего не приходило.
Отпишусь и я. Очень похожая история. Возникает у меня уже второй раз. Неделями работает нормально - сообщения приходят и уходят моментально. Но в какой-то момент начинаются тормоза - возникают задержки в несколько минут (в среднем 2-3 минуты). Т.е. пишу в телеге команду (пинг), а ответ понг прилетает через пару минут. Аналогично в другу сторону - Алиса в чате пишет какой-нибудь say, а мне в телегу он прилетает спустя несколько минут. При этом еще симптом - сообщения стали как-то пачками приходить штоле, как будто копятся сначала, а потом разом все отправляется.

В первый раз все прошло довольно быстро - в течение суток все само стабилизировалось. Второй раз началось два дня назад и до сих пор проблема сохраняется. Цикл телеграма пробовал перезапускать - не помогло.
Думал, дело в серверах телеграма, но те же сообщения между телегами на телефонах ходят мгновенно.
Может, у них там апи поменялось или еще чего?

P.S.: перезагружать свой кубитрак не пробовал. Считаю, что не в нем проблема. У него уж аптайм 538 дней, и все остальные циклы работают стабильно.

Re: Модуль "Telegram"

Добавлено: Пн окт 17, 2016 10:41 am
Eraser
У меня точно такие же проблемы, и я думаю что виноват провайдер...
Если подключиться телефоном к домашнему интернету по wifi, клиент телеграма начинает точно также себя вести
Пробовал весь трафик перенаправить через vpn через другие иностранные сервера, проблема исчезает
Как с этим бороться незнаю, пробовал использовать webhook, сообщения прилетают моментально, а вот с отправкой проблема осталась

Смотрел API телеграма, изменений нет, и ограничений использования не нашел

PS Провайдер МТС