Ako poslať SMS cez SMPP API pomocou Pythonu
SMPP API (Short Message Peer-to-Peer) je výkonný protokol na výmenu SMS správ medzi externými entitami krátkych správ (ESME) a centrami služieb krátkych správ (SMSC). Pre vývojárov používajúcich Ozeki SMS Gateway, využitie SMPP API s Pythonom umožňuje bezproblémovú integráciu SMS do aplikácií. Tento komplexný sprievodca poskytuje podrobné pokyny, praktické príklady kódu v Pythone a osvedčené postupy na vytvorenie, udržanie a používanie spojenia cez SMPP API na efektívne odosielanie SMS správ.
Jednoduchosť Pythonu a jeho robustné knižnice, ako je smpplib
, z neho robia
ideálnu voľbu pre integráciu s SMPP API. Protokol SMPP umožňuje vysoký výkon pri doručovaní SMS,
sledovanie doručenia v reálnom čase a spoľahlivé spravovanie spojenia.
Kombináciou Pythonu a SMPP API môžu vývojári vytvárať škálovateľné
riešenia pre aplikácie ako notifikácie, marketingové kampane alebo
dvojfaktorovú autentifikáciu (2FA).
- Overte si SMPP prihlasovacie údaje: Uistite sa, že máte správny hostiteľ, port, používateľské meno a heslo pre vášho SMPP používateľa v Ozeki SMS Gateway.
- Napíšte a spustite Python kód: Použite knižnicu
smpplib
na vytvorenie skriptu pre pripojenie k SMPP serveru a odosielanie SMS. - Skontrolujte výsledky: Potvrďte úspešné doručenie správy prostredníctvom logov v rozhraní Ozeki SMS Gateway.
Pozrite si tento podrobný video návod, aby ste sa naučili, ako posielať SMS správy pomocou
Pythonu a SMPP API s Ozeki SMS Gateway. Návod pokrýva nastavenie
SMPP používateľa, pripojenie s knižnicou smpplib
, odosielanie správ,
udržiavanie spojenia a spracovanie správ o doručení.
Podrobný sprievodca odosielaním SMS pomocou Pythonu a SMPP API
Krok 1: Vyberte svojho SMPP používateľa
V rozhraní Ozeki SMS Gateway prejdite na sekciu "Používatelia a aplikácie". Vyberte alebo vytvorte SMPP používateľa na vytvorenie spojenia z vášho Python skriptu. Tento používateľ bude autentifikovať vašu aplikáciu pri SMPP serveri.
Krok 2: Získajte údaje o pripojení
Po výbere vášho SMPP používateľa prejdite na kartu "Pomocník" v rozhraní Ozeki SMS Gateway. Tu nájdete dôležité údaje o pripojení, vrátane IP adresy, čísla portu, používateľského mena a hesla. Tieto údaje sú kľúčové pre konfiguráciu vášho Python skriptu na pripojenie k SMPP serveru.
Krok 3: Napíšte Python kód pre SMPP
Otvorte váš obľúbený Python editor a vložte kód pre SMPP pripojenie uvedený nižšie.
Tento kód používa knižnicu smpplib
na vytvorenie spojenia
s Ozeki SMS Gateway a pripraví prostredie na odosielanie SMS správ.
Krok 4: Aktualizujte SMPP prihlasovacie údaje
Nahraďte zástupné hodnoty v Python kóde (hostiteľ, port, používateľské meno, heslo, a telefónne čísla) vašimi skutočnými SMPP údajmi a telefónnym číslom príjemcu. Tým sa zabezpečí, že váš skript sa pripojí k správnemu SMPP serveru a odošle správy zamýšľanému príjemcovi.
Krok 5: Overte úspešné pripojenie
Spustite váš Python skript. Ak je správne nakonfigurovaný, rozhranie Ozeki SMS Gateway zaznamená úspešné pripojenie vášho SMPP používateľa. Toto potvrdzuje, že váš Python skript je pripravený na odosielanie SMS správ cez SMPP API.
Ako nadviazať SMPP API spojenie v Pythone pre SMS správu
Na odosielanie SMS správ pomocou SMPP API musíte najprv nastaviť SMPP používateľa
v Ozeki SMS Gateway a pripojiť váš Python klient k SMPP serveru.
Knižnica smpplib
tento proces zjednodušuje spracovaním nízkych úrovní protokolových detailov.
Nižšie je uvedený príklad kódu v Pythone pre nadviazanie SMPP spojenia:
import smpplib # Parametre SMPP spojenia HOST = 'your.ozeki.server' PORT = 2775 SYSTEM_ID = 'your_username' PASSWORD = 'your_password' # Inicializácia SMPP klienta client = smpplib.client.Client(HOST, PORT) # Pripojenie ako vysielač pre odosielanie SMS client.connect() client.bind_transmitter( system_id=SYSTEM_ID, password=PASSWORD, ) print("Úspešne pripojené k SMPP serveru pomocou Pythonu")
Kľúčové protokolové dátové jednotky (PDU) SMPP
Protokol SMPP sa spolieha na protokolové dátové jednotky (PDU) na správu spojení a správ. Nižšie je uvedená tabuľka sumarizujúca kľúčové PDU používané v Pythone pre integráciu SMPP API:
PDU | Python metóda | Účel |
---|---|---|
bind_transmitter |
client.bind_transmitter() |
Inicializuje spojenie pre odosielanie SMS správ |
bind_receiver |
client.bind_receiver() |
Vytvorí spojenie pre prijímanie SMS správ |
bind_transceiver |
client.bind_transceiver() |
Umožňuje obojsmernú SMS komunikáciu (odosielanie a prijímanie) |
SMPP spojenia vyžadujú periodické "keep-alive" signály, aby sa predišlo časovým limitom.
PDU enquire_link
sa odosiela každých 30 sekúnd na udržanie spojenia.
Nižšie je uvedený príklad v Pythone využívajúci prístup s vláknami na odosielanie keep-alive signálov:
import time import threading def send_enquire_link(): while True: try: client.enquire_link() print("Odoslané enquire_link PDU na udržanie SMPP spojenia") except Exception as e: print(f"Chyba pri odosielaní enquire_link: {e}") time.sleep(30) # Odosielať každých 30 sekúnd # Spustenie vlákna pre keep-alive keepalive_thread = threading.Thread(target=send_enquire_link) keepalive_thread.daemon = True keepalive_thread.start()
Odosielanie SMS pomocou Python cez SMPP API
Po nadviazaní spojenia môžete odosielať SMS správy pomocou submit_sm
PDU. Nasledujúci kód v Python ukazuje, ako odoslať SMS a spracovať
odpoveď:
def send_sms(source_addr, destination_addr, message): try: # Odoslanie submit_sm PDU pdu = client.send_message( source_addr_ton=smpplib.consts.SMPP_TON_INTL, source_addr_npi=smpplib.consts.SMPP_NPI_ISDN, source_addr=source_addr, dest_addr_ton=smpplib.consts.SMPP_TON_INTL, dest_addr_npi=smpplib.consts.SMPP_NPI_ISDN, destination_addr=destination_addr, short_message=message, data_coding=0x00, # GSM 7-bit kódovanie ) print(f"SMS úspešne odoslaná, message_id: {pdu.message_id}") except smpplib.exceptions.PDUError as e: print(f"SMPP PDU chyba: {e}") except Exception as e: print(f"Chyba pri odosielaní SMS: {e}") # Príklad použitia send_sms( source_addr="12345", destination_addr="+1234567890", message="Ahoj z Python SMPP klienta!" )
Spracovanie doručených správ v Python
Pre sledovanie stavu odoslaných SMS správ môžete spracovať doručené správy
pomocou deliver_sm
PDU. Nižšie je príklad v Python pre spracovanie
doručených správ:
def handle_delivery_report(pdu): print(f"Prijatá doručená správa pre správu {pdu.receipted_message_id}") print(f"Stav: {pdu.message_state}") # Nastavenie obsluhy doručených správ client.set_message_received_handler(lambda pdu: handle_delivery_report(pdu))
Kompletný príklad Python SMPP API klienta pre odosielanie SMS
Nižšie je kompletný, produkčne pripravený skript v Python, ktorý sa integruje s SMPP API na odosielanie SMS správ, udržiava stabilné spojenie a spracúva doručené správy:
import smpplib import threading import time class SMPPClient: def __init__(self, host, port, system_id, password): self.client = smpplib.client.Client(host, port) self.client.set_message_received_handler(self.handle_message) # Pripojenie k SMPP serveru self.client.connect() self.client.bind_transceiver( system_id=system_id, password=password, ) # Spustenie keep-alive vlákna self.start_keepalive() def start_keepalive(self): def _keepalive(): while True: try: self.client.enquire_link() print("Keep-alive signál odoslaný") except Exception: try: self.client.connect() self.client.bind_transceiver( system_id=system_id, password=password, ) print("Obnovené spojenie so SMPP serverom") except Exception as e: print(f"Obnovenie spojenia zlyhalo: {e}") time.sleep(30) thread = threading.Thread(target=_keepalive) thread.daemon = True thread.start() def send_sms(self, from_addr, to_addr, message): try: return self.client.send_message( source_addr=from_addr, destination_addr=to_addr, short_message=message, ) except Exception as e: print(f"Odosielanie SMS zlyhalo: {e}") return None def handle_message(self, pdu): if pdu.command == "deliver_sm": print(f"Doručená správa: {pdu.receipted_message_id} - {pdu.message_state}") else: print(f"Prijatá správa: {pdu.short_message}") # Príklad použitia if __name__ == "__main__": client = SMPPClient( host="your.ozeki.server", port=2775, system_id="your_username", password="your_password" ) # Odoslanie SMS client.send_sms( from_addr="12345", to_addr="+1234567890", message="Ahoj z Python SMPP klienta!" ) # Udržanie skriptu v chode while True: time.sleep(1)Najlepšie postupy pre integráciu SMPP API s Python
- Spracovanie chýb: Vždy implementujte robustné spracovanie výnimiek pre správu zlyhaní spojenia, chýb PDU a časových limitov.
- Obnovenie spojenia: Zahrňte logiku pre automatické opätovné pripojenie, ak sa SMPP spojenie preruší.
- Logovanie: Logujte stav spojenia, odoslané správy a doručené správy pre ladenie a monitorovanie.
- Bezpečnosť: Ukladajte SMPP prihlasovacie údaje bezpečne, pomocou premenných prostredia alebo konfiguračného súboru.
- Škálovateľnosť: Pre aplikácie s vysokým objemom SMS zvážte použitie asynchrónnych knižníc alebo poolingu spojení.
Tento sprievodca poskytol podrobný návod na integráciu
SMPP API s Python pomocou Ozeki SMS Gateway.
Využitím knižnice smpplib
môžu vývojári nadviazať spoľahlivé
SMPP spojenia, odosielať SMS správy a spracúvať doručené správy s ľahkosťou.
Poskytnuté príklady kódu v Python a najlepšie postupy zabezpečujú robustné a škálovateľné SMS
aplikácie pre rôzne prípady použitia, od notifikácií po marketingové kampane.
Poznámka: Pre produkčné prostredia vylepšite poskytnutý kód o komplexné spracovanie chýb, logiku opätovného pripojenia a logovanie, aby ste zabezpečili maximálnu spoľahlivosť a výkon.
More information
- How to set up an SMPP API client connection with Your SMSC
- How to set up an SMPP API server to send ad receive SMS from multiple Apps
- How to choose the right SMPP API provider for your business
- How to Send SMS Using the SMPP API at the protocol level
- How to Send SMS through the SMPP API using Python
- How to Send SMS through the SMPP API using Javascript
- How to send SMS through the SMPP API using Java
- How to Send SMS through the SMPP API using PHP
- How to Send SMS through the SMPP API using C#
- How to Send SMS through the SMPP API using C/Cpp
- How to Receive SMS using the SMPP API
- How to Receive an SMS Delivery Report using the SMPP API
- SMPP API FAQ