Reciba SMS regulares para mensajeros instantáneos de Viber y Telegram (usando puertas de enlace GoIP)

En muchas compañías que usan telefonía IP y puertas de enlace GSM para comunicaciones corporativas, a menudo surge la pregunta de recibir y enviar SMS desde sus números.

Para los modelos GOIP chinos, existe una buena solución GOIP-SMS-Server, que se ha mencionado repetidamente en Internet y también en nuestra comunidad Habr. Este es un producto simple, gratuito y conveniente, pero los SMS vía WEB, especialmente desde dispositivos móviles, no son muy convenientes.

Hubo una idea de recibir y enviar SMS usando un messenger, y se implementó en una hora usando un simple script Python3.6 y un bot Telegram (y 2 meses después se transfirió a Viber)

La lógica es la siguiente: procesamos y analizamos la solicitud, extraemos el cuerpo del SMS, lo enviamos a bots y lo enviamos a chats personales: recibimos SMS, el tema es especialmente interesante para los propietarios de iPhone con 1 sim, cuando necesita recibir rápidamente mensajes en un viaje de negocios o vacaciones, de bancos o servicios de registro o averiguar sobre reposición del operador:

Por lo tanto, consideraremos la primera parte, a saber, cómo obtener SMS completos desde una red GSM directamente en Telegram, necesitamos:

  • Servidor GoIP SMS
  • Registre el bot (obtenga su TOKEN del padre de todos los bots @BotFather)
  • Registre un nuevo buzón en Gmail y habilite la recepción IMAP

Analizaremos un script de ejemplo, pero primero en el servidor de SMS agregaremos nuestro correo electrónico de destinatario (varios correos electrónicos pueden separarse por comas:

imagen

Considere el guión:

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 

Ahora ejecutamos el script, enviamos SMS a nuestro Sim y esperamos el procesamiento: aproximadamente 3 segundos se tarda en transferir SMS al messenger, si todo está correcto, entonces vemos nuestros mensajes en nuestro TelegramBot
(números reales borrados para evitar conflictos de "primavera"):

imagen

imagen

imagen

¡Puede envolver el script en una "función def" y llamarlo cada 3 o 20 o por la cantidad de segundos que necesite! Depende de la frecuencia de recepción de SMS ok!

Si alguien no logra repetir, escriba: analizaremos cada caso ...

¡Nos vemos en el próximo artículo!
73!

PD: el artículo duró aproximadamente un año en el sandbox (aprobado por UFO el 20/08/2018) sufrió varios cambios, aparentemente los artículos antiguos no aparecen automáticamente, incluso si el nuevo artículo permite convertirse en miembro de pleno derecho. Publico el original original.

Ahora se puede discutir.

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


All Articles