NEWS
Драйвер Telegram Adapter
- 
					
					
					
					
 По моему, ошибка закралась в описание адаптера: "Telegram Adapter Драйвер позволяет подключатся к telegram брокерам, а также самому выступать в роли брокера" 
- 
					
					
					
					
 Поигрался с командами, добавил боту и начал разбираться как подружить с text2command, вот тут то и "вылезла" загвоздка. Бот принимает команду как есть, то есть в логе она так и появляется "/temp", в text2comand "/" является разделителем и соответственно он не воспринимает команду, а только ругается что понял "/temp" и не может вывести запрограммированную переменную. Вопрос к Bluefox, вы не предусмотрите экранирование / в text2command? Или чтоб воспользоваться возможностями команд, надо самому анализировать приходящие сообщения? 
- 
					
					
					
					
 А зачем экранирование? И без него отлично драйвер text2Command воспринимает команду.. 
- 
					
					
					
					
 Странно, у меня не захотел воспринимать. Создаю команду: Спросить о чем-нибудь, ключевые слова "температура на кухне/temp_kitchen" в телеграм шлю запрограммированную команду "/temp_kitchen" на что получаю ответ "Я поняла только "/temp_kitchen"" Может я что-то не так делаю? В логе принятое сообщение выглядит "/temp_kitchen" 
- 
					
					
					
					
 Странно, у меня не захотел воспринимать. Создаю команду: Спросить о чем-нибудь, ключевые слова "температура на кухне/temp_kitchen" в телеграм шлю запрограммированную команду "/temp_kitchen" на что получаю ответ "Я поняла только "/temp_kitchen"" Может я что-то не так делаю? В логе принятое сообщение выглядит "/temp_kitchen" ` 
 Пиши без слешаПишу с пульта…. 
- 
					
					
					
					
 Так как в jira нет данного проекта, пишу тут. Не отправляются сообщения определенному юзеру. sendTo('telegram', '@userName Test message')@userName - указываю из телеграм, не шлет, если указать без @ то шлет всем и первым словом ставит username, если указывать имя которое драйвер у себя хранит, то не отправляется ни с @, ни без. Если слать через sendTo('telegram', {user: 'UserName', text: 'Test message'});то опять же надо указывать не username, а имя пользователя, который драйвер у себя хранит. 
- 
					
					
					
					
 Никто не сталкивался с тем, что Телеграм тихо умирает? Просто перестает отвечать на запросы, и обрабатывает их после ручной перезагрузки драйвера. В логе в режиме отладки при этом вообще никаких сообщений. 
- 
					
					
					
					
 @Ho Hum:Никто не сталкивался с тем, что Телеграм тихо умирает? Просто перестает отвечать на запросы, и обрабатывает их после ручной перезагрузки драйвера. В логе в режиме отладки при этом вообще никаких сообщений. ` 
 ну видимо умирает что то другое, у меня норм работает, кто отвечает то? Какой скрипт?
- 
					
					
					
					
 Скрипта, собственно и нет. Все пока сделано через настройки text2command. В какой-то момент бот перестает отвечать на команды. После перезагрузки драйвера Телеграм сразу говорит, что стартовал, и что команды (те, на которые не отвечал) не выполнены, ту устарели. 
- 
					
					
					
					
 2Bluefox а ты не ковырял апи телеграм бота в сторону инлайн довольно симпатично смотрятся менюшки и кнопки в чате !  <link_text text="https://habrastorage.org/files/94f/505/ ... a77396.png">https://habrastorage.org/files/94f/505/b74/94f505b74712445a9082b33828a77396.png</link_text>" />
- 
					
					
					
					
 поэкспериментировал с драйвером получились кнопочки при старте ! } else { 
 ! adapter.log.debug('Send message to "' + name + '": ' + text);
 ! options = {
 ! reply_markup: JSON.stringify({
 ! one_time_keyboard: true,
 ! keyboard: [['test'],['test1'],['test2'],['test3'],['test4']]
 ! })
 ! }
 ! if (bot) bot.sendMessage(dest, text, options).then(function () {
 ! adapter.log.debug('Message sent');
 ! }, function (error) {
 ! adapter.log.error('Cannot send message: ' + error);
 ! });
 ! }
- 
					
					
					
					
 Доброго времени суток. Установил драйвер телеграмм по инструкции. Но столкнулся с следующей проблемой. При отправки сообщений боту, в ответ приходит "Сообщение проигнорировано: /текст сообщения/ При этом в логах появляется следующие !  
 В состояние объекта не появляется ни каких изменений!  
 При попытке отправлять сообщение через драйвер из скриптов, тоже глухоК боту подключается. И сами настройки !  
  
