π ΠΠ°ΠΊ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ SMS Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python: ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±
ΠΠ»Ρ ΡΡΠ΅Π½ΠΈΡ SMS Π² Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ smspdu.
from smspdu import SmsDeliver
from smspdu import DecodeError
pdu_message = "07919456789020F911000B918816386297F600003145F47402"
try:
sms = SmsDeliver(pdu_message)
sender_number = sms.sender
message_text = sms.text
print("ΠΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ:", sender_number)
print("Π’Π΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ:", message_text)
except DecodeError:
print("ΠΡΠΈΠ±ΠΊΠ° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ SMS")
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠΉΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΠΈ ΡΠ΅ΠΊΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠΊΠ°Π·Π°Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΌΡ python
Π§ΡΠ΅Π½ΠΈΠ΅ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ , Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΊΠ°ΠΆΡ Π²Π°ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pyserial
ΠΠ»Ρ ΡΡΠ΅Π½ΠΈΡ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π»Π΅ΡΠΎΠ½Π° ΡΠ΅ΡΠ΅Π· USB-ΠΏΠΎΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ pyserial Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ AT Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΌΠΎΠ΄Π΅ΠΌΠΎΠΌ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
import serial
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΌΠΎΠ΄Π΅ΠΌΠΎΠΌ
modem = serial.Serial('/dev/ttyUSB0', baudrate=115200)
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
modem.write('AT+CMGF=1\r'.encode())
modem.write('AT+CPMS="SM"\r'.encode())
modem.write('AT+CMGL="ALL"\r'.encode())
# Π§ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ° ΠΎΡ ΠΌΠΎΠ΄Π΅ΠΌΠ°
response = modem.read_all()
print(response.decode())
# ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΌΠΎΠ΄Π΅ΠΌΠΎΠΌ
modem.close()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ serial ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pyserial Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΌΠΎΠ΄Π΅ΠΌΠΎΠΌ ΡΠ΅ΡΠ΅Π· USB-ΠΏΠΎΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ AT Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΎΠ΄Π΅ΠΌΠ° ΠΈ ΡΡΠ΅Π½ΠΈΡ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠΈΡΠ°Π΅ΠΌ ΠΎΡΠ²Π΅Ρ ΠΎΡ ΠΌΠΎΠ΄Π΅ΠΌΠ° ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GSM-ΠΌΠΎΠ΄Π΅ΠΌΠ°
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΡΠ΅Π½ΠΈΡ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python - ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GSM-ΠΌΠΎΠ΄Π΅ΠΌΠ° ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ gsmmodem. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
from gsmmodem.modem import GsmModem
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° GSM-ΠΌΠΎΠ΄Π΅ΠΌΠ°
modem = GsmModem('/dev/ttyUSB0', 115200)
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ GSM-ΡΠ΅ΡΡΡ
modem.connect('your_APN', 'your_username', 'your_password')
# ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
messages = modem.list_sms()
# ΠΡΠ²ΠΎΠ΄ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
for message in messages:
print(message.text)
# ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
modem.disconnect()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ gsmmodem, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ GSM-ΠΌΠΎΠ΄Π΅ΠΌΠ° ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ GSM-ΡΠ΅ΡΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² SMS-ΡΠ»ΡΠ·ΠΎΠ²
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ΄ΠΎΠ±Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΡΠΎΡΠΈΡΠ°ΡΡ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ SMS-ΡΠ»ΡΠ·ΠΎΠ². ΠΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ API Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π²ΠΊΠ»ΡΡΠ°ΡΡ Twilio, Nexmo ΠΈ Plivo.
Π§ΡΠ΅Π½ΠΈΠ΅ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ° SMS-ΡΠ»ΡΠ·Π° ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π³ΠΎΠ²:
- Π‘ΠΎΠ·Π΄Π°ΡΡ Π°ΠΊΠΊΠ°ΡΠ½Ρ Π½Π° Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ΅ SMS-ΡΠ»ΡΠ·Π°.
- ΠΠΎΠ»ΡΡΠΈΡΡ API-ΠΊΠ»ΡΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ.
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π² Python.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π° ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° SMS-ΡΠ»ΡΠ·Π° ΠΎΠ±ΡΡΠ½ΠΎ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π° ΠΈΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠ°Ρ .
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΡΠΎΡΠΈΡΠ°ΡΡ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ SMS-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΡΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² SMS-ΡΠ»ΡΠ·ΠΎΠ². Π£Π΄Π°ΡΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ!