Receba SMS regulares para mensageiros instantâneos Viber e Telegram (usando gateways GoIP)

Em muitas empresas que usam telefonia IP e gateways GSM para comunicações corporativas, surge a questão de receber e enviar SMS de seus números.

Para os modelos GOIP chineses, existe uma boa solução GOIP-SMS-Server, mencionada repetidamente na Internet e também em nossa comunidade Habr. Este é um produto simples, gratuito e conveniente, mas o SMS via WEB, especialmente do celular, não é muito conveniente.

Havia uma idéia de receber e enviar SMS usando um messenger - e foi implementado em uma hora usando um script Python3.6 simples e um robô Telegram (e 2 meses depois foi transferido para o Viber)

A lógica é a seguinte: processamos e analisamos a solicitação, extraímos o corpo do SMS, enviamos para bots e para bate-papos pessoais - recebemos SMS, o tópico é especialmente interessante para proprietários de iPhone com 1 sim, quando você precisa receber rapidamente mensagens em uma viagem de negócios ou férias, de bancos ou serviços de registro ou descobrir mais sobre reabastecimento do operador:

Portanto, consideraremos a primeira parte, a saber, como obter o SMS completo de uma rede GSM diretamente no Telegram, precisamos:

  • Servidor SMS GoIP
  • Registre o bot (obtenha seu TOKEN do pai de todos os bots @BotFather)
  • Registre uma nova caixa de correio no Gmail e ative a recepção IMAP

Analisaremos um exemplo de script, mas primeiro no servidor SMS, adicionaremos o email do destinatário (vários emails podem ser separados por vírgulas:

imagem

Considere o 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 

Agora, rodamos o script, enviamos SMS para o nosso Sim e aguardamos o processamento - cerca de 3 segundos para transferir o SMS para o messenger, se tudo estiver correto, vemos nossas mensagens no nosso TelegramBot
(números reais apagados para evitar conflitos "Spring"):

imagem

imagem

imagem

Você pode agrupar o script em uma "função de definição" e chamá-lo a cada 3 ou 20 ou por quantos segundos você precisa! Depende da frequência de recebimento de SMS ok!

Se alguém não conseguir repetir, escreva - analisaremos cada caso ...

Vejo você no próximo artigo!
73!

PS: o artigo durou cerca de um ano na caixa de areia (aprovada pelo OVNI em 20/08/2018) sofreu várias alterações, aparentemente os artigos antigos não são automaticamente exibidos, mesmo que o novo artigo permita se tornar um membro pleno. Eu publico o original original.

Agora isso pode ser discutido.

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


All Articles