вторник, 6 апреля 2021 г.

Обмен сообщениями между смартом и компьютером

Это такая небольшая статья, которая показывает как можно организовать обмен информацией между компьютером и своим телефоном. Бывает сидишь в телефоне, увидел интересную статью и было бы интересно ее прочитать на компьютере, но как отправить ее на комп? В данном случае всего-то делов отправить ссылку, но как это сделать максимально удобно и без лишних телодвижений? 

Я считаю что  у меня это получилось неплохо - еще давно я сделал себе бота в телеграм которого наделил нужными мне функциями и теперь этот бот может еще и присылать мне сообщения отправленные из компьютера, или наоборот записывать нужную информацию на компьютер, путем отправки ему сообщения в личку. Смысл в том, что все это делается в пару кликов: например сидя за компом и читая статью, можно отправить ссылку этой страницы себе в личку, просто щелкнув на букмарклет. Например есть такой код, который отправляет текущую страницу:

javascript:var xhr = new XMLHttpRequest();xhr.open('GET', 'https://api.telegram.org/botTOKEN/sendMessage?chat_id=YourID&text='+location.href, false);xhr.send();alert( xhr.responseText );

Выше есть ссылка чтобы сгенерировать букмарклет в виде ссылки, либо тупо скопировать и вставить новую закладку. Передача выделенного текста на странице осуществляется вот так:

javascript:selected=window.getSelection();var xhr=new XMLHttpRequest();xhr.open('GET', 'https://api.telegram.org/botTOKEN/sendMessage?chat_id=YourID&text='+encodeURIComponent(selected), false);xhr.send();alert( xhr.responseText );

Такой функционал сделать было очень просто, куда сложнее было отправлять сообщения из телеги в компьютер. Для этого я решил сделать личную страницу с таблицей, которая показывает принятые сообщения от бота - для этого используется php и MySQL. Так как бот уже был готов и хостился на бесплатном хостинге Heroku.com то оставалось только подключить к этому хостингу базу MySQL (что оказалось довольно просто), добавить к боту распознавание сообщения которой пишется в базу данных, а затем при обращении по известному мне адресу генерируется таблица со всему значениями из базы данных, где можно видеть все что отправлялось мною боту из телеграма.

Тут код на php довольно простой:
if ($chatId== myId){
$link = mysqli_connect('host', 'username', 'password','dbname');
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$result = mysqli_query($link,"INSERT INTO table_name (saved_data,mark) VALUES ('".$message."','');");
file_get_contents($path."/sendmessage?chat_id=myId&text=".date("d M H:i:s")." Записано.");
mysqli_close($link);
}

Собственно основная проблема была найти бесплатный хостинг базы данных, но выяснилось что в Heroku это есть и хорошо работает

PS просто чтобы было. Еще один букмарклет похожего плана, который выводит информацию о вашем IP используя специализированный API сервис:
javascript:var xhr = new XMLHttpRequest();xhr.open('GET', 'https://api.myip.com/',false); xhr.responseType = 'json';xhr.send();alert(JSON.parse(xhr.response).ip);

Комментариев нет:

Отправить комментарий