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

Re: Модуль "Telegram"

Добавлено: Пн июн 06, 2016 1:04 pm
Eraser
sergejey писал(а): 1. Поддержка события нового сообщения на общем канале (добавил бота как администратора канала, но сообщения на канале он не видит и соответственно в канал ничего не пишет)
Надо у бота настроить режим приватности
Работу бота в группе я не тестировал, скорее всего будут косяки
sergejey писал(а): 2. Интеграция с функциями sayTo/sayReply
надо подумать

Re: Модуль "Telegram"

Добавлено: Пн июн 06, 2016 1:16 pm
skysilver
А есть возможность выдавать динамический набор кнопок (если правильно выражаюсь) в зависимости от поступившей команды пользователя? Например, есть базовая клавиатура: Свет, Погода, Камеры. Я нажимаю Камеры, и мне отображается клавиатура с двумя-тремя кнопками включенных дома камер, а нажимаю на нужную, и в ответ прилетает картинка с этой камеры. Или, например, нажимаю на Свет, и мне отображается клавиатура с думая кнопками "Включить" и "Выключить", дальше нажимаю "Выключить", и появляется клавиатура с кнопками помещений, где нужно выключить свет. Надеюсь, понятно объяснил. ))

Re: Модуль "Telegram"

Добавлено: Пн июн 06, 2016 1:18 pm
sergejey
Eraser писал(а):
sergejey писал(а): 1. Поддержка события нового сообщения на общем канале (добавил бота как администратора канала, но сообщения на канале он не видит и соответственно в канал ничего не пишет)
Надо у бота настроить режим приватности
Работу бота в группе я не тестировал, скорее всего будут косяки
Отключил приватность, но на событие нового сообщения всё равно не среагировал (у меня там запись в лог, при прямом общении работает).
Кейс использования -- у меня система стоит в нашем местном хакерспэйсе и я бы хотел, чтобы бот мог отвечать на команды любого пользователя в общем канале без необходимости его регистрации и настройки прав. Собственно, мне для этого нужно только перехват сообщений и возврат ответов.

Re: Модуль "Telegram"

Добавлено: Пн июн 06, 2016 1:19 pm
Dark_Veter
skysilver писал(а):А есть возможность выдавать динамический набор кнопок (если правильно выражаюсь) в зависимости от поступившей команды пользователя? Например, есть базовая клавиатура: Свет, Погода, Камеры. Я нажимаю Камеры, и мне отображается клавиатура с двумя-тремя кнопками включенных дома камер, а нажимаю на нужную, и в ответ прилетает картинка с этой камеры. Или, например, нажимаю на Свет, и мне отображается клавиатура с думая кнопками "Включить" и "Выключить", дальше нажимаю "Выключить", и появляется клавиатура с кнопками помещений, где нужно выключить свет. Надеюсь, понятно объяснил. ))
Так вроде можно же свою клавиатуру формировать, вот тут написано. или это не то?

Re: Модуль "Telegram"

Добавлено: Пн июн 06, 2016 1:20 pm
Eraser
sergejey писал(а):
Eraser писал(а):
sergejey писал(а): 1. Поддержка события нового сообщения на общем канале (добавил бота как администратора канала, но сообщения на канале он не видит и соответственно в канал ничего не пишет)
Надо у бота настроить режим приватности
Работу бота в группе я не тестировал, скорее всего будут косяки
Отключил приватность, но на событие нового сообщения всё равно не среагировал (у меня там запись в лог, при прямом общении работает).
Кейс использования -- у меня система стоит в нашем местном хакерспэйсе и я бы хотел, чтобы бот мог отвечать на команды любого пользователя в общем канале без необходимости его регистрации и настройки прав. Собственно, мне для этого нужно только перехват сообщений и возврат ответов.
надо зарегистрировать группу, для этого надо отправить из группы отправить /start@ИМЯ_БОТА

