Переадресация сообщений telegram — Пересылка sms в Telegram
Ниже находится статья за 2016 год. В этом 2018 году появилось более простое решение, доступное даже домохозяйке, и не требующее телефона как такового, подробнее в этой
статье.
У нас в команде нередко платежи проходят с банковских карт: оплачиваем хостинг, всякие сопутствующие работу сервисы и пр. Но при оплате почти всегда приходится вводить код авторизации из смс. Всё бы ничего, но корпоративная карточка привязана к одному телефонному номеру, а оплачивать приходится не всега дому, у кого в руках телефон. Помню был случай, когда минут 20 было потрачено на оплату — то не приходила смс, то человек, у которого телефон, был в метро, то кончалось время на ввод кода, то ошибка при вводе — куча впустую убитого времени.
Как же можно решить эту проблему? В некотрых странах, например, в США, можно получить виртуальный мобильный номер (я брал у twilio) и через API сервиса принимать и посылать смски. К сожалению, мне не удалось привязать мобильный банк к такому номеру — смски приходят с короткого номера, а в США эти номера заняты кем-то другим или вовосе не используются. Арендовать в России виртуальный номер для приёма смс дороговато, дорога также и услуга смс-хостинга (когда ваша карта отдаётся в компанию, где подключается к их платформе). Посмотрел цены у трёх операторов: цена за подключение 10$ и абонентка 20$ в месяц, у другой конторы — 2000 в месяц, у третьей — подключение 3000р и 2000р в месяц абонентки. Нет, конечно, есть и бесплатные простые способы — публичные номера. Море ресурсов позволяет использовать один или несколько номеров для регистрации в соцсетях и т.п., все приходящие смски видно сразу тут же — на сайте. Регистрировать мобильный банк через такую систему мы не хотели.
Был выбран чуть более сложный путь — поставить на android телефон программу по пересылке смсок на наш сервер, где простенький php файл в одну строку отправляет сообщение в telegram. Таким образом, телефон можно подключить к зарядке и забыть о нём, раз в 2-3 месяца отправяляя с него смс (это позже тоже можно будет автоматизировать) или совершая зовнок, чтобы оператор не заблокировал номер. Но обо всём по порядку. Всего будет 3 этапа
- Регистрация telegram бота
- Написание простенького php файла
- Установка и настройка на телефон смс гейта.
-
Регистрация telegram бота
Для регистрации бона нужно найти пользователя BotFather в списке контактов
И написать ему /newbot
, на что он спросит имя, придумать имя на латинице, потом он попросит придумать имя пользователя (будем считать это ник-неймом) с обязательной припиской _bot в конце. Вот весь диалог, красным я выделил самую его важную часть — id бота и token (будем считать его паролем).

Проверим, работает ли бот. Для этого нажмём в последнем сообщении от BotFather на первую ссылку: telegram.me/smstotelegram_bot. Откроется окно чата с ботом, нужно нажать START

После этого нужно отправить боту любой текст. Это нужно для того, чтобы потом определить, кому бот будет отправлять сообщения. Для начала мы рассмотрим простой случай — отправку sms одному пользователю, потом отправку sms в групповой чат. на картинке ниже — скриншот после отправки «привета»:
Теперь зайдём в браузер и увидим весь лог этого чата. Для этого сформируем строку:
https://api.telegram.org/bot152314208:AAAAAAAAAAAAAAAAAA/getUpdates
Где AAAAAAAAAAAAAAAAAA нужно заменить на token (пароль), а 152314208 на id вашего бота. Обратите внимание, приписка bot должна быть до id!
Отправьте получившуюся строку в адресную строку и нажмите ввод. Если в ответном сообщении есть только «{«ok»:true,»result»:[]}«, снова напишите боту «Привет» и обновите страницу в браузере. Должен появитсья лог общения. Примерно такой:

Красным я выделил собственно надпись «привет» в формате json (не будем вдаваться в подробности, но \u043f это «п»). Зелёным выделен id моего аккаунта, т.е. того, под которым я обычно логинюсь. Отправим теперь от бота мне сообщение «и тебе привет». Для этого сформируем запрос:
https://api.telegram.org/bot152314208:AAAAAAAAAAAAAAAAAA/sendMessage?chat_id=70843541&text=и тебе привет
Где AAAAAAAAAAAAAAAAAA нужно заменить на token (пароль), а 152314208 на id вашего бота. 70843541 необходимо заменить на id, который обозначен зелёным — это id чата. Вот, что получится, если вставить сформированный запрос в адресную страку браузера

Это именно то, что нам и было нужно. Переходим ко второму этапу
2.Написание простенького php файла
Программа для андроид телефона, которую мы буем использовать, не умеет, к сожалению, посылать запросы по произвольному адресу (будет разъяснено ниже), поэтому нам нужен скрипт-посредник, который преобразует данные в нужный вид. Итак, достаточно любого php хостинга (у кого нет никакого, попробуйте бесплатный тариф у моего хостера Бегет https://beget.com/ru/free-hosting).
Создайте файл такого вида
<?php file_get_contents("https://api.telegram.org/bot152314208:AAAAAAAAAAAAAAAAAA/sendMessage?chat_id=70843541&text=".(string)$_GET["phone"].":".$_GET["text"]); ?>
Тёмно-зелёным цветом отмечена строчка, полученная ранее.
(string)$_GET["phone"].":".$_GET["text"])
ознначает взять и преобразовать в строку номер телефона, добавить : и текст сообщения.
Сохраним этот файл на хостинге, обзовём его test.php
3. Установка и настройка на телефон смс гейта.
В GooglePlay много разных sms гейтов, но воспользуемся вот этим (upd2018: программа пропала из GooglePlay, но APK есть в архиве сайта apkmonk:
https://www.apkmonk.com/app/eu.apksoft.android.smsgateway/
Он работает, к сожалению, не со всеми телефонами, например, с моим текущим XIAOMI REDMI 3 PRO он не работает, а с LG L90 работает.
Итак, вот, как нужно настроить программу, зайдя после запуска в Settings:

Красным я отметил необязательный пункт, вернее нужно тестировать, я на всякий случай сразу отметил, т.к. мой телефон любит засыпать и отключать все каналы интернет-связи. Далее кликаем на HTTP Settings и прописываем адрес до своего test.php

После правки адреса жмём дважды «назад» и попадаем в главное меню программы, где нажимаем Start.
Вот и всё. Теперь любая пришедшая смска должна мгновенно отобразиться в чате с ботом телеграма. Вид смски будет телефон:текст.
В следующем посте посмотрим, как добавить бота в чат с другими людьми, чтобы смски могли видеть все участники группы.