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

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

Модератор: immortal

Аватара пользователя
xor
Сообщения: 2038
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 284 раза
Поблагодарили: 629 раз

Re: Модуль "Telegram"

Сообщение xor » Пн янв 15, 2018 11:02 pm

У меня под ВинХП всё работает

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

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$url = 'http://192.168.1.7/jpgraph/?p=kitchen.temperature&type=24h&width=700&gtype=curve';
$path = './cached/chart.jpg';
file_put_contents($path, file_get_contents($url));
$telegram_module->sendImageToAll('c:/_majordomo/htdocs/cached/chart.jpg'); 
За это сообщение автора xor поблагодарил:
Amarok (Вт янв 16, 2018 7:36 am)
Рейтинг: 1.16%
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Вт янв 16, 2018 7:49 am

Может надо библиотеку обновить, чтоб работала на php7?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Ср янв 17, 2018 8:40 am

Появилась идея сделать файловый менеджер на основе этого модуля. Вроде ничего сложного ) Может уже кто-то сделал?
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Ср янв 17, 2018 3:51 pm

Коллеги, помогите разобраться. Делаю по примеру из этой темы

Вызываю динамическую клавиатуру:
СпойлерПоказать
$off = json_decode('"'.'\ud83c\udf11'.'"');
$on = json_decode('"'.'\uD83C\uDF15'.'"');
$kuh = $off;
$prih = $off;
$kor = $off;
if (gg("Relay07.on") == 1)
$kuh = $on;
if (gg("Relay11.status") == 1)
$prih = $on;

if (gg("Relay01.status") == 1)
$kor = $on;

$option = array( array($this->buildInlineKeyboardButton($text=$kuh."Кухня","","Callback_kitchen",""),
$this->buildInlineKeyboardButton($text=$kor."Коридор","","Callback_koridor",""),
$this->buildInlineKeyboardButton($text=$prih."Прихожая","","Callback_prih","")

) );


$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Управление светом:", 'reply_markup' => $keyb);
$this->sendContent($content);
И обработчик событий
СпойлерПоказать

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

$sw = false;

if ($callback == 'Callback_kitchen')
{
 $sw = true;
 cm("Relay07.switch");
}
if ($callback == 'Callback_prih')
{
 $sw = true;
 cm("Relay12.switch");
}
if ($sw)
{
 $off = json_decode('"'.'\ud83c\udf11'.'"');
 $on = json_decode('"'.'\uD83C\uDF15'.'"');
 $kuh = $off;
 $prih = $off;
 $kor = $off;
 if (gg("Relay07.on") == 1)
    $kuh = $on;
 if (gg("Relay12.status") == 1)
   $kor = $on;
 if (gg("Relay01.status") == 1)
   $prih = $on;
 
 $option = array( array($this->buildInlineKeyboardButton($text=$kuh."Кухня","","Callback_kitchen",""),
$this->buildInlineKeyboardButton($text=$kor."Коридор","","Callback_koridor",""),
$this->buildInlineKeyboardButton($text=$prih."Прихожая","","Callback_prih","")                      
) );
                        $keyb = $this->buildInlineKeyBoard($option);
 $this->editMessage($chat_id,$message_id,"Управление светом:",$keyb);
} 
Даже сделал тестовые обработчик событий
СпойлерПоказать

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

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$texxt='$chat_id: '.$chat_id.' $text: '.$text.' $callback:'.$where;
$telegram_module->sendMessageToAll($texxt); 
При нажатии на всплывающую кнопку с обозначением помещения, ничего не происходит. Нет дажу тестового вызова callback.

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

Re: Модуль "Telegram"

Сообщение Eraser » Ср янв 17, 2018 6:20 pm

directman66 писал(а):Коллеги, помогите разобраться. Делаю по примеру из этой темы

Вызываю динамическую клавиатуру:
СпойлерПоказать
$off = json_decode('"'.'\ud83c\udf11'.'"');
$on = json_decode('"'.'\uD83C\uDF15'.'"');
$kuh = $off;
$prih = $off;
$kor = $off;
if (gg("Relay07.on") == 1)
$kuh = $on;
if (gg("Relay11.status") == 1)
$prih = $on;

