Страница 63 из 193
Re: Модуль "Telegram"
Добавлено: Пн янв 15, 2018 11:02 pm
xor
У меня под ВинХП всё работает
Код: Выделить всё
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>ype=curve';
$path = './cached/chart.jpg';
file_put_contents($path, file_get_contents($url));
$telegram_module->sendImageToAll('c:/_majordomo/htdocs/cached/chart.jpg');
Re: Модуль "Telegram"
Добавлено: Вт янв 16, 2018 7:49 am
directman66
Может надо библиотеку обновить, чтоб работала на php7?
Re: Модуль "Telegram"
Добавлено: Ср янв 17, 2018 8:40 am
directman66
Появилась идея сделать файловый менеджер на основе этого модуля. Вроде ничего сложного ) Может уже кто-то сделал?
Re: Модуль "Telegram"
Добавлено: Ср янв 17, 2018 3:51 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.
Заранее спасибо!
Re: Модуль "Telegram"
Добавлено: Ср янв 17, 2018 6:20 pm
Eraser
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.
Заранее спасибо!
включены ли обработчики (галка "Включить")?
что в логе пишет при этих действиях?
Re: Модуль "Telegram"
Добавлено: Ср янв 17, 2018 7:19 pm
directman66
Галка включена.

- Screenshot_2018-01-17-21-14-59-603_com.android.chrome.png (210.63 КБ) 6672 просмотра

- Screenshot_2018-01-17-21-19-42-418_com.android.chrome.png (190.09 КБ) 6672 просмотра
Судя по записи в логе 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);
Результат
но и это сообщение выскакивает только когда вводишь команду, когда ждешь колбэк его нет
Re: Модуль "Telegram"
Добавлено: Ср янв 17, 2018 10:17 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);
Результат
но и это сообщение выскакивает только когда вводишь команду, когда ждешь колбэк его нет
тип у события какой?
Re: Модуль "Telegram"
Добавлено: Ср янв 17, 2018 10:18 pm
directman66
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);
Результат
но и это сообщение выскакивает только когда вводишь команду, когда ждешь колбэк его нет
тип у события какой?
У всех текстовый
Отправлено с моего Redmi Note 3 через Tapatalk
Re: Модуль
Добавлено: Ср янв 17, 2018 10:20 pm
Eraser
directman66 писал(а):У всех текстовый
для обработки нажатий inline клавиатуры надо тип Callback
Re: Модуль "Telegram"
Добавлено: Чт янв 18, 2018 6:53 am
directman66
Ура, делюсь запрашивалкой координат пользователей 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 (50.22 КБ) 6602 просмотра
Надо для светильников также сделать динамическое меню.