SmartLiving.ru

Обсуждение проекта
 
Текущее время: Сб авг 19, 2017 12:16 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 508 ]  На страницу Пред.  1 ... 37, 38, 39, 40, 41, 42, 43 ... 51  След.
Автор Сообщение
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Вт ноя 22, 2016 11:36 pm 
Не в сети

Зарегистрирован: Вт июл 12, 2016 6:16 pm
Сообщения: 144
Благодарил (а): 1 раз.
Поблагодарили: 5 раз.
Это не совсем то.
Спрашиваю я у системы через телеграм какая погода/температура/уровень воды в унитазе и она отвечает всем, а например хотелось бы иметь возможность ответить только спросившему. Функцию сей странно пилят. Сделали возможность отвечать на терминал с которого пришел запрос, но не сделали возможность отвечать только пользовател ю сделавшему запрос.
Система вроде как многопользовательская, но чтобы этого добиться приходится костылить
Можно применить костыль и записывать айди спросившего пользователя в переменную чтобы потом ее отлавливать и отправлять ему ответ.
Мне видится так: пришел запрос из телеграмма, обрабатываем и отправляем обратно по этому же айди.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Ср ноя 23, 2016 7:33 am 
Не в сети

Зарегистрирован: Пт дек 14, 2012 12:24 pm
Сообщения: 1144
Откуда: Россия, Нижняя Тура
Благодарил (а): 333 раз.
Поблагодарили: 71 раз.
Можно создать команду в телеграмке и ответ будет лишь тому, кто её ткнул на выполнение

_________________
Алиска живёт на Ubuntu Server 14.04.3 LTS
connect, группа в Telegram, Яндекс.Деньги для благодарностей за помощь: 41001355945165


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Ср ноя 23, 2016 7:59 pm 
Не в сети

Зарегистрирован: Вт июл 12, 2016 6:16 pm
Сообщения: 144
Благодарил (а): 1 раз.
Поблагодарили: 5 раз.
Да можно и шаблоны писать с учетом, но это костыли:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Сб ноя 26, 2016 12:33 pm 
Не в сети

Зарегистрирован: Чт фев 06, 2014 9:56 pm
Сообщения: 22
Благодарил (а): 8 раз.
Поблагодарили: 2 раз.
skysilver писал(а):
С emoji на кнопках и размещением их на кнопках разобрался.

Как ставить emoji на кнопки?
И как вы создаете вложенные меню на кнопках? :roll: :?:

_________________
Banana PI (Debian Jessie 8.0) + Arduino + esp8266


Последний раз редактировалось Fantom Сб ноя 26, 2016 1:06 pm, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Сб ноя 26, 2016 12:53 pm 
Не в сети

Зарегистрирован: Вс фев 28, 2016 8:11 am
Сообщения: 17
Благодарил (а): 1 раз.
Поблагодарили: 2 раз.
Обновил телеграмм.. сейчас не работает передача сообщение из общего чата в телеграмм... команды работают..
Вернее с истории все ок.. проблема в следующим.. если сработал шаблон поведения и в ней есть ответ в общий чат (Например шаблоне поведение есть команда Sаy('Тук. Тук',0)) .. то в телеграмм данное сообщение не приходит.. А в общем чате Алиса пишет! Грубо говоря если в общем чате написать "Привет", то в телеграмм приходит ответ "Привет меня зовут, Алиса", а если в телегамме написать "Привет", то в ответ телеграмм ответ не приходит.. (в общем чате все ок)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Сб ноя 26, 2016 3:30 pm 
Не в сети

Зарегистрирован: Чт авг 21, 2014 8:28 am
Сообщения: 387
Откуда: Киров, Россия
Благодарил (а): 122 раз.
Поблагодарили: 137 раз.
Fantom писал(а):
Как ставить emoji на кнопки?
И как вы создаете вложенные меню на кнопках? :roll: :?:
Использую функционал обработки событий. Тут уже были примеры формирования клавиатуры на основе обработки событий от пользователя. По сути у меня на вкладке Команды имеется только одна видимая команда "Меню" с пустым кодом. А на вкладке События есть одно событие "messageHook" (тип Текстовое сообщение), которое и формирует динамическую клавиатуру. Вот код этого обработчика:
[Показать] Скрытый текст:
Код:
$this->sendAction($chat_id, "typing");

$em_l = json_decode('"'.'\ud83d\udca1'.'"');
$em_k = json_decode('"'.'\ud83d\udcac'.'"');
$em_n = json_decode('"'.'\u21a9\ufe0f'.'"');
$em_c = json_decode('"'.'\ud83d\udcf8'.'"');
$em_i = json_decode('"'.'\ud83d\udee0'.'"');
$em_s = json_decode('"'.'\u2699'.'"');
$em_g = json_decode('"'.'\ud83c\udf21'.'"');
$em_p = json_decode('"'.'\ud83c\udf24'.'"');
$em_o = json_decode('"'.'\ud83d\udcdd'.'"');
$off  = json_decode('"'.'\ud83c\udf11'.'"');
$on   = json_decode('"'.'\ud83c\udf15'.'"');
$em_rd = json_decode('"'.'\ud83d\udc47'.'"');
$em_cam = json_decode('"'.'\ud83c\udfa5'.'"');
$em_kuh = json_decode('"'.'\ud83c\udfa5 \ud83c\udf7d'.'"'); //\ud83c\udf7d
$em_kom = json_decode('"'.'\ud83c\udfa5 \ud83d\udecb'.'"'); //\ud83d\udecb

