Страница 64 из 193

Re: Модуль "Telegram"

Добавлено: Чт янв 18, 2018 8:00 am
directman66
Подскажите, можно как то в явном виде указать размер кнопки, чтобы данные не сокращались? А также хотелось бы выводить кнопки в несколько строк.
SPOILERSPOILER_SHOW
kn.jpg
kn.jpg (21.27 КБ) 7614 просмотров

Re: Модуль "Telegram"

Добавлено: Чт янв 18, 2018 8:05 am
Eraser
directman66 писал(а):Подскажите, можно как то в явном виде указать размер кнопки, чтобы данные не сокращались? А также хотелось бы выводить кнопки в несколько строк.
SPOILERSPOILER_SHOW
kn.jpg
например так

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

$objects=getObjectsByClass("SControllers");
//print_r($objects);
foreach($objects as $obj) {
    $state = $off;
     if (gg($obj['TITLE'].".status") == 1)
         $state = $on;
    $option[] = $telegram_module->buildInlineKeyboardButton($text=$state.getObject($obj['TITLE'])->description,"","CallbackSwitch_".$obj['TITLE'],"");
}

$count_row = 3;
$option = array_chunk($option, $count_row);
$keyb = $telegram_module->buildInlineKeyBoard($option);

$content = array('chat_id' => $chat_id, 'text' => "Управление светом (<b>".gg("Sensor_power01.value")."Wt</b>):", 'reply_markup' => $keyb, 'parse_mode' => 'HTML');
или так

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

$option = array (array($this->buildInlineKeyboardButton($text="Люстра зала","","salonLuzAlta",""),
                                 $this->buildInlineKeyboardButton($text="Бра зала","","salonLamp","")),
             array($this->buildInlineKeyboardButton($text="Люстра столовой","","mesonLuz",""),
                                $this->buildInlineKeyboardButton($text="Подсветка кухни","","cocinaLampXiaomi","") ) );
$keyb = $this->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Управление светом:", 'reply_markup' => $keyb);

Re: Модуль "Telegram"

Добавлено: Пт янв 19, 2018 12:02 pm
vitar78
вот что я подумал а чтоб 2х разных ботов подружить и заставить слать друг другу сообщения можно ведь написать програмку которая будет подключатся к двум разным ботам и пересылать сообщения от одного другому, своего рода шлюз. это актуально для пересылки сообщений в алису от других ботов.
может кто то такое реализовать

Re: Модуль "Telegram"

Добавлено: Пт янв 19, 2018 12:53 pm
Eraser
vitar78 писал(а):вот что я подумал а чтоб 2х разных ботов подружить и заставить слать друг другу сообщения можно ведь написать програмку которая будет подключатся к двум разным ботам и пересылать сообщения от одного другому, своего рода шлюз. это актуально для пересылки сообщений в алису от других ботов.
может кто то такое реализовать
конечно можно, но не думаю что кто-то возьмется реализовать, по крайней мере бесплатно, просто это не так легко, по сути нужно реализовать клиента телеграмм, только с одной единственной функцией пересылки
а для чего вообще может понадобится такое?

Re: Модуль "Telegram"

Добавлено: Пт янв 19, 2018 3:41 pm
vitar78
для пересылки сообщений от одного бота к другому
например
https://uip.me/2016/04/50-popular-telegram-bots/
https://protelegram.ru/2016/12/13/top_1 ... gram_2016/
позволит как я понимаю взаимодействовать алисе с другими ботами
а дальше всё от нашей фантазии

Re: Модуль "Telegram"

Добавлено: Сб янв 20, 2018 7:21 am
Sakoru
Подскажите как можно глобально разделять ответы пользователям в телеграме?
Так понимаю указанный метод
$this->sendMessageToUser($chat_id,"message");
работает только внутри модуля.

Возможно разделить ответы, прописанные шаблонах поведения?

Re: Модуль "Telegram"

Добавлено: Сб янв 20, 2018 10:14 am
alt.Maksimus
Sakoru писал(а):Подскажите как можно глобально разделять ответы пользователям в телеграме?
Так понимаю указанный метод
$this->sendMessageToUser($chat_id,"message");
работает только внутри модуля.

Возможно разделить ответы, прописанные шаблонах поведения?
Не знаю на сколько правильный, но вроде рабочий вариант:
в Объекте ThisComputer добавляем свойство lastTgId (я так понял модуль телеграмма глобально не доступен, и id надо положить в общедоступное место)

далее в приложении Telegram добавить событие с кодом

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

