Страница 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&gtype=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
Коллеги, помогите разобраться. Делаю по примеру из этой темы

Вызываю динамическую клавиатуру:
SPOILERSPOILER_SHOW
$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);
И обработчик событий
SPOILERSPOILER_SHOW

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

$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);
} 
Даже сделал тестовые обработчик событий
SPOILERSPOILER_SHOW

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

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 писал(а):Коллеги, помогите разобраться. Делаю по примеру из этой темы

Вызываю динамическую клавиатуру:
SPOILERSPOILER_SHOW
$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);
И обработчик событий
SPOILERSPOILER_SHOW

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

$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);
} 
Даже сделал тестовые обработчик событий
SPOILERSPOILER_SHOW

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

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
Галка включена.
SPOILERSPOILER_SHOW
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 КБ) 6672 просмотра
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 КБ) 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); 
Результат

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

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

Re: Модуль "Telegram"

Добавлено: Ср янв 17, 2018 10:17 pm
Eraser
directman66 писал(а):Галка включена.
SPOILERSPOILER_SHOW
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:
но и это сообщение выскакивает только когда вводишь команду, когда ждешь колбэк его нет
тип у события какой?

Re: Модуль "Telegram"

Добавлено: Ср янв 17, 2018 10:18 pm
directman66
Eraser писал(а):
directman66 писал(а):Галка включена.
SPOILERSPOILER_SHOW
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

Re: Модуль

Добавлено: Ср янв 17, 2018 10:20 pm
Eraser
directman66 писал(а):У всех текстовый
для обработки нажатий inline клавиатуры надо тип Callback

Re: Модуль "Telegram"

Добавлено: Чт янв 18, 2018 6:53 am
directman66
Ура, делюсь запрашивалкой координат пользователей MD

Команда:
SPOILERSPOILER_SHOW

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

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:
SPOILERSPOILER_SHOW

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

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]);
}

SPOILERSPOILER_SHOW
gde.png
gde.png (50.22 КБ) 6602 просмотра
Надо для светильников также сделать динамическое меню.