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

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

Модератор: immortal

Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 873 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Пн июн 06, 2016 1:04 pm

sergejey писал(а): 1. Поддержка события нового сообщения на общем канале (добавил бота как администратора канала, но сообщения на канале он не видит и соответственно в канал ничего не пишет)
Надо у бота настроить режим приватности
Работу бота в группе я не тестировал, скорее всего будут косяки
sergejey писал(а): 2. Интеграция с функциями sayTo/sayReply
надо подумать
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1754 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение skysilver » Пн июн 06, 2016 1:16 pm

А есть возможность выдавать динамический набор кнопок (если правильно выражаюсь) в зависимости от поступившей команды пользователя? Например, есть базовая клавиатура: Свет, Погода, Камеры. Я нажимаю Камеры, и мне отображается клавиатура с двумя-тремя кнопками включенных дома камер, а нажимаю на нужную, и в ответ прилетает картинка с этой камеры. Или, например, нажимаю на Свет, и мне отображается клавиатура с думая кнопками "Включить" и "Выключить", дальше нажимаю "Выключить", и появляется клавиатура с кнопками помещений, где нужно выключить свет. Надеюсь, понятно объяснил. ))
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение sergejey » Пн июн 06, 2016 1:18 pm

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Модуль "Telegram"

Сообщение Dark_Veter » Пн июн 06, 2016 1:19 pm

skysilver писал(а):А есть возможность выдавать динамический набор кнопок (если правильно выражаюсь) в зависимости от поступившей команды пользователя? Например, есть базовая клавиатура: Свет, Погода, Камеры. Я нажимаю Камеры, и мне отображается клавиатура с двумя-тремя кнопками включенных дома камер, а нажимаю на нужную, и в ответ прилетает картинка с этой камеры. Или, например, нажимаю на Свет, и мне отображается клавиатура с думая кнопками "Включить" и "Выключить", дальше нажимаю "Выключить", и появляется клавиатура с кнопками помещений, где нужно выключить свет. Надеюсь, понятно объяснил. ))
Так вроде можно же свою клавиатуру формировать, вот тут написано. или это не то?
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 873 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Пн июн 06, 2016 1:20 pm

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

а в истории событий видны сообщения из группы?
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 873 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Пн июн 06, 2016 1:23 pm

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

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

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

$option = array( array("A", "B","C"), array("D", "E") );
$this->sendMessageToUser($chat_id,"Select option",$option); 
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение sergejey » Пн июн 06, 2016 1:45 pm

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

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Dark_Veter
Сообщения: 295
Зарегистрирован: Вт апр 23, 2013 5:16 pm
Откуда: Брянск
Благодарил (а): 18 раз
Поблагодарили: 94 раза

Re: Модуль "Telegram"

Сообщение Dark_Veter » Пн июн 06, 2016 2:13 pm

После последнего обновления у меня почему-то перестал работать модуль.
Debian GNU/Linux 7.9 (wheezy), версия 0.9.0b, Connect
Аватара пользователя
Eraser
Сообщения: 1085
Зарегистрирован: Вт окт 21, 2014 7:31 pm
Откуда: Киров
Благодарил (а): 14 раз
Поблагодарили: 873 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение Eraser » Вт июн 07, 2016 3:21 pm

:!: :!: Обновление :!: :!:

Добавлен довольно интересный функционал - поддержка 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"); 
В результате сообщение будет изменено в соответствии с нажатой кнопкой

ЗЫ Применение
Мне видится использование этой функции, когда нужно подтверждение или выбор, что сделать, при возникновении какого либо события в системе. Хотя тут много чего можно придумать.
Вложения
inlineKeyb.png
Пример InlineKeyboard
inlineKeyb.png (76.8 КБ) 9463 просмотра
inlineKeybResult.png
Результаты нажатия
inlineKeybResult.png (97.17 КБ) 9463 просмотра
За это сообщение автора Eraser поблагодарил:
Soichi (Чт сен 17, 2020 3:38 am)
Рейтинг: 1.16%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Аватара пользователя
m-malva
Сообщения: 291
Зарегистрирован: Чт фев 26, 2015 1:38 am
Откуда: Санкт-Петербург
Благодарил (а): 16 раз
Поблагодарили: 66 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение m-malva » Вт июн 07, 2016 4:03 pm

что то пошло не так

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

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
Ответить