if (gg("Relay01.status") == 1)
$kor = $on;

$option = array( array($this->buildInlineKeyboardButton($text=$kuh."Кухня","","Callback_kitchen",""),
$this->buildInlineKeyboardButton($text=$kor."Коридор","","Callback_koridor",""),
$this->buildInlineKeyboardButton($text=$prih."Прихожая","","Callback_prih","")

) );


$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Управление светом:", 'reply_markup' => $keyb);
$this->sendContent($content);
И обработчик событий
СпойлерПоказать

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

$sw = false;

if ($callback == 'Callback_kitchen')
{
 $sw = true;
 cm("Relay07.switch");
}
if ($callback == 'Callback_prih')
{
 $sw = true;
 cm("Relay12.switch");
}
if ($sw)
{
 $off = json_decode('"'.'\ud83c\udf11'.'"');
 $on = json_decode('"'.'\uD83C\uDF15'.'"');
 $kuh = $off;
 $prih = $off;
 $kor = $off;
 if (gg("Relay07.on") == 1)
    $kuh = $on;
 if (gg("Relay12.status") == 1)
   $kor = $on;
 if (gg("Relay01.status") == 1)
   $prih = $on;
 
 $option = array( array($this->buildInlineKeyboardButton($text=$kuh."Кухня","","Callback_kitchen",""),
$this->buildInlineKeyboardButton($text=$kor."Коридор","","Callback_koridor",""),
$this->buildInlineKeyboardButton($text=$prih."Прихожая","","Callback_prih","")                      
) );
                        $keyb = $this->buildInlineKeyBoard($option);
 $this->editMessage($chat_id,$message_id,"Управление светом:",$keyb);
} 
Даже сделал тестовые обработчик событий
СпойлерПоказать

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

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$texxt='$chat_id: '.$chat_id.' $text: '.$text.' $callback:'.$where;
$telegram_module->sendMessageToAll($texxt); 
При нажатии на всплывающую кнопку с обозначением помещения, ничего не происходит. Нет дажу тестового вызова callback.

Заранее спасибо!
включены ли обработчики (галка "Включить")?
что в логе пишет при этих действиях?
За это сообщение автора Eraser поблагодарил:
directman66 (Ср янв 17, 2018 10:21 pm)
Рейтинг: 1.16%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Ср янв 17, 2018 7:19 pm

Галка включена.
СпойлерПоказать
Screenshot_2018-01-17-21-14-59-603_com.android.chrome.png
Screenshot_2018-01-17-21-14-59-603_com.android.chrome.png (210.63 КБ) 5584 просмотра
Screenshot_2018-01-17-21-19-42-418_com.android.chrome.png
Screenshot_2018-01-17-21-19-42-418_com.android.chrome.png (190.09 КБ) 5584 просмотра
Судя по записи в логе 21:42:46 Chatid: 388067888; Bot-name: dmshome_bot; Message: Callback_koridor

Кэлбэк вызывается. Но тестовый обработчик события не имеет заполненной переменной $Callback

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

$texxt='$chat_id: '.$chat_id.' $text: '.$text.' $callback:'.$callback;
$telegram_module->sendMessageToAll($texxt); 
Результат

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

$chat_id: 388067888 $text: Свет $callback: 
но и это сообщение выскакивает только когда вводишь команду, когда ждешь колбэк его нет
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 868 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Ср янв 17, 2018 10:17 pm

directman66 писал(а):Галка включена.
СпойлерПоказать
Screenshot_2018-01-17-21-14-59-603_com.android.chrome.png
Screenshot_2018-01-17-21-19-42-418_com.android.chrome.png
Судя по записи в логе 21:42:46 Chatid: 388067888; Bot-name: dmshome_bot; Message: Callback_koridor

Кэлбэк вызывается. Но тестовый обработчик события не имеет заполненной переменной $Callback

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