$pos = strripos($text , "Меню");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
     $option = array( array($em_l." Свет", $em_c." Камеры"), array($em_p." Погода", $em_g." Климат"), array($em_o." Отчеты", $em_s." Служебное"));
     $this->sendMessageToUser($chat_id, $em_k." Выберите нужный пункт ".$em_rd, $option);
     $skip = true;
}

$pos = strripos($text , "Погода");
if ($pos > -1) {
     $this->sendAction($chat_id, "typing");
    $option = array( array($em_l." Свет", $em_c." Камеры"), array($em_p." Погода", $em_g." Климат"), array($em_o." Отчеты", $em_s." Служебное"));
    $this->sendMessageToUser($chat_id, gg('Kirov.Metcast'), $option);
     $skip = true;
}

$pos = strripos($text , "Климат");
if ($pos > -1) {
     $this->sendAction($chat_id, "typing");
    $option = array( array($em_l." Свет", $em_c." Камеры"), array($em_p." Погода", $em_g." Климат"), array($em_o." Отчеты", $em_s." Служебное"));
    $climat = "Температура ".gg('ThisComputer.RoomTemp')." С. Относительная влажность ".gg('ThisComputer.RoomHumidity')." %. Атмосферное давление ".gg('Kirov.Pressure')." мм.рт.ст.";
     $this->sendMessageToUser($chat_id, $climat, $option);
    $skip = true; 
}

$pos = strripos($text , "Свет");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
 
     if 
(gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;

     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Кухня");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
 
     cm
("Relay1MegaD1.switch");

     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;

     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Прихожая");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
     
     cm
("Relay2MegaD2.switch");
     //$this->sendMessageToUser($chat_id, $em_l." Метод света в прихожей");

     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;

     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Комната");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
     
     cm
("Relay1MegaD2.switch");
     //$this->sendMessageToUser($chat_id, $em_l." Метод света в комнате");

     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;

     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Подсветка");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");    
     
     cm
("SID701_Ch1.switch");
     //$this->sendMessageToUser($chat_id, $em_l." Метод подсветки в шкафу");

     if (gg("Relay1MegaD1.status") == 1) $ks = $on; else $ks = $off;
    if (gg("Relay2MegaD2.status") == 1) $ps = $on; else $ps = $off;
     if (gg("Relay1MegaD2.status") == 1) $rs = $on; else $rs = $off;
    if (gg("SID701_Ch1.status") == 1) $ds = $on; else $ds = $off;

     $option = array( array($ks." Кухня", $ps." Прихожая"), array($rs." Комната", $ds." Подсветка"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_k." Можно включать и выключать свет:", $option);
     $skip = true;
}

$pos = strripos($text , "Камеры");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
      $option = array( array($em_kuh." Web-cam 1", $em_kom." Web-cam 2"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_cam." Можно получить фото с камеры видеонаблюдения", $option);
     $skip = true;
}

$pos = strripos($text , "Web-cam 1");
if ($pos > -1) {
    $this->sendAction($chat_id, "upload_photo");
     if ( gg('webcam_1.status') != 1 ) {
         if ( gg('minMsgLevel') == 1 ) sg('minMsgLevel', '2');    
         cm
('webcam_1.turnOn');
        setTimeOut('startSendPhotoScript', 'runScript("sendPhoto", array("chat_id"=>'.$chat_id.'));', 3); 
         DebMes
('Get Photo from ID ' . $chat_id);
         setTimeOut('webCamOff', 'cm("webcam_1.turnOff");if ( gg("minMsgLevel") == 2 ) sg("minMsgLevel", "1");', 10);    
     
} else {
         runScript('sendPhoto', array('chat_id'=>$chat_id));
    }
     $skip = true;
      //$option = array( array($em_kuh." Web-cam 1", $em_kom." Web-cam 2"), array("Меню") );
     //$this->sendMessageToUser($chat_id, $em_cam." Можно получить фото с камеры видеонаблюдения", $option);
}

$pos = strripos($text , "Web-cam 2");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
     $option = array( array($em_kuh." Web-cam 1", $em_kom." Web-cam 2"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_cam." Камера в комнате не работает", $option);
     $skip = true;
}

$pos = strripos($text , "Служебное");
if ($pos > -1) {
    $this->sendAction($chat_id, "typing");
      $option = array( array("IP", "Ping"), array("Меню") );
     $this->sendMessageToUser($chat_id, $em_i." Служебные сведения", $option);
     $skip = true;
}

