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

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

Модератор: immortal

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

Re: Модуль "Telegram"

Сообщение Eraser » Ср июл 19, 2017 8:00 am

ErgoZ писал(а):странная ситуация. При использовании веб хука работает отправка сообщений в телеграм от Алисы, то есть пишет каждый час время. Но на команды не реагирует, стоит отключить веб хуки и сразу начинают работать команды. Очень странная фигня, кто знает как побороть?
что пишет при запросе статуса webhook, после отправки команды боту?
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Модуль "Telegram"

Сообщение skysilver » Ср июл 19, 2017 9:21 am

ErgoZ писал(а):странная ситуация. При использовании веб хука работает отправка сообщений в телеграм от Алисы, то есть пишет каждый час время. Но на команды не реагирует, стоит отключить веб хуки и сразу начинают работать команды. Очень странная фигня, кто знает как побороть?
А порт на ваш сервер снаружи открыт? Поди серваки телеграмма не могут достучаться до вашего сервера.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
djleon
Сообщения: 36
Зарегистрирован: Ср янв 04, 2017 7:37 pm
Откуда: Россия, Курск
Благодарил (а): 10 раз
Поблагодарили: 4 раза

Re: Модуль "Telegram"

Сообщение djleon » Ср июл 26, 2017 12:02 am

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

Re: Модуль "Telegram"

Сообщение Eraser » Ср июл 26, 2017 7:58 am

djleon писал(а):Приветствую. Как правильно настроить проигрывание полученного файла?
Синтаксис не особо понятен. а именно как узнать путь к полученному файлу
нужно включить опцию "Играть голос" для того от кого приходит голосовое сообщение
или
создать событие "Голосовое сообщение" с кодом

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

playSound($file_path); 
Connect ---- Telegram
ЮMoney для благодарностей за помощь: 410012076838296 или нажмите кнопку "Спасибо"!!! :D
Аватара пользователя
Gelezako
Сообщения: 963
Зарегистрирован: Чт июн 02, 2016 9:33 pm
Благодарил (а): 205 раз
Поблагодарили: 106 раз
Контактная информация:

Re: Модуль "Telegram"

Сообщение Gelezako » Пт июл 28, 2017 3:47 pm

хельп, из самого МЖД сообщения приходят, а вот когда я пишу из телеграм, то в МЖД реакции нет. У меня есть созданный шаблон поведения и я ожидаю что он будет просто проговаривать фразу, но этого не происходит. Если вписать её в самом МЖД, то всё работает. Подскажите куда копать? спасибо
фанат Мажордомо
тематический блог http://blog.gelezako.com
плейлист про Мажордомо на ютубе https://www.youtube.com/playlist?list=P ... EdBGtX084E
mdsaw
Сообщения: 3
Зарегистрирован: Чт авг 03, 2017 10:58 pm
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Модуль "Telegram"

Сообщение mdsaw » Чт авг 03, 2017 11:59 pm

Вот решил поделиться многострадальным решением, для тех у кого полноценное видеонаблюдение и Telegram, было поднято на камерах Dahua HFW1320S, IPC-K15A, HFW1220S , и пару NONAME. Все по протокол rtsp
Обновите FFMPEG , был глюк , крошило поливну картинки , обновил, стало и быстрее и картинка норм.
Подобное решение есть уже , но там HTTP , без авторизации , и у камеры есть снапшот , то-есть ХТТП://ip:port/ бла/снапшот.JPG
и авторизация по HTTP не прокатила . я там не хрена не понял.
ffmpeg нужно добавить в PATH (Переменная среды Windows ),

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

// получаем картинку 
$url="rtsp://admin:pass@ip:554/live";  
$jpg="C:/_majordomo/htdocs/cached/img/snapshot.jpg";
exec('ffmpeg -y -i '.$url.' -r 10 -f image2 -ss 00:00:02.500 -vframes 1 '.$jpg.'');
// отправляем картинку в телеграмм
include_once(DIR_MODULES . 'telegram/telegram.class.php');
$telegram_module = new telegram();
$telegram_module->sendImageToUser(1111111111,$jpg);
//////или админам 
$telegram_module->sendImageToAdmin($jpg);
 
За это сообщение автора mdsaw поблагодарил:
Keen Lizard (Вт ноя 13, 2018 9:32 am)
Рейтинг: 1.16%
Sasha95
Сообщения: 57
Зарегистрирован: Ср авг 02, 2017 10:16 pm
Благодарил (а): 17 раз
Поблагодарили: 1 раз

Re: Модуль "Telegram"

Сообщение Sasha95 » Ср авг 09, 2017 9:54 pm

Я создал бота в телеграмме, вставил API key в настройках телеграмма в мажордомо и по идее мне должно оповещение типа "поздравляю ...", но ничего не приходит и н епоявляется нового пользователя в списке мажордомо (в программе Telegram кнопочку Start нажал)
Catalyst
Сообщения: 34
Зарегистрирован: Сб фев 25, 2017 4:12 pm
Благодарил (а): 4 раза
Поблагодарили: 6 раз

Re: Модуль "Telegram"

Сообщение Catalyst » Пт авг 18, 2017 10:10 pm

Всем привет!
Не могу понять что я делаю не так, хочу сделать меню, вставил уже созданное с форума:
СпойлерПоказать

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

$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 > -2) {
    $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 > -2) {
    $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 > -2) {
    $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 > -2) {
    $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;
}
 
меню отображает, но дальше одного уровня не пускает, при выборе любого подменю, например Свет, ругается что Неизвестная команда...

что я не так понимаю, кто-то может знает ?
Вложения
Снимок экрана 2017-08-18 в 22.01.36.png
Снимок экрана 2017-08-18 в 22.01.36.png (91.1 КБ) 9300 просмотров
Снимок экрана 2017-08-18 в 22.01.47.png
Снимок экрана 2017-08-18 в 22.01.47.png (88.95 КБ) 9300 просмотров
Снимок экрана 2017-08-18 в 22.06.18.png
Снимок экрана 2017-08-18 в 22.06.18.png (111.26 КБ) 9300 просмотров
chip
Сообщения: 158
Зарегистрирован: Пн ноя 09, 2015 11:03 pm
Благодарил (а): 43 раза
Поблагодарили: 7 раз

Re: Модуль "Telegram"

Сообщение chip » Пн авг 28, 2017 8:50 pm

Уважаемый Eraser,

благодарю за очень удобный плагин. Сегодня после лагов на серверах телеграмма (часов с 3 и до 15-16 были жуткие лаги и сообщения с мажордомо и обратно уходили минут по 10) перестали отображаться "команды" созданные в плагине (доп. клавиатура). Уже и заново подключал пользователей, и переустанавливал бота на клиентах, и создавал комманды заново - не отображается и всё.

Помогите, пожалуйста, советом, как пофиксить сие дело.

ЗЫ сообщения отправляются в обе стороны без задержек, но кнопок команд нет(

Спасибо
chip
Сообщения: 158
Зарегистрирован: Пн ноя 09, 2015 11:03 pm
Благодарил (а): 43 раза
Поблагодарили: 7 раз

Re: Модуль "Telegram"

Сообщение chip » Пн авг 28, 2017 9:10 pm

UPD После того как вручную выбрал пользователей которым доступны команды, а не как раньше "доступно только администраторам" - все команды появились в клиентах.

Спасибо
Ответить