а в истории событий видны сообщения из группы?

Re: Модуль "Telegram"

Добавлено: Пн июн 06, 2016 1:23 pm
Eraser
Dark_Veter писал(а):
skysilver писал(а):А есть возможность выдавать динамический набор кнопок (если правильно выражаюсь) в зависимости от поступившей команды пользователя? Например, есть базовая клавиатура: Свет, Погода, Камеры. Я нажимаю Камеры, и мне отображается клавиатура с двумя-тремя кнопками включенных дома камер, а нажимаю на нужную, и в ответ прилетает картинка с этой камеры. Или, например, нажимаю на Свет, и мне отображается клавиатура с думая кнопками "Включить" и "Выключить", дальше нажимаю "Выключить", и появляется клавиатура с кнопками помещений, где нужно выключить свет. Надеюсь, понятно объяснил. ))
Так вроде можно же свою клавиатуру формировать, вот тут написано. или это не то?
да, это самое простое, но можно использовать отображение по условию, это будет сложнее

если в коде команды, то можно так

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

$option = array( array("A", "B","C"), array("D", "E") );
$this->sendMessageToUser($chat_id,"Select option",$option); 

Re: Модуль "Telegram"

Добавлено: Пн июн 06, 2016 1:45 pm
sergejey
Eraser писал(а):надо зарегистрировать группу, для этого надо отправить из группы отправить /start@ИМЯ_БОТА
а в истории событий видны сообщения из группы?
сделал /start@ИМЯ_БОТА на канале -- как-то не поменялось ничего.
в истории событий нет реакции тоже никакой на новые сообщения на канале

Re: Модуль "Telegram"

Добавлено: Пн июн 06, 2016 2:13 pm
Dark_Veter
После последнего обновления у меня почему-то перестал работать модуль.

Re: Модуль "Telegram"

Добавлено: Вт июн 07, 2016 3:21 pm
Eraser
:!: :!: Обновление :!: :!:

Добавлен довольно интересный функционал - поддержка InlineKeyboard :)
Добавлено событие Callback в обработчиках
Добавлена функция редактирования сообщения

И подробнее что к чему

Пример создания клавиатуры (той что на изображении)

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

include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$option = array( array($telegram_module->buildInlineKeyboardButton("Majordomo", $url="http://majordomo.smartliving.ru/"),
                       $telegram_module->buildInlineKeyboardButton($text="Yes","","Callback_Yes",""),
                       $telegram_module->buildInlineKeyboardButton($text="No","","Callback_No","") ) );
$keyb = $telegram_module->buildInlineKeyBoard($option);

$content = array('chat_id' => $chat_id, 'text' => "Press button", 'reply_markup' => $keyb);
$telegram_module->sendContent($content); 
Для обработки нажатий на этой клавиатуре надо создать Callback обработчик в событиях с кодом

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

if ($callback == 'Callback_No')
$this->editMessage($chat_id,$message_id,"Press No");
if ($callback == 'Callback_Yes')
$this->editMessage($chat_id,$message_id,"Press Yes"); 
В результате сообщение будет изменено в соответствии с нажатой кнопкой

ЗЫ Применение
Мне видится использование этой функции, когда нужно подтверждение или выбор, что сделать, при возникновении какого либо события в системе. Хотя тут много чего можно придумать.

Re: Модуль "Telegram"

Добавлено: Вт июн 07, 2016 4:03 pm
m-malva
что то пошло не так

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

Catchable fatal error: Argument 1 passed to TelegramBot::buildKeyBoard() must be of the type array, null given, called in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 323 and defined in C:\_majordomo\htdocs\modules\telegram\Telegram.php on line 850
Warning: array_chunk(): Size parameter expected to be greater than 0 in C:\_majordomo\htdocs\modules\telegram\telegram.class.php on line 317
2016-06-07 16:00:36 162105692=алиса как дела
16:00:35 running cycle_telegram.php