Автоматическая пересылка SMS в Telegram c помощью Tasker (часть 2)


В первой части мы создали канал и настроили Telegram-бота. Теперь подготовим HTTP-запрос и настроим Tasker для автоматической пересылки SMS-сообщений в Telegram.



Подготовка HTTP-запроса с помощью Telegram API 


Согласно документации, HTTP-запрос должен иметь следующий вид:
https://api.telegram.org/bot<token>/METHOD_NAME
где <token> — уникальный токен, полученный нами при создании бота в первой части,
а METHOD_NAME — метод, который мы будем использовать в запросе, а именно sendMessage

Но есть одна проблема: методу sendMessage требуется параметр chat_id который представляет собой уникальный идентификатор чата, канала или контакта. В случае с публичным чатом или каналом это не проблема, так как можно использовать публичный текстовый идентификатор. Но, мы собираемся сделать канал частным, и в этом случае запрос работать не будет.

Поэтому, нам нужно получить идентификатор для частного канала другим способом. Для этого необходимо отправить в наш (пока еще публичный) канал сообщение с помощью HTTP-запроса прямо из адресной строки браузера:
https://api.telegram.org/bot731997479:AAGGUsf505XP3lq21RVShDZp82Jsk0AyKqA/sendMessage?chat_id=@mySMStoTelegram&text=test
где 731997479:AAGGUsf505XP3lq21RVShDZp82Jsk0AyKqA — токен созданного бота, перед которым обязательно нужно вставить bot
mySMStoTelegram — текстовый идентификатор нашего (пока еще публичного) канала, перед которым нужно вставить @
test — текст, который мы отправляем в канал



публичный частный канал Telegram

В ответ в окне браузера вы увидите примерно следующее:
{"ok":true,"result":{"message_id":3,"chat":{"id":-1001480029081,"title":"Raiffeisen SMS","username":"mySMStoTelegram","type":"channel"},"date":1565185274,"text":"test"}}
где  -1001480029081 — искомый идентификатор канала, который мы можем использовать для приватного канала.
При успешном запросе в созданном канале вы увидите сообщение (из Chrome два сообщения) с отправленным текстом:
тестовое сообщение в канале Telegram

Если в браузере ответ другой и сообщение не пришло в канал, значит где-то допущена ошибка. В ответе, обычно, указывается причина ошибки. Например:
{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}
Теперь, когда у нас есть уникальный идентификатор канала, мы можем делать канал частным:

частный канал Telegram

Сохраняем настройки канала и проверяем как работает запрос с цифровым идентификатором (обязательно с минусом!):
https://api.telegram.org/bot731997479:AAGGUsf505XP3lq21RVShDZp82Jsk0AyKqA/sendMessage?chat_id=-1001480029081&text=private%20test
Смотрим, пришло ли сообщение в наш (теперь уже частный) канал:

тестовое сообщение в частный канал Telegram

Настройка Tasker для отправки SMS в Telegram


И так, у нас есть готовая строка HTTP-запроса которая отправляет сообщение в Telegram. Осталось настроить Tasker так, чтобы он отправлял содержимое SMS в качестве текста.

Запускаем Tasker и создаем новый профиль:

Tasker настройка

Я сознательно оставил интерфейс без локализации, так как локализация у приложения только частичная. Потому здесь и далее на скриншотах будет интерфейс на английском языке.

Даём название профилю и нажимаем на галку. Например, SMS to Telegram:

Создание профиля Tasker

В выпадающем меню выбираем Event (Событие):

Событие Tasker

В следующем меню выбираем Phone (Телефон):

Событие телефон Tasker

И далее выбираем Received text (Получен текст):

Событие получено сообщение Tasker

В следующем меню выбираем Type (тип) сообщения — SMS; Sender (Отправитель) — указываете номер или название в том виде, в котором он отображается в приложении для работы с SMS (у меня это Raiffeisen); в строке Content (содержимое) пишем переменную %SMSRB или выбираем её под именем «Text Body» из меню, нажав на иконку в правой части строки:

Парсинг SMS Tasker

После заполнения нажимаем на стрелку «назад» в верхнем левом углу приложения и попадем на следующий этап — создание задания для профиля:

Создание задания Tasker

Жмем «+» и даем имя заданию, например «Send SMS»:

Имя задания Tasker

В новом окне нажимаем «+» и добавляем в задание действие:

Создание действия Tasker

В списке нужно найти категорию «Net»:

Категория Net Tasker

И выбрать пункт «HTTP Request»:

Действие HTTP Request Tasker

В следующем окне необходимо выбрать метод  «POST» и задать параметр «URL» используя ранее сформированную строку запроса, с той лишь разницей, что в качестве текста указать переменную «%SMSRB»:

Настойка действия HTTP Request Tasker

Теперь, когда всё готово, возвращаемся на уровень вверх стрелкой в верхнем левом углу и проверяем работу задачи. Если у вас уже есть во входящих SMS, которое должно быть отправлено в Telegram, то можно проверить работу нажав на значок «Play»:

Проверка действия HTTP Request Tasker

Или совершить/дождаться целевого SMS. В случае успешной работы задачи в Telegram-канале мы увидим целевое SMS:

SMS в канале Telegram с помощью Tasker

Главный экран Tasker будет выглядеть так:

Tasker

В целом, Tasker на Android-устройстве с root-правами превращается в очень мощный инструмент автоматизации различных действий. Я бы рекомендовал изучить его возможности подробнее.

На этом всё. Вопросы, замечания оставляйте в комментариях. Спасибо, что дочитали до конца! :)