setGlobal("ThisComputer.lastTgId", $chat_id); 
как я понимаю эти события срабатывают при каждом получении сообщения ботом. и раз тут доступна переменная $chat_id то отсюда ее и запишем в свойство ThisComputer.lastTgId

далее в шаблонах поведения используем конструкцию

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

include_once(DIR_MODULES . 'telegram/telegram.class.php'); //подключаем класс
$telegram_module = new telegram(); //инициализируем телеграм и записываем в переменную
$tgId = getGlobal("ThisComputer.lastTgId"); // записываем в переменную значение $chat_id
if ( $tgId ) { // проверяем, если сообщение было с тг, то отвечаем этому же пользователю в тг
 $telegram_module->sendMessageToUser($tgId ,"текст");
 setGlobal("ThisComputer.lastTgId", "");  //после отправки сообщения в тг, чистим переменную с $chat_id
} else { // иначе, если сообщение не с тг, то отвечаем в общий чат
 say("текст",2); //уровень важности сигнала, тут уж как хотите)
}
 
в итоге получаем изолированный чат с домом в тг от других пользователей, ведь изначально, если в тг пишет один пользователь, другому пользователю в тг это сообщение не видно, но видно ответ системы, что собственно не к чему)
PS это своего рода костыль, было бы клевое, если автор это как то в глобальном плане реализует

Re: Модуль "Telegram"

Добавлено: Сб янв 20, 2018 10:29 am
Sakoru
alt.Maksimus писал(а):
Sakoru писал(а):Подскажите как можно глобально разделять ответы пользователям в телеграме?
Так понимаю указанный метод
$this->sendMessageToUser($chat_id,"message");
работает только внутри модуля.

Возможно разделить ответы, прописанные шаблонах поведения?
Не знаю на сколько правильный, но вроде рабочий вариант:
в Объекте ThisComputer добавляем свойство lastTgId (я так понял модуль телеграмма глобально не доступен, и id надо положить в общедоступное место)

далее в приложении Telegram добавить событие с кодом

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

setGlobal("ThisComputer.lastTgId", $chat_id); 
как я понимаю эти события срабатывают при каждом получении сообщения ботом. и раз тут доступна переменная $chat_id то отсюда ее и запишем в свойство ThisComputer.lastTgId

далее в шаблонах поведения используем конструкцию

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

include_once(DIR_MODULES . 'telegram/telegram.class.php'); //подключаем класс
$telegram_module = new telegram(); //инициализируем телеграм и записываем в переменную
$tgId = getGlobal("ThisComputer.lastTgId"); // записываем в переменную значение $chat_id
if ( $tgId ) { // проверяем, если сообщение было с тг, то отвечаем этому же пользователю в тг
 $telegram_module->sendMessageToUser($tgId ,"текст");
 setGlobal("ThisComputer.lastTgId", "");  //после отправки сообщения в тг, чистим переменную с $chat_id
} else { // иначе, если сообщение не с тг, то отвечаем в общий чат
 say("текст",2); //уровень важности сигнала, тут уж как хотите)
}
 
в итоге получаем изолированный чат с домом в тг от других пользователей, ведь изначально, если в тг пишет один пользователь, другому пользователю в тг это сообщение не видно, но видно ответ системы, что собственно не к чему)

Спасибо идею и особенно за подробный ответ. Ответы разделяются по юзерам, что определенно радует) :)

Re: Модуль "Telegram"

Добавлено: Вс янв 21, 2018 8:40 am
Logrus
immortal писал(а):у и код для погоды OpenWeatherMap используемый в командах
Во первых, спасибо, как Вам, так и Автору модуля.
маленькие уточнения, с апи опенвейзер
ветер.PNG
ветер.PNG (9.65 КБ) 7409 просмотров
$unit = 'metric';
т.е. скорость в м/с, направление откуда дует, есть еще использование в аэронавигации там используют наоборот

Re: Модуль "Telegram"

Добавлено: Чт янв 25, 2018 11:04 pm
cudgel
Установил сервер на Windows 7 64-bit, при попытке установить модуль telegram пишет:

Warning: include_once(./modules/telegram/telegram.class.php): failed to open stream: No such file or directory in C:\_majordomo\htdocs\modules\control_modules\control_modules.class.php on line 87

Warning: include_once(): Failed opening './modules/telegram/telegram.class.php' for inclusion (include_path='.;C:\_majordomo\server\php\PEAR') in C:\_majordomo\htdocs\modules\control_modules\control_modules.class.php on line 87

Что не так с виндовс? Версия сервера 110b.