Во многих компаниях использующих IP-телефонию и применяющих GSM-шлюзы для корпоративной связи часто возникает вопрос приема и отправки СМС со своих номеров.
Для китайских моделей GOIP существует неплохое решение GOIP-SMS-Сервер, о котором неоднократно упоминалось на просторах интернета и в нашем Habr сообществе в том числе. Это простой, бесплатный и удобный продукт, но СМС через WEB, особенно с мобильных не совсем удобно.
Возникла идея приема и передачи СМС с помощью мессенджера — и была реализована за час с помощью простого скрипта на Python3.6 и бота Telegram (и спустя 2 месяца перенесена на Viber) Прошу под кат:
Логика следующая: Обрабатываем и парсим запрос, извлекаем тело СМС, передаем ботам и Отправляем в личные чаты — получаем СМС, особенно интересна тема владельцам iPhone с 1 sim, когда оперативно нужно получить сообщения в командировке или отпуске, от банков или сервисов регистраций или узнать о пополнении оператора:
Итак рассмотрим первую часть а именно — как получать полноценные СМС из GSM сети прямо в Telegram, нам понадобиться:
Разберем пример скрипта, но предварительно в СМС сервере добавим наш емайл получателя (можно несколько емайл через запятую:
Рассмотрим скрипт:
Tеперь запускаем скрипт, посылам СМСку на нашу Sim и ждем обработки — около 3 сек нужно на переброс СМС в месседжер, если все верно, то видим наши сообщения в нашем TelegramBot
(номера реальные стерты во избежание «Яровых» конфликтов):
Скрипт можно обернуть в «def функцию» и вызывать ее каждые 3 или 20 или сколько нужно секунд! Зависит от частоты получение СМС-ок!
Если у кого то не получается повторить, пишите — разберем каждый случай…
До встречи в следующей статье!
73!
P.S.: статья около года пролежала в песочнице (одобрена НЛО 20.08.2018) претерпела несколько изменений, видимо старые статьи автоматом не приходят, даже если новая статья позволила стать полноправным участником. Публикую исходный оригинал.
Теперь ее можно обсудить.
Для китайских моделей GOIP существует неплохое решение GOIP-SMS-Сервер, о котором неоднократно упоминалось на просторах интернета и в нашем Habr сообществе в том числе. Это простой, бесплатный и удобный продукт, но СМС через WEB, особенно с мобильных не совсем удобно.
Возникла идея приема и передачи СМС с помощью мессенджера — и была реализована за час с помощью простого скрипта на Python3.6 и бота Telegram (и спустя 2 месяца перенесена на Viber) Прошу под кат:
Логика следующая: Обрабатываем и парсим запрос, извлекаем тело СМС, передаем ботам и Отправляем в личные чаты — получаем СМС, особенно интересна тема владельцам iPhone с 1 sim, когда оперативно нужно получить сообщения в командировке или отпуске, от банков или сервисов регистраций или узнать о пополнении оператора:
Итак рассмотрим первую часть а именно — как получать полноценные СМС из GSM сети прямо в Telegram, нам понадобиться:
- GoIP SMS Сервер
- Зарегистрируйте бота (получите свой TOKEN у папы всех ботов @BotFather)
- Зарегистрируйте новый ящик на Gmail и разрешите прием по IMAP
Разберем пример скрипта, но предварительно в СМС сервере добавим наш емайл получателя (можно несколько емайл через запятую:
Рассмотрим скрипт:
import imaplib
import email
import telebot # установите в свое окружение библиотеку pip install PyTelegramBotAPI
bot = telebot.TeleBot('YOUTOKENBOT') #укажите ваш токен
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('yougmail@gmail.com', 'gmailpassword') #ваш новый аккаунт @gmail
mail.list() # Смотрим на папки в ящике
mail.select('INBOX') # Подключаемся к папке входящие
result, data = mail.uid('search', None, 'UNSEEN') # выбираем непрочитанные
i = len(data[0].split())
for x in range(i):
latest_email_uid = data[0].split()[x]
result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = email_data[0][1]
mail.store(latest_email_uid, '+FLAGS', '\Deleted') # удаляем чтоб не было повторной отправки
raw_email_string = raw_email.decode('utf-8')
email_message = email.message_from_string(raw_email_string) # получаем сырое письмо в виде строки
for part in email_message.walk():
if part.get_content_type() == "text/html" or part.get_content_type() == "text/plain":
body = part.get_payload(decode=True)
s = (email_message['Subject'])
numb = s[5:16] # Выделяем номер получателя 11 значный в виде 7XXXXXXXXXX с помощью среза, если 12 значный например для Украины то s[5:17]
mss = str(body.decode('unicode-escape')) # декодируем тело письма и в Python3 отменяем unicode, если 2я ветка то отменять не нужно
abon = mss[54:67] # выделяем номер отправителя
smss = mss[77:] # выделяем тело СМС, а именно собственно само сообщение
soobsh=( numb + 'n'+ 'n' + smss + 'n' + 'От:' + abon) # форматируем для отправки
bot.send_message(chat_id, soobsh) # укажите ваш chat_id и отправляйте в телегу ваше СМС
else:
continue
Tеперь запускаем скрипт, посылам СМСку на нашу Sim и ждем обработки — около 3 сек нужно на переброс СМС в месседжер, если все верно, то видим наши сообщения в нашем TelegramBot
(номера реальные стерты во избежание «Яровых» конфликтов):
Скрипт можно обернуть в «def функцию» и вызывать ее каждые 3 или 20 или сколько нужно секунд! Зависит от частоты получение СМС-ок!
Если у кого то не получается повторить, пишите — разберем каждый случай…
До встречи в следующей статье!
73!
P.S.: статья около года пролежала в песочнице (одобрена НЛО 20.08.2018) претерпела несколько изменений, видимо старые статьи автоматом не приходят, даже если новая статья позволила стать полноправным участником. Публикую исходный оригинал.
Теперь ее можно обсудить.