Recevez des SMS réguliers vers les messageries instantanées Viber et Telegram (en utilisant les passerelles GoIP)

Dans de nombreuses entreprises utilisant la téléphonie IP et utilisant des passerelles GSM pour les communications d'entreprise, la question se pose souvent de recevoir et d'envoyer des SMS à partir de leurs numéros.

Pour les modèles GOIP chinois, il existe une bonne solution GOIP-SMS-Server, qui a été mentionnée à plusieurs reprises sur Internet et dans notre communauté Habr. Il s'agit d'un produit simple, gratuit et pratique, mais les SMS via WEB, en particulier depuis le mobile, ne sont pas très pratiques.

Il y avait une idée de recevoir et d'envoyer des SMS en utilisant un messager - et a été implémenté en une heure en utilisant un simple script Python3.6 et un bot Telegram (et 2 mois plus tard, il a été transféré à Viber)

La logique est la suivante: nous traitons et analysons la demande, extrayons le corps du SMS, l'envoyons aux robots et l'envoyons aux chats personnels - nous recevons des SMS, le sujet est particulièrement intéressant pour les propriétaires d'iPhone avec 1 carte SIM, lorsque vous devez rapidement recevoir des messages lors d'un voyage d'affaires ou de vacances, des banques ou des services d'enregistrement ou en savoir plus sur reconstitution de l'opérateur:

Donc, nous allons considérer la première partie, à savoir comment obtenir des SMS à part entière à partir d'un réseau GSM directement dans Telegram, nous avons besoin de:

  • Serveur SMS GoIP
  • Enregistrez le bot (obtenez votre TOKEN du père de tous les bots @BotFather)
  • Enregistrer une nouvelle boîte aux lettres sur Gmail et activer la réception IMAP

Nous analyserons un exemple de script, mais d'abord dans le serveur SMS, nous ajouterons notre e-mail de destinataire (plusieurs e-mails peuvent être séparés par des virgules:

image

Considérez le script:

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 

Maintenant, nous exécutons le script, envoyons des SMS à notre Sim et attendons le traitement - il faut environ 3 secondes pour transférer des SMS vers le messager, si tout est correct, alors nous voyons nos messages dans notre TelegramBot
(nombres réels effacés pour éviter les conflits "printaniers"):

image

image

image

Vous pouvez envelopper le script dans une «fonction def» et l'appeler toutes les 3 ou 20 ou pendant combien de secondes vous avez besoin! Cela dépend de la fréquence de réception des SMS ok!

Si quelqu'un n'arrive pas à répéter, écrivez - nous analyserons chaque cas ...

Rendez-vous dans le prochain article!
73!

PS: l'article a duré environ un an dans le bac à sable (approuvé par UFO le 20/08/2018) a subi plusieurs modifications, apparemment les anciens articles ne viennent pas automatiquement, même si le nouvel article permettait de devenir membre à part entière. Je publie l'original original.

Maintenant, il peut être discuté.

Source: https://habr.com/ru/post/fr464671/


All Articles