- 
					
					
					
					
 Доброго времени суток. Установил драйвер телеграмм по инструкции. Но столкнулся с следующей проблемой. При отправки сообщений боту, в ответ приходит "Сообщение проигнорировано: /текст сообщения/ При этом в логах появляется следующие ! 1.PNG 
 В состояние объекта не появляется ни каких изменений! 2.PNG 
 При попытке отправлять сообщение через драйвер из скриптов, тоже глухоК боту подключается. И сами настройки ! 3.PNG 
 ! 4.PNG `
 А системное время правильное?
- 
					
					
					
					
 создал скрипт для работы с кнопками в телеграмм, но не могу найти как можно отловить нажатие кнопки. Может кто уже делал? ! var chatname = '[Ник]'; 
 ! var idTelegramRequest = "telegram.0.communicate.request";
 ! function Klava_4() {
 ! sendTo('telegram.0', { text: 'Тестовая кнопка',
 ! parse_mode: 'markdown',
 ! disable_web_page_preview: false,
 ! reply_markup: JSON.stringify({
 ! inline_keyboard: [
 ! [{ text: 'Knopka', callback_data: 'Test menu' }]]
 ! }) }); }
 ! on(idTelegramRequest, function (obj) {
 ! // Вход*********************************************************************
 ! if (obj.state.val == chatname + "Вход" || obj.state.val == chatname + "/Вход")
 ! {
 ! Klava_4();
 ! }
 ! }
 ! );
- 
					
					
					
					
 Подпишись: ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { command = obj.state.val.substring(obj.state.val.indexOf(']')+1); user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']')); prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1); }); !
 И смотри что у тебя в command.
- 
					
					
					
					
 Подпишись: ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { command = obj.state.val.substring(obj.state.val.indexOf(']')+1); user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']')); prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1); }); !
 И смотри что у тебя в command. `Отловить нажатие кнопки не получилось. Он отлавливает только то, что я ему пишу. В моем скрипте хотелось бы чтобы он при нажатии на кнопку принимал следующее: callback_data: 'Test menu' и отрабатывал команду 'Test menu' Пока "ломаю" голову… 
