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.

Poslať SMS pomocou Pythonu a SMPP API
Obrázok 1 - Odosielanie SMS pomocou Pythonu a SMPP API

Prečo používať Python s SMPP API na odosielanie SMS?

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).

Ako poslať SMS cez SMPP API pomocou Pythonu (Rýchle kroky)
  1. 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.
  2. Napíšte a spustite Python kód: Použite knižnicu smpplib na vytvorenie skriptu pre pripojenie k SMPP serveru a odosielanie SMS.
  3. Skontrolujte výsledky: Potvrďte úspešné doručenie správy prostredníctvom logov v rozhraní Ozeki SMS Gateway.
Ako poslať SMS cez SMPP API pomocou Pythonu (Video návod)

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.

Vyberte SMPP používateľa v Ozeki SMS Gateway
Obrázok 2 - Výber SMPP používateľa v Ozeki SMS Gateway

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.

Údaje o SMPP pripojení
Obrázok 3 - Získavanie údajov o SMPP pripojení

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.

Vložte Python SMPP kód
Obrázok 4 - Vkladanie Python SMPP kódu

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.

Aktualizujte SMPP prihlasovacie údaje v Pythone
Obrázok 5 - Aktualizácia SMPP prihlasovacích údajov v Python skripte

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.

Úspešné SMPP pripojenie
Obrázok 6 - Potvrdenie úspešného SMPP pripojenia

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)
Udržanie stabilného SMPP API spojenia v Pythone pre odosielanie SMS

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í.
Záver

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