[Модуль] Telegram (telegram)
Модератор: immortal
-
- Сообщения: 113
- Зарегистрирован: Пт дек 14, 2012 3:46 am
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Re: Модуль "Telegram"
И еще один вопрос для понимания. Ранее вы писали
"По поводу
Code:
say('привет',5);
не хватает в конце return "";
бот воспринимает это как ошибка, и высылает ответ что ошибка
предполагалось, что результатом выполнения такой команды будет какой либо ответ
в ближайшей версии пересмотрю это поведение"
что означает - return "";
"По поводу
Code:
say('привет',5);
не хватает в конце return "";
бот воспринимает это как ошибка, и высылает ответ что ошибка
предполагалось, что результатом выполнения такой команды будет какой либо ответ
в ближайшей версии пересмотрю это поведение"
что означает - return "";
-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1750 раз
- Контактная информация:
Re: Модуль "Telegram"
Поставил модуль. Потестил. По итогу есть следующие наблюдения.
1. Если в настройках учеток Телеграм не указать пользователя Мажордомо и дать право получать системную историю (чат Алисы), то сообщения приходить не будут. Пришлось заводить пользователей в Мажородомо. Сначала думал, что баг, но, видимо, это все-таки фича. ))
2. Для проигрывания голосовых сообщений нужны кодеки OGG. Иначе mplayer вывалит ошибку: А вот где этот кодек взять большой вопрос. Пробовал даже под виндой проиграть эти файлы в VLC и AIMP - ничего не вышло. ((
3. Никак не смог заставить произносить фразы отправленные боту через обработчик метода ThisComputer.commandReceived. Т.е. пишем боту "скажи Привет" или "повтори Привет", команда отображается в чате Алисы от имени пользователя, но не выполняется. При этом в debmes видима на вкладке Methods в XRay видно, что метод commandReceived даже не вызывался. При все при этом команда выполнится, если отправить ее в чат Алисы через веб-интерфейс Мажордомо. С шаблонами поведения проблем нет.
4. Функция $telegram_module->sendMessageToAll("test message to all"); выдает ошибку Надо в файле в функции sendMessageTo($where, $message) сделать вместо например так C sendImageToAll аналогично.
1. Если в настройках учеток Телеграм не указать пользователя Мажордомо и дать право получать системную историю (чат Алисы), то сообщения приходить не будут. Пришлось заводить пользователей в Мажородомо. Сначала думал, что баг, но, видимо, это все-таки фича. ))
2. Для проигрывания голосовых сообщений нужны кодеки OGG. Иначе mplayer вывалит ошибку:
Код: Выделить всё
[ogg @ 0xb667c558]Codec not found
LAVF_header: av_open_input_stream() failed
Ogg stream 0 is of an unknown type
3. Никак не смог заставить произносить фразы отправленные боту через обработчик метода ThisComputer.commandReceived. Т.е. пишем боту "скажи Привет" или "повтори Привет", команда отображается в чате Алисы от имени пользователя, но не выполняется. При этом в debmes видим
Код: Выделить всё
DEBUG [root]: External context response: a:1:{s:15:"MATCHED_CONTEXT";i:0;} (at /var/www/lib/general.class.php:432)
4. Функция $telegram_module->sendMessageToAll("test message to all"); выдает ошибку
Код: Выделить всё
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for
the right syntax to use near '' at line 1 SELECT * FROM tlg_user WHERE
Код: Выделить всё
if ($query)
$query = $query." WHERE ".$where;
Код: Выделить всё
if ($where != "")
$query = $query." WHERE ".$where;
- Рейтинг: 1.18%
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 868 раз
- Контактная информация:
Re: Модуль "Telegram"
skysilver писал(а):Eraser, случаем, не знаете у Hangouts нет аналогичного функционала ботов и api соответствующего? Может, мониторили информацию перед написанием модуля. А то у меня Telegram не прижился еще пока. ))
в Hangouts протокол схожий с XMPP(jabber)
думаю в Hangouts тоже можно реализовать бота, но в нем нет возможности формировать клавиатуру с командами
сейчас return "" не обязательно, return для того чтобы сразу отправить ответ в телеграм, напримерsmoker_vvo писал(а):И еще один вопрос для понимания. Ранее вы писали
"По поводу
Code:
say('привет',5);
не хватает в конце return "";
бот воспринимает это как ошибка, и высылает ответ что ошибка
предполагалось, что результатом выполнения такой команды будет какой либо ответ
в ближайшей версии пересмотрю это поведение"
что означает - return "";
Код: Выделить всё
sg("relay.on",0);
return ("Включено");
спасибо, за багрепортskysilver писал(а):Поставил модуль. Потестил. По итогу есть следующие наблюдения.
1. Если в настройках учеток Телеграм не указать пользователя Мажордомо и дать право получать системную историю (чат Алисы), то сообщения приходить не будут. Пришлось заводить пользователей в Мажородомо. Сначала думал, что баг, но, видимо, это все-таки фича. ))
2. Для проигрывания голосовых сообщений нужны кодеки OGG. Иначе mplayer вывалит ошибку:А вот где этот кодек взять большой вопрос. Пробовал даже под виндой проиграть эти файлы в VLC и AIMP - ничего не вышло. ((Код: Выделить всё
[ogg @ 0xb667c558]Codec not found LAVF_header: av_open_input_stream() failed Ogg stream 0 is of an unknown type
3. Никак не смог заставить произносить фразы отправленные боту через обработчик метода ThisComputer.commandReceived. Т.е. пишем боту "скажи Привет" или "повтори Привет", команда отображается в чате Алисы от имени пользователя, но не выполняется. При этом в debmes видима на вкладке Methods в XRay видно, что метод commandReceived даже не вызывался. При все при этом команда выполнится, если отправить ее в чат Алисы через веб-интерфейс Мажордомо. С шаблонами поведения проблем нет.Код: Выделить всё
DEBUG [root]: External context response: a:1:{s:15:"MATCHED_CONTEXT";i:0;} (at /var/www/lib/general.class.php:432)
4. Функция $telegram_module->sendMessageToAll("test message to all"); выдает ошибкуНадо в файле в функции sendMessageTo($where, $message) сделать вместоКод: Выделить всё
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 SELECT * FROM tlg_user WHERE
например такКод: Выделить всё
if ($query) $query = $query." WHERE ".$where;
C sendImageToAll аналогично.Код: Выделить всё
if ($where != "") $query = $query." WHERE ".$where;
1. да нужна привязка к пользователю, чтобы пользователю не отправлялось то что он отправил, кроме этого если несколько пользователей, то в чате будет видно кто что писал
2. странно, но vlc под виндой у меня открыло голосовое сообщение, и в linux mplayer тоже справился
3. видимо срабатывает какой-то шаблон
4. исправлю
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!

-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1750 раз
- Контактная информация:
Re: Модуль "Telegram"
Проверял все шаблоны поведения, даже в БД искал (мало ли хвосты какие остались, которых в админке не видно) - ничего такого, что могло сработать на "скажи|повтори" нет. Но это не критичный момент, вполне можно и без commandReceived обойтись, реализовав все на шаблонах поведения.Eraser писал(а):3. видимо срабатывает какой-то шаблон
Вопрос по функционалу. Есть ли возможность в коде команд и шаблонов поведения получить ID пользователя, который сформировал запрос на команду (шаблон)?
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 868 раз
- Контактная информация:
Re: Модуль "Telegram"
в коде команды можно получить ID пользователя $chat_id, ну а дальше передать параметром куда надоskysilver писал(а):Проверял все шаблоны поведения, даже в БД искал (мало ли хвосты какие остались, которых в админке не видно) - ничего такого, что могло сработать на "скажи|повтори" нет. Но это не критичный момент, вполне можно и без commandReceived обойтись, реализовав все на шаблонах поведения.Eraser писал(а):3. видимо срабатывает какой-то шаблон
Вопрос по функционалу. Есть ли возможность в коде команд и шаблонов поведения получить ID пользователя, который сформировал запрос на команду (шаблон)?
Например, кусок кода из команды которая отправляет снимок с камеры
Код: Выделить всё
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToUser($chat_id,$img);
- Рейтинг: 1.18%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!

-
- Сообщения: 3006
- Зарегистрирован: Чт авг 21, 2014 8:28 am
- Откуда: Киров, Россия
- Благодарил (а): 400 раз
- Поблагодарили: 1750 раз
- Контактная информация:
Re: Модуль "Telegram"
Отлично! То, что надо.Eraser писал(а):в коде команды можно получить ID пользователя $chat_id, ну а дальше передать параметром куда надо
Предлагаю вынести нюансы заполнения настроек модуля и все возможные параметры, передаваемые командам и шаблонам, на вкладку Помощь модуля.

MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Мой CONNECT | Блоги | Telegram
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 868 раз
- Контактная информация:
Re: Модуль "Telegram"
Как раз планирую этим занятсяskysilver писал(а):Предлагаю вынести нюансы заполнения настроек модуля и все возможные параметры, передаваемые командам и шаблонам, на вкладку Помощь модуля.

Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!

-
- Сообщения: 113
- Зарегистрирован: Пт дек 14, 2012 3:46 am
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 868 раз
- Контактная информация:
Re: Модуль "Telegram"
Дополнил help
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!

- Eraser
- Сообщения: 1085
- Зарегистрирован: Вт окт 21, 2014 7:31 pm
- Откуда: Киров
- Благодарил (а): 14 раз
- Поблагодарили: 868 раз
- Контактная информация:
Re: Модуль "Telegram"
Обновление
1. Добавлена возможность скрытия команд из клавиатуры, при этом команда выполняется, если ее набирают вручную
Скрытие можно привязать значению свойства какого либо объекта
2. Формирование своей клавиатуры
1. Добавлена возможность скрытия команд из клавиатуры, при этом команда выполняется, если ее набирают вручную
Скрытие можно привязать значению свойства какого либо объекта
2. Формирование своей клавиатуры
Код: Выделить всё
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$option = array( array("A", "B","C"), array("D", "E") );
$telegram_module = new telegram();
$telegram_module->sendMessageToUser($chat_id,"Select option",$option);
- Рейтинг: 2.35%
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!!