//Для того чтобы после обработки кода в событии прекратить дальнейшую обработку команд и шаблонов, надо в коде задать значение переменной $skip=true;
//$skip = true;

/*
    // \ud83d\udca1 лампочка
    // \ud83d\udcac комментарий
    // \u21a9\ufe0f    назад
    // \ud83d\udcf8    камера
    // \ud83d\udee0    инструменты
    // \u2699        шестеренка
    // \ud83c\udf21    градусник
    // \ud83c\udf24    погода
    // \ud83d\udcdd    отчеты
    // \ud83d\udc47 рука вниз
    // \ud83c\udf24 камера
    // \u041f\u043e\u0433 диван
    // \u043e\u0434\u0430 тарелка-ложки
*/

В коде также видно, как вставлять emoji в названия кнопок, и приведены UTF-коды использованных мною emoji.
Чтобы узнать UTF-коды emoji, пришлось в webhook_telegram.php добавить пару строчек для лога "сырых" сообщений от сервера Телеграм. При этом, если боту отправить какой-нить смайлик в чате, то в логе отобразится нужный UTF-код. Проще способа узнать этот код не нашел. ))

_________________
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Вс ноя 27, 2016 11:14 pm 
Не в сети

Зарегистрирован: Чт фев 06, 2014 9:56 pm
Сообщения: 22
Благодарил (а): 8 раз.
Поблагодарили: 2 раз.
Подскажите как такую ссылку создать?


Вложения:
Снимок.PNG
Снимок.PNG [ 76.77 КБ | Просмотров: 2426 ]

_________________
Banana PI (Debian Jessie 8.0) + Arduino + esp8266
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Пн ноя 28, 2016 7:59 am 
Не в сети
Аватара пользователя

Зарегистрирован: Вт окт 21, 2014 7:31 pm
Сообщения: 347
Откуда: Киров
Благодарил (а): 10 раз.
Поблагодарили: 147 раз.
Fantom писал(а):
Подскажите как такую ссылку создать?

Код:
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$option = array( 
                array
($telegram_module ->buildInlineKeyboardButton("Url1", $url="http://majordomo.smartliving.ru/")),
                array($telegram_module ->buildInlineKeyboardButton("Url2", $url="http://majordomo.smartliving.ru/")),
                array($telegram_module ->buildInlineKeyboardButton("Url3", $url="http://majordomo.smartliving.ru/"))
);
$keyb = $telegram_module ->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Press button", 'reply_markup' => $keyb);
$telegram_module->sendContent($content); 

_________________
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Пн ноя 28, 2016 7:50 pm 
Не в сети

Зарегистрирован: Чт фев 06, 2014 9:56 pm
Сообщения: 22
Благодарил (а): 8 раз.
Поблагодарили: 2 раз.
Eraser писал(а):
[Показать] Скрытый текст:
Код:
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$option = array( 
                array
($telegram_module ->buildInlineKeyboardButton("Url1", $url="http://majordomo.smartliving.ru/")),
                array($telegram_module ->buildInlineKeyboardButton("Url2", $url="http://majordomo.smartliving.ru/")),
                array($telegram_module ->buildInlineKeyboardButton("Url3", $url="http://majordomo.smartliving.ru/"))
);
$keyb = $telegram_module ->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Press button", 'reply_markup' => $keyb);
$telegram_module->sendContent($content); 

Спасибо. На команду удалось повесить ссылки а как допустим пользователю или в канал отправить так же ссылки? Пробовал вместо $chat_id прописывать id пользователя или канала, не выходит :(

_________________
Banana PI (Debian Jessie 8.0) + Arduino + esp8266


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Модуль "Telegram"
СообщениеДобавлено: Пн ноя 28, 2016 9:48 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт окт 21, 2014 7:31 pm
Сообщения: 347
Откуда: Киров
Благодарил (а): 10 раз.
Поблагодарили: 147 раз.
Fantom писал(а):
Eraser писал(а):
[Показать] Скрытый текст:
Код:
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$option = array( 
                array
($telegram_module ->buildInlineKeyboardButton("Url1", $url="http://majordomo.smartliving.ru/")),
                array($telegram_module ->buildInlineKeyboardButton("Url2", $url="http://majordomo.smartliving.ru/")),
                array($telegram_module ->buildInlineKeyboardButton("Url3", $url="http://majordomo.smartliving.ru/"))
);
$keyb = $telegram_module ->buildInlineKeyBoard($option);
$content = array('chat_id' => $chat_id, 'text' => "Press button", 'reply_markup' => $keyb);
$telegram_module->sendContent($content);

Спасибо. На команду удалось повесить ссылки а как допустим пользователю или в канал отправить так же ссылки? Пробовал вместо $chat_id прописывать id пользователя или канала, не выходит :(


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

_________________
Connect ---- Telegram
Яндекс.Деньги для благодарностей за помощь: 410012076838296


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 508 ]  На страницу Пред.  1 ... 37, 38, 39, 40, 41, 42, 43 ... 51  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB