Jak wysłać SMS przez interfejs SMPP API za pomocą Pythona
Interfejs SMPP (Short Message Peer-to-Peer) to szeroko stosowany protokół wymiany wiadomości SMS między podmiotami SMS, takimi jak ESME (External Short Message Entities) i SMSC (Short Message Service Centers). Dla użytkowników platformy Ozeki SMS Gateway zrozumienie interakcji na poziomie protokołu SMPP jest kluczowe dla optymalizacji wydajności, debugowania i niestandardowych integracji. Ten przewodnik wyjaśnia PDU (Protocol Data Units) SMPP wymagane do nawiązania, utrzymania i wykorzystania połączenia SMPP API w celu wysyłania wiadomości SMS, z praktycznymi przykładami w Pythonie.
Jak wysłać SMS przez interfejs SMPP API za pomocą Pythona (Szybkie kroki)
- Sprawdź dane uwierzytelniające SMPP
- Napisz i uruchom skrypt w Pythonie
- Zweryfikuj wynik
Jak wysłać SMS przez interfejs SMPP API za pomocą Pythona (Samouczek wideo)
W tym filmie dowiesz się, jak wysyłać wiadomości SMS za pomocą Pythona przez interfejs SMPP API z Ozeki SMS Gateway. Samouczek pokazuje, jak skonfigurować użytkownika SMPP, połączyć się za pomocą biblioteki smpplib i wysłać SMS za pomocą kilku linii kodu. Zobaczysz również, jak utrzymać połączenie przy życiu i obsługiwać raporty dostarczenia. Na końcu będziesz mieć działający skrypt w Pythonie gotowy do wysyłania wiadomości SMS przez SMPP.
Krok 1 - Wybierz użytkownika SMPP
W interfejsie Ozeki SMS Gateway przejdź do sekcji "Użytkownicy i aplikacje" i wybierz wcześniej utworzonego użytkownika SMPP. Ten użytkownik jest wymagany do nawiązania połączenia SMPP z Pythona.
Krok 2 - Dane połączenia
Po wybraniu użytkownika SMPP przejdź do zakładki "Pomoc", gdzie zobaczysz dane połączenia, takie jak adres IP, numer portu, nazwa użytkownika i hasło. Te wartości zostaną użyte w Twoim kodzie Pythona do połączenia z SMS Gateway.
Krok 3 - Wklej kod Pythona
Otwórz swoje IDE lub edytor Pythona i wklej "Kompletny przykład klienta SMPP API w Pythonie do wysyłania SMS" kod połączenia SMPP z biblioteki smpplib. Ten kod inicjuje połączenie i przygotowuje środowisko do wysyłania SMS.
Krok 4 - Zastąp dane
Zaktualizuj wartości zastępcze w kodzie swoimi rzeczywistymi danymi uwierzytelniającymi SMPP (host, port, nazwa użytkownika, hasło) oraz numerami telefonów, których chcesz użyć do wysyłania wiadomości.
Krok 5 - Sukces
Uruchom skrypt. Jeśli wszystko jest poprawnie skonfigurowane, w interfejsie Ozeki SMS Gateway w logach zostanie wyświetlona informacja, że operacja zakończyła się sukcesem, co potwierdzi, że połączenie jest aktywne i gotowe do wysyłania wiadomości.
Jak nawiązać połączenie SMPP API w Pythonie do wysyłania wiadomości SMS
Aby wysłać SMS przez SMPP API, musisz najpierw serwerem SMPP Ozeki SMS Gateway. Oto jak to zrobić w Pythonie za pomocą biblioteki smpplib
:
import smpplib # Parametry połączenia HOST = 'your.ozeki.server' PORT = 2775 SYSTEM_ID = 'your_username' PASSWORD = 'your_password' # Utwórz klienta client = smpplib.client.Client(HOST, PORT) # Powiąż jako nadajnik client.connect() client.bind_transmitter( system_id=SYSTEM_ID, password=PASSWORD, ) print("Pomyślnie powiązano z serwerem SMPP")
Kluczowe PDU do konfiguracji połączenia
PDU | Metoda w Pythonie | Cel |
---|---|---|
bind_transmitter |
client.bind_transmitter() |
Inicjuje połączenie do wysyłania SMS |
bind_receiver |
client.bind_receiver() |
Konfiguruje połączenie do odbierania SMS |
bind_transceiver |
client.bind_transceiver() |
Umożliwia dwukierunkową komunikację |
Utrzymanie stabilnego połączenia SMPP API w Pythonie do wysyłania SMS
Połączenia SMPP wymagają okresowych sygnałów keep-alive, aby zapobiec przekroczeniu czasu. Oto jak to zaimplementować w Pythonie:
import time import threading def send_enquire_link(): while True: try: client.enquire_link() print("Wysłano PDU enquire_link") except Exception as e: print(f"Błąd podczas wysyłania enquire_link: {e}") time.sleep(30) # Wysyłaj co 30 sekund # Uruchom wątek keep-alive keepalive_thread = threading.Thread(target=send_enquire_link) keepalive_thread.daemon = True keepalive_thread.start()Wysyłanie SMS-ów za pomocą Pythona przez interfejs SMPP API
Oto kompletny przykład wysyłania SMS-a i obsługi odpowiedzi:
def send_sms(source_addr, destination_addr, message): try: # Wyślij PDU submit_sm 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, # Kodowanie GSM 7-bitowe ) print(f"Wiadomość wysłana, identyfikator: {pdu.message_id}") except smpplib.exceptions.PDUError as e: print(f"Błąd PDU: {e}") except Exception as e: print(f"Błąd podczas wysyłania SMS-a: {e}") # Przykład użycia send_sms( source_addr="12345", destination_addr="+1234567890", message="Witaj z klienta SMPP w Pythonie!" )
Obsługa raportów doręczeń
Aby odbierać raporty doręczeń w Pythonie:
def handle_delivery_report(pdu):
print(f"Otrzymano raport doręczenia dla wiadomości {pdu.receipted_message_id}")
print(f"Status: {pdu.message_state}")
# Ustaw handler raportów doręczeń
client.set_message_received_handler(lambda pdu: handle_delivery_report(pdu))
Kompletny przykład klienta SMPP API w Pythonie do wysyłania SMS-ów
Oto kompletny działający przykład:
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) # Połącz z serwerem self.client.connect() self.client.bind_transceiver( system_id=system_id, password=password, ) # Uruchom keep-alive self.start_keepalive() def start_keepalive(self): def _keepalive(): while True: try: self.client.enquire_link() except Exception: try: self.client.connect() self.client.bind_transceiver( system_id=SYSTEM_ID, password=PASSWORD, ) except Exception as e: print(f"Ponowne połączenie nieudane: {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"Wysyłanie nieudane: {e}") return None def handle_message(self, pdu): if pdu.command == "deliver_sm": print(f"Raport doręczenia: {pdu.receipted_message_id} - {pdu.message_state}") else: print(f"Otrzymano wiadomość: {pdu.short_message}") # Użycie if __name__ == "__main__": client = SMPPClient( host="your.ozeki.server", port=2775, system_id="your_username", password="your_password" ) # Wyślij wiadomość client.send_sms( from_addr="12345", to_addr="+1234567890", message="Witaj z kompletnego klienta SMPP w Pythonie!" ) # Utrzymuj działanie while True: time.sleep(1)
Podsumowanie
Ten przewodnik pokazał, jak pracować z interfejsem SMPP API na poziomie protokołu przy użyciu Pythona. Implementując te przykłady z Ozeki SMS Gateway, możesz budować solidne aplikacje SMS z funkcjami takimi jak zarządzanie połączeniami, wysyłanie wiadomości i obsługa raportów doręczeń. Biblioteka smpplib
zapewnia wygodny sposób pracy z PDU SMPP, jednocześnie zajmując się szczegółami niskopoziomowego protokołu za Ciebie.
Pamiętaj, aby w kodzie produkcyjnym właściwie obsługiwać wyjątki i zaimplementować logikę ponownego łączenia dla maksymalnej niezawodności. Podany kompletny przykład zawiera podstawową obsługę ponownego łączenia i funkcjonalność keep-alive.
More information
- Jak skonfigurować połączenie klienta SMPP API z Twoim SMSC
- Jak skonfigurować serwer SMPP API do wysyłania i odbierania SMS z wielu aplikacji
- Jak wybrać odpowiedniego dostawcę SMPP API dla Twojej firmy
- Jak wysyłać SMS za pomocą SMPP API na poziomie protokołu
- Jak wysyłać SMS przez SMPP API używając Pythona
- Jak wysyłać SMS przez SMPP API używając Javascript
- Jak wysyłać SMS przez SMPP API używając Java
- Jak wysyłać SMS przez SMPP API używając PHP
- Jak wysyłać SMS-y przez SMPP API za pomocą C#
- Jak wysyłać SMS przez SMPP API używając C/Cpp
- Jak odbierać SMS za pomocą SMPP API
- Jak odebrać raport dostarczenia SMS za pomocą SMPP API
- FAQ SMPP API