Post on 14-Apr-2017
Telegram Remote Control Bot
Цель
Основная цель – разработка ПО для управления ЭВМ по средствам мессенджера
Telegram.
ПО должно отвечать следующим свойствам:
• Надежность и стабильность
• Модульность
• Переносимость
• Функциональность
Почему Telegram?
Telegram был выбран сразу по нескольким причинам:
• Надежность и конфиденциальность
• Наличие клиентов почти под все мобильные платформы
• Open source
• Удобный API для создания ботов
• У ботов есть особые «перки», e.g. кастомные клавиатуры:
Для чего это все?
Для чего угодно. С помощью этого бота можно будет:
• сделать «умный дом»,
• создать систему мониторинга за местностью
• удаленно управлять своим компьютером.
Благодаря особенностям бота и Telegram, я хочу добиться
максимально возможного охвата направлений его применения.
Пример использования
Что сделано на данный момент?
TRC Bot разрабатывается на C++14 с использованием сторонних
Библиотек tgbot-cpp и nlohmann json.
На сегодняшний день бот поддерживает:
• Отправку текстовых сообщений
• Отправку фотографий
За счет чего это работает?
Действия достигаются за счет запуска указанных исполняемых файлов
(например Bash-скриптов).
RMC Bot Чтение JSON конфига
Token
Tasks
Task 1
Task 2
Task N
Пример: config.json
{"token":"224432852:AAG_Zz2qVsGgsEIG4W30GkP-7cIrVgC16sc","tasks":[{"taskName":"photo", //название команды "taskCmd":"/home/user/photo.sh", //путь до исполняемого файла"taskArgs":"/dev/video0", //аргумент, который принимает исполняемый файл"reactFrame":"!picture", //тип ответа пользователю"reactDataSrc":"!output„ //откуда берется ответ
}]
}
Пример: photo.sh
#!/bin/bash
FILE="/tmp/telegram/photo.jpg"
ffmpeg -y -loglevel quiet -f video4linux2 -i $1 -vframes 1 $FILEecho $FILE
ТестированиеПри тестировании с разными модулями (функционал которых
поддерживается) ошибок и проблем замечено не было.
Бот проработал без остановки два дня, при этом в любой момент
времени корректно обрабатывал приходящие на него запросы.
Что будет дальше?
• Поддержка передачи видео, аудио, etc.
• Более гибкие возможности для подключения модулей
• Обновление конфига в реальном времени
• Использование «перков» ботов Telegram
• Портирование на BeagleBone и Raspberry Pi
• Работа над повышением стабильности и надежности
• Покрытие проекта модульными тестами
Недостатки на данный момент
• Слишком «сырой», нет поддержки важного функционала
• В tgbot-cpp не реализован метод, который позволит загрузить файл на
хост
• Реализовано только на x86
• При портировании на BeagleBone/Raspberry Pi могут возникнуть
сложности
The End• Бот: https://github.com/whiteforest440/rms_bot• Telegram bot C++ API: https://github.com/reo7sp/tgbot-cpp• JSON C++: https://github.com/nlohmann/json