$texxt='$chat_id: '.$chat_id.' $text: '.$text.' $callback:'.$callback;
$telegram_module->sendMessageToAll($texxt);
Результат

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

$chat_id: 388067888 $text: Свет $callback:
но и это сообщение выскакивает только когда вводишь команду, когда ждешь колбэк его нет
тип у события какой?
За это сообщение автора Eraser поблагодарил:
directman66 (Ср янв 17, 2018 10:21 pm)
Рейтинг: 1.16%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Ср янв 17, 2018 10:18 pm

Eraser писал(а):
directman66 писал(а):Галка включена.
СпойлерПоказать
Screenshot_2018-01-17-21-14-59-603_com.android.chrome.png
Screenshot_2018-01-17-21-19-42-418_com.android.chrome.png
Судя по записи в логе 21:42:46 Chatid: 388067888; Bot-name: dmshome_bot; Message: Callback_koridor

Кэлбэк вызывается. Но тестовый обработчик события не имеет заполненной переменной $Callback

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

$texxt='$chat_id: '.$chat_id.' $text: '.$text.' $callback:'.$callback;
$telegram_module->sendMessageToAll($texxt); 
Результат

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

$chat_id: 388067888 $text: Свет $callback: 
но и это сообщение выскакивает только когда вводишь команду, когда ждешь колбэк его нет
тип у события какой?
У всех текстовый

Отправлено с моего Redmi Note 3 через Tapatalk
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 868 раз
Контактная информация:

Re: Модуль

Сообщение Eraser » Ср янв 17, 2018 10:20 pm

directman66 писал(а):У всех текстовый
для обработки нажатий inline клавиатуры надо тип Callback
За это сообщение автора Eraser поблагодарил:
directman66 (Ср янв 17, 2018 10:21 pm)
Рейтинг: 1.16%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
directman66
Сообщения: 2801
Зарегистрирован: Пн дек 26, 2016 9:51 am
Откуда: Екатеринбург
Благодарил (а): 380 раз
Поблагодарили: 693 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение directman66 » Чт янв 18, 2018 6:53 am

Ура, делюсь запрашивалкой координат пользователей MD

Команда:
СпойлерПоказать

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

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$menu=array();
$objects = getObjectsByClass("Users");
foreach ($objects as $obj) {     
 $ar2[] = $obj['TITLE'];
 
 $menu[]=$telegram_module->buildInlineKeyboardButton($text=$obj['TITLE'],"","gde_".$obj['TITLE'],"")  ;

}

 $option = array($menu) ;


$keyb = $telegram_module->buildInlineKeyBoard($option);

$content = array('chat_id' => $chat_id, 'text' => "Получение координат", 'reply_markup' => $keyb);
$telegram_module->sendContent($content); 

callback:
СпойлерПоказать

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

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();


//$telegram_module->sendMessageToAll($callback);
//$telegram_module->sendMessageToAll(substr($callback,0,3));
//$telegram_module->sendMessageToAll(substr($callback,4));

if (substr($callback,0,3) == 'gde')
{
$coord=gg(substr($callback,4).'.Coordinates');
$adr=gg(substr($callback,4).'.address');
$sp=explode(",",$coord);
$telegram_module->sendMessageToAll($adr);
$telegram_module->sendLocationToAll($sp[0],$sp[1]);
}

СпойлерПоказать
gde.png
gde.png (50.22 КБ) 5509 просмотров
Надо для светильников также сделать динамическое меню.
За это сообщение автора directman66 поблагодарили (всего 4):
ypiter2006 (Вс фев 04, 2018 10:22 pm) • dengi.76 (Пт апр 06, 2018 7:01 pm) • Samir77 (Ср июл 25, 2018 5:06 pm) • vitosmaxim80sad145 (Чт окт 22, 2020 11:05 pm)
Рейтинг: 4.65%
Если вам помогло данное сообщение, не поленитесь нажать кнопку "спасибо".
CONNECT | Оборудование | Блог | Дополнения | Email | Telegram
Ответить