Jak posílat SMS přes SMPP API pomocí Pythonu
SMPP API (Short Message Peer-to-Peer) je výkonný protokol pro výměnu SMS zpráv mezi externími entitami (ESMEs) a centry služby krátkých zpráv (SMSCs). Pro vývojáře používající Ozeki SMS Gateway umožňuje využití SMPP API s Pythonem bezproblémovou integraci SMS do aplikací. Tento komplexní průvodce poskytuje podrobné pokyny, praktické příklady kódu v Pythonu a osvědčené postupy pro navázání, udržování a využití spojení přes SMPP API k efektivnímu odesílání SMS zpráv.
Proč používat Python s SMPP API pro SMS zprávy?
Jednoduchost Pythonu a jeho robustní knihovny, jako je smpplib
, z něj činí ideální volbu pro integraci s SMPP API. Protokol SMPP umožňuje vysokovýkonné doručování SMS, sledování doručení v reálném čase a spolehlivé řízení spojení. Kombinací Pythonu a SMPP API mohou vývojáři vytvářet škálovatelná řešení pro aplikace jako oznámení, marketingové kampaně nebo dvoufaktorové ověřování (2FA).
Jak posílat SMS přes SMPP API pomocí Pythonu (Rychlé kroky)
- Ověřte SMPP přihlašovací údaje: Ujistěte se, že máte správný hostitel, port, uživatelské jméno a heslo pro vašeho SMPP uživatele v Ozeki SMS Gateway.
- Napište a spusťte kód v Pythonu: Použijte knihovnu
smpplib
k vytvoření skriptu pro připojení k SMPP serveru a odesílání SMS. - Zkontrolujte výsledky: Potvrďte úspěšné doručení zpráv prostřednictvím logů v rozhraní Ozeki SMS Gateway.
Jak posílat SMS přes SMPP API pomocí Pythonu (Video návod)
Podívejte se na tento podrobný video návod, jak odesílat SMS zprávy pomocí Pythonu a SMPP API s Ozeki SMS Gateway. Návod pokrývá nastavení SMPP uživatele, připojení pomocí knihovny smpplib
, odesílání zpráv, udržování spojení a zpracování potvrzení o doručení.
Podrobný návod k odesílání SMS pomocí Pythonu a SMPP API
Krok 1: Vyberte svého SMPP uživatele
V rozhraní Ozeki SMS Gateway přejděte do sekce "Uživatelé a aplikace". Vyberte nebo vytvořte SMPP uživatele pro navázání spojení z vašeho Python skriptu. Tento uživatel bude ověřovat vaši aplikaci u SMPP serveru.
Krok 2: Získejte údaje pro připojení
Po výběru SMPP uživatele přejděte na kartu "Nápověda" v rozhraní Ozeki SMS Gateway. Zde najdete klíčové údaje pro připojení, včetně IP adresy, čísla portu, uživatelského jména a hesla. Tyto údaje jsou nezbytné pro konfiguraci vašeho Python skriptu pro připojení k SMPP serveru.
Krok 3: Napište kód v Pythonu pro SMPP
Otevřete váš oblíbený Python IDE nebo editor a vložte níže uvedený kód pro SMPP připojení. Tento kód využívá knihovnu smpplib
k navázání spojení s Ozeki SMS Gateway a přípravě prostředí pro odesílání SMS zpráv.
Krok 4: Aktualizujte SMPP přihlašovací údaje
Nahraďte zástupné hodnoty v Python kódu (hostitel, port, uživatelské jméno, heslo a telefonní čísla) vašimi skutečnými SMPP údaji a telefonním číslem příjemce. Tím zajistíte, že se váš skript připojí ke správnému SMPP serveru a odešle zprávy zamýšlenému příjemci.
Krok 5: Ověřte úspěšné připojení
Spusťte váš Python skript. Pokud je vše správně nakonfigurováno, rozhraní Ozeki SMS Gateway zaznamená úspěšné připojení vašeho SMPP uživatele. Tím potvrdíte, že váš Python skript je připraven odesílat SMS zprávy přes SMPP API.
Pro odesílání SMS zpráv pomocí SMPP API musíte nejprve nastavit uživatele SMPP
v Ozeki SMS Gateway a připojit svého Python klienta k SMPP serveru.
Knihovna smpplib
tento proces zjednodušuje tím, že se stará o nízkou úroveň protokolových detailů.
Níže je příklad kódu v Pythonu pro navázání SMPP spojení:
import smpplib # Parametry SMPP spojení HOST = 'your.ozeki.server' PORT = 2775 SYSTEM_ID = 'your_username' PASSWORD = 'your_password' # Inicializace SMPP klienta client = smpplib.client.Client(HOST, PORT) # Připojení jako vysílač pro odesílání SMS client.connect() client.bind_transmitter( system_id=SYSTEM_ID, password=PASSWORD, ) print("Úspěšně připojeno k SMPP serveru pomocí Pythonu")
Klíčové protokolové datové jednotky (PDU) SMPP
Protokol SMPP spoléhá na protokolové datové jednotky (PDU) pro správu spojení a zasílání zpráv. Níže je tabulka shrnující klíčové PDU používané v Pythonu pro integraci SMPP API:
PDU | Metoda v Pythonu | Účel |
---|---|---|
bind_transmitter |
client.bind_transmitter() |
Inicializuje spojení pro odesílání SMS zpráv |
bind_receiver |
client.bind_receiver() |
Navazuje spojení pro příjem SMS zpráv |
bind_transceiver |
client.bind_transceiver() |
Umožňuje obousměrné zasílání SMS (odesílání a příjem) |
Udržování stabilního spojení SMPP API v Pythonu pro odesílání SMS
SMPP spojení vyžadují periodické "keep-alive" signály, aby nedocházelo k timeoutům.
PDU enquire_link
se odesílá každých 30 sekund pro udržení spojení.
Níže je příklad v Pythonu využívající přístup s vlákny pro odesílání keep-alive signálů:
import time import threading def send_enquire_link(): while True: try: client.enquire_link() print("Odeslán enquire_link PDU pro udržení SMPP spojení") except Exception as e: print(f"Chyba při odesílání enquire_link: {e}") time.sleep(30) # Odeslat každých 30 sekund # Spuštění keep-alive vlákna keepalive_thread = threading.Thread(target=send_enquire_link) keepalive_thread.daemon = True keepalive_thread.start()Odesílání SMS pomocí Pythonu přes SMPP API
Jakmile je připojení navázáno, můžete odesílat SMS zprávy pomocí PDU submit_sm
.
Následující kód v Pythonu ukazuje, jak odeslat SMS a zpracovat odpověď:
def send_sms(source_addr, destination_addr, message): try: # Odeslat 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ódování ) print(f"SMS úspěšně odeslána, ID zprávy: {pdu.message_id}") except smpplib.exceptions.PDUError as e: print(f"Chyba SMPP PDU: {e}") except Exception as e: print(f"Chyba při odesílání SMS: {e}") # Příklad použití send_sms( source_addr="12345", destination_addr="+1234567890", message="Ahoj z Python SMPP klienta!" )
Zpracování doručovacích zpráv SMS v Pythonu
Pro sledování stavu doručení odeslaných SMS můžete zpracovávat doručovací zprávy
pomocí PDU deliver_sm
. Níže je příklad v Pythonu pro zpracování
doručovacích zpráv:
def handle_delivery_report(pdu): print(f"Přijata doručovací zpráva pro zprávu {pdu.receipted_message_id}") print(f"Stav: {pdu.message_state}") # Nastavení obsluhy doručovacích zpráv client.set_message_received_handler(lambda pdu: handle_delivery_report(pdu))
Kompletní příklad Python SMPP API klienta pro odesílání SMS
Níže je kompletní, produkčně připravený skript v Pythonu, který integruje SMPP API pro odesílání SMS, udržování stabilního připojení a zpracování doručovacích zpráv:
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) # Připojení k SMPP serveru self.client.connect() self.client.bind_transceiver( system_id=system_id, password=password, ) # Spuštění 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 odeslán") except Exception: try: self.client.connect() self.client.bind_transceiver( system_id=system_id, password=password, ) print("Obnoveno připojení k SMPP serveru") except Exception as e: print(f"Obnovení připojení selhalo: {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"Odeslání SMS selhalo: {e}") return None def handle_message(self, pdu): if pdu.command == "deliver_sm": print(f"Doručovací zpráva: {pdu.receipted_message_id} - {pdu.message_state}") else: print(f"Přijata zpráva: {pdu.short_message}") # Příklad použití if __name__ == "__main__": client = SMPPClient( host="your.ozeki.server", port=2775, system_id="your_username", password="your_password" ) # Odeslat SMS client.send_sms( from_addr="12345", to_addr="+1234567890", message="Ahoj z Python SMPP klienta!" ) # Udržovat skript spuštěný while True: time.sleep(1)
Doporučené postupy pro integraci SMPP API s Pythonem
- Ošetření chyb: Vždy implementujte robustní ošetření výjimek pro správu selhání připojení, chyb PDU a časových limitů.
- Obnovení připojení: Zahrňte logiku pro automatické opětovné připojení, pokud se SMPP připojení přeruší.
- Logování: Logujte stav připojení, odeslané zprávy a doručovací zprávy pro ladění a monitorování.
- Bezpečnost: Uchovávejte přihlašovací údaje SMPP bezpečně, pomocí proměnných prostředí nebo konfiguračního souboru.
- Škálovatelnost: Pro aplikace s vysokým objemem SMS zvažte použití asynchronních knihoven nebo poolování připojení.
Závěr
Tento průvodce poskytl podrobný návod pro integraci SMPP API s
Pythonem pomocí Ozeki SMS Gateway. Využitím knihovny smpplib
mohou vývojáři snadno navázat spolehlivá SMPP připojení, odesílat SMS zprávy a
zpracovávat doručovací zprávy. Poskytnuté příklady kódu v Pythonu a doporučené
postupy zajišťují robustní a škálovatelné SMS aplikace pro různé případy použití,
od oznámení po marketingové kampaně.
Poznámka: Pro produkční prostředí vylepšete poskytnutý kód o komplexní ošetření chyb, logiku opětovného připojení a logování, aby byla zajištěna maximální spolehlivost a výkon.
More information
- Jak nastavit klientské připojení SMPP API s vaším SMSC
- Jak nastavit SMPP API server pro odesílání a příjem SMS z více aplikací
- Jak vybrat správného poskytovatele SMPP API pro vaše podnikání
- Jak odesílat SMS pomocí SMPP API na úrovni protokolu
- Jak odesílat SMS přes SMPP API pomocí Pythonu
- Jak odesílat SMS přes SMPP API pomocí Javascriptu
- Jak odesílat SMS přes SMPP API pomocí Javy
- Jak odesílat SMS přes SMPP API pomocí PHP
- Jak odeslat SMS přes SMPP API pomocí C#
- Jak odesílat SMS přes SMPP API pomocí C/Cpp
- Jak přijímat SMS pomocí SMPP API
- Jak přijmout zprávu o doručení SMS pomocí SMPP API
- SMPP API FAQ