- 
					
					
					
					
 Подпишись: ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { command = obj.state.val.substring(obj.state.val.indexOf(']')+1); user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']')); prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1); }); !
 И смотри что у тебя в command. `Отловить нажатие кнопки не получилось. Он отлавливает только то, что я ему пишу. В моем скрипте хотелось бы чтобы он при нажатии на кнопку принимал следующее: callback_data: 'Test menu' и отрабатывал команду 'Test menu' Пока "ломаю" голову… ` то есть то что ты пишешь? Я вот так использую. ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { log(obj.state.val); command = obj.state.val.substring(obj.state.val.indexOf(']')+1); user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']')); prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1); switch(command){ case 'включить': break; } }); !
 Клавиатуру шлю так:! sendTo('telegram.0', { user: user, text: 'Что необходимо сделать?', reply_markup: { keyboard: [ ['включить', 'выключить'], ['показать', 'заказы'], ['банк'], ], resize_keyboard: true, // one_time_keyboard: true } }); !
 И все отлично работает. Еще могу предположить что callback_data в драйвере не реализована, поэтому и не работает, точнее скажет только разработчик.
- 
					
					
					
					
 Подпишись: ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { command = obj.state.val.substring(obj.state.val.indexOf(']')+1); user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']')); prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1); }); !
 И смотри что у тебя в command. `Отловить нажатие кнопки не получилось. Он отлавливает только то, что я ему пишу. В моем скрипте хотелось бы чтобы он при нажатии на кнопку принимал следующее: callback_data: 'Test menu' и отрабатывал команду 'Test menu' Пока "ломаю" голову… ` то есть то что ты пишешь? Я вот так использую. ! on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) { log(obj.state.val); command = obj.state.val.substring(obj.state.val.indexOf(']')+1); user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']')); prev_command = obj.oldState.val.substring(obj.oldState.val.indexOf(']')+1); switch(command){ case 'включить': break; } }); !
 Клавиатуру шлю так:! sendTo('telegram.0', { user: user, text: 'Что необходимо сделать?', reply_markup: { keyboard: [ ['включить', 'выключить'], ['показать', 'заказы'], ['банк'], ], resize_keyboard: true, // one_time_keyboard: true } }); !
 И все отлично работает. Еще могу предположить что callback_data в драйвере не реализована, поэтому и не работает, точнее скажет только разработчик. `Да, с этой клавиатурой я работаю, но хотелось найти выход через callback_data. Возможно Вы и правы, что в драйвере не реализована данная функция. Спасибо за попытку помощи. Будем надеяться что может и эту функцию реализуют 
- 
					
					
					
					
 добрый день. поставил данный драйвер. прописал токен. пароль . режим - пуш. при запуске статус желтый. нет соединения с телеграм. в логах при перезапуске: telegram.0 2017-02-10 13:37:20.377 info starting. Version 1.0.2 in C:/ioBroker/node_modules/iobroker.telegram, node: v7.5.0 host.majordomo 2017-02-10 13:37:15.867 info instance system.adapter.telegram.0 started with pid 1556 host.majordomo 2017-02-10 13:37:13.355 info instance system.adapter.telegram.0 terminated with code null () host.majordomo 2017-02-10 13:37:13.355 warn instance system.adapter.telegram.0 terminated due to SIGTERM host.majordomo 2017-02-10 13:37:13.308 info stopInstance system.adapter.telegram.0 killing pid 3308 host.majordomo 2017-02-10 13:37:13.308 info stopInstance system.adapter.telegram.0 host.majordomo 2017-02-10 13:37:13.293 info object change system.adapter.telegram.0 и висит бесконечно долго. интернет конечно присутвует. и никак на выход не ограничен 
- 
					
					
					
					
 Пример скрипта для inline кнопок ! ```` 
 on({id: "telegram.0.communicate.request", ack: false, change: 'any'}, function (obj) {
 //log(obj.state.val);
 command = obj.state.val.substring(obj.state.val.indexOf(']')+1);
 user = obj.state.val.substring(obj.state.val.indexOf('[')+1,obj.state.val.indexOf(']'));if (command ==="меню") { // ждем сообщение от пользователя "меню" sendTo('telegram', { user: user, text: 'Выберите кнопку', reply_markup: { inline_keyboard: [ [{ text: '\u{2714} Button 1_1', callback_data: '1_1' }, { text: '\u{2705} Button 1_2', callback_data: '1_2' }], [{ text: 'Button 1_3', callback_data: '1_3' }], ], } }); } if (command ==="1_1") { // нажата кнопка Button 1_1 log("message_id = " + getState("telegram.0.communicate.requestMessageId").val); sendTo('telegram', { user: user, text: 'Замена кнопок', editMessageReplyMarkup: { options: { chat_id: getState("telegram.0.communicate.requestChatId").val, message_id: getState("telegram.0.communicate.requestMessageId").val }, reply_markup: { inline_keyboard: [ [{ text: 'button 1', callback_data: '2_1' }], [{ text: 'button 2', callback_data: '2_2' }] ], } } }); } if (command ==="1_2") { // нажата кнопка Button 1_2 log("message_id = " + getState("telegram.0.communicate.requestMessageId").val); sendTo('telegram', { user: user, text: 'Кнопка 1_2 нажата', answerCallbackQuery: { text: "Есть нажатие!", showAlert: false } }); } if (command ==="2_1") { // нажата кнопка Button 2_1 log("message_id = " + getState("telegram.0.communicate.requestMessageId").val); sendTo('telegram', {// user: user, 
 text: 'Назад',
 editMessageReplyMarkup: {
 options: {
 chat_id: getState("telegram.0.communicate.requestChatId").val,
 message_id: getState("telegram.0.communicate.requestMessageId").val
 },
 reply_markup: {
 inline_keyboard: [
 [{ text: '\u{2714} Button 1_1', callback_data: '1_1' }, { text: '\u{2705} Button 1_2', callback_data: '1_2' }],
 [{ text: 'Button 1_3', callback_data: '1_3' }],
 ],
 resize_keyboard: true,
 one_time_keyboard: true
 }
 }
 });
 }
 if (command ==="1_3") { // нажата кнопка Button 1_3
 sendTo('telegram', {
 user: user,
 text: 'Конец',
 editMessageText: {
 options: {
 chat_id: getState("telegram.0.communicate.requestChatId").val,
 message_id: getState("telegram.0.communicate.requestMessageId").val,
 }
 }
 });
 }
 });
 
		
	 
		
	