Ako poslať SMS cez SMPP API pomocou PHP
Short Message Peer-to-Peer (SMPP) API je výkonný telekomunikačný protokol určený na výmenu SMS správ medzi partnerskými entitami, ako sú SMS centrá a externé aplikácie. Tento komplexný sprievodca ukazuje, ako implementovať SMPP API pomocou PHP na pripojenie k Ozeki SMS Gateway, čo umožňuje vývojárom efektívne odosielať a spravovať SMS správy. S detailnými príkladmi kódu v PHP tento tutoriál pokrýva nastavenie pripojenia, odosielanie správ, doručovacie správy a osvedčené postupy pre vytvorenie robustného klienta SMPP API.
Pochopenie SMPP API a jeho úlohy v SMS komunikácii
SMPP API (Short Message Peer-to-Peer) je široko používané v telekomunikačnom priemysle na uľahčenie vysokoobjemovej SMS komunikácie. Umožňuje aplikáciám pripojiť sa k SMS bráne, ako je Ozeki SMS Gateway, na spoľahlivé odosielanie a prijímanie správ. Využitím PHP môžu vývojári vytvárať škálovateľné aplikácie, ktoré interagujú s SMPP API na správu SMS pracovných postupov. Tento sprievodca používa knižnicu php-smpp
, robustný nástroj na implementáciu SMPP protokolu v PHP, na zjednodušenie interakcií s nízkou úrovňou protokolu.
Nastavenie PHP SMPP klienta na odosielanie SMS cez SMPP API
Na odoslanie SMS cez SMPP API musíte najprv SMPP server Ozeki SMS Gateway. Použijeme knižnicu php-smpp, ktorá poskytuje implementáciu SMPP protokolu:
- Nainštalujte knižnicu
php-smpp
pomocou Composeru na spracovanie interakcií s SMPP API. - Nakonfigurujte svoje prihlasovacie údaje, vrátane hostiteľa, portu, používateľského mena a hesla poskytnutého Ozeki SMS Gateway.
- Nadviažte spojenie so SMPP serverom pomocou soketového transportu.
Tu je návod, ako nainštalovať knižnicu:
composer require onlinecity/php-smpp
Základný príklad pripojenia pre SMPP API v PHP
Nasledujúci kód v PHP demonštruje, ako nadviazať spojenie s Ozeki SMS Gateway pomocou SMPP API. Tento príklad používa knižnicu php-smpp
na vytvorenie klienta, pripojenie k serveru a naviazanie ako vysielač na odosielanie SMS správ.
<?php require 'vendor/autoload.php'; use Smpp\Client; use Smpp\Transport\Socket; $host = 'your.ozeki.server'; $port = 2775; $username = 'your_username'; $password = 'your_password'; // Vytvorenie transportu a klienta $transport = new Socket([$host], $port); $transport->setRecvTimeout(30000); $smpp = new Client($transport); // Pripojenie a naviazanie $transport->open(); $smpp->bindTransmitter($username, $password); echo "Úspešne pripojené k SMPP serveru\n"; // Odoslanie správy tu... // Uzatvorenie spojenia $smpp->close(); ?>
Tento kód inicializuje soketový transport, nastaví časový limit na prijímanie dát a naviaže klienta ako vysielača pomocou poskytnutých prihlasovacích údajov. Po pripojení je klient pripravený odosielať SMS správy cez SMPP API.
Udržiavanie spojenia s PHP cez SMPP API
Na zabezpečenie spoľahlivého pripojenia k SMPP API musí vaša aplikácia v PHP odosielať periodické keep-alive správy pomocou PDU enquire_link
. Tým sa zabráni vypršaniu časového limitu spojenia a zabezpečí sa nepretržitá prevádzka. Nižšie je uvedený príklad, ako implementovať mechanizmus keep-alive v PHP.
function sendKeepAlive($smpp) { try { $smpp->enquireLink(); echo "Keep-alive správa odoslaná\n"; } catch (Exception $e) { echo "Keep-alive zlyhal: " . $e->getMessage() . "\n"; // Implementujte logiku opätovného pripojenia tu } } // Odosielanie keep-alive každých 30 sekúnd $keepAliveInterval = 30; $lastKeepAlive = time(); while (true) { if (time() - $lastKeepAlive >= $keepAliveInterval) { sendKeepAlive($smpp); $lastKeepAlive = time(); } // Spracovanie ďalších operácií tu sleep(1); }
Tento skript odosiela keep-alive správu každých 30 sekúnd a obsahuje spracovanie chýb na správu problémov s pripojením. Ak keep-alive zlyhá, môžete implementovať logiku opätovného pripojenia na obnovenie spojenia s SMPP API.
Odosielanie SMS správ pomocou PHP cez SMPP API
Odosielanie SMS správ cez SMPP API v PHP zahŕňa vytvorenie SMS správy s PDU submit_sm
. Nasledujúci príklad ukazuje, ako odoslať správu pomocou knižnice php-smpp
.
use Smpp\Address; use Smpp\SMS; $from = new Address('12345', SMPP::TON_ALPHANUMERIC); $to = new Address('+1234567890', SMPP::TON_INTERNATIONAL, SMPP::NPI_ISDN); $message = new SMS($from, $to, 'Ahoj z PHP SMPP klienta!'); $message->setDataCoding(SMPP::DATA_CODING_DEFAULT); try { $messageId = $smpp->sendSMS($message); echo "Správa úspešne odoslaná, ID: $messageId\n"; } catch (Exception $e) { echo "Odoslanie správy zlyhalo: " . $e->getMessage() . "\n"; }
V tomto príklade je adresa odosielateľa nastavená ako alfanumerický reťazec a číslo príjemcu používa medzinárodný formát. Nastavenie DATA_CODING_DEFAULT
zabezpečuje kompatibilitu so štandardnými textovými správami. Spracovanie chýb zaisťuje, že akékoľvek problémy počas odosielania správy sú zachytené a nahlásené.
Spracovanie správ o doručení pomocou PHP cez SMPP API
SMPP API podporuje správy o doručení na sledovanie stavu
odoslaných správ. Ak chcete tieto správy prijímať v PHP,
naviažte svojho klienta ako prijímateľa a spracujte prichádzajúce
deliver_sm
PDU. Nasledujúci kód ukazuje, ako túto funkciu implementovať.
// Najprv sa naviažte ako prijímateľ, aby ste dostávali správy o doručení $smpp->bindReceiver($username, $password); while (true) { try { $pdu = $smpp->readPDU(); if ($pdu instanceof DeliverSm) { $messageId = $pdu->getReceiptedMessageId(); $status = $pdu->getMessageStatus(); echo "Správa o doručení pre $messageId: $status\n"; // Odoslať odpoveď $smpp->respond($pdu, new DeliverSmResp()); } } catch (Exception $e) { echo "Chyba pri čítaní PDU: " . $e->getMessage() . "\n"; break; } }
Tento kód naviaže klienta ako prijímateľa na počúvanie správ o doručení, spracuje prichádzajúce PDU a odošle príslušné odpovede. Tým sa zabezpečí, že vaša PHP aplikácia môže efektívne sledovať stavy doručenia správ.
Kompletný PHP SMPP klient na odosielanie SMS cez SMPP APINižšie je uvedená komplexná PHP trieda, ktorá zahŕňa funkčnosť SMPP API, vrátane správy pripojenia, odosielania správ a logiky opätovného pripojenia. Táto implementácia je navrhnutá pre produkčné použitie s robustným spracovaním chýb a modularitou.
<?php require 'vendor/autoload.php'; use Smpp\Client; use Smpp\Transport\Socket; use Smpp\Address; use Smpp\SMS; class SMPPClient { private $transport; private $smpp; private $config; private $isConnected = false; public function __construct($config) { $this->config = $config; $this->connect(); } public function connect() { try { $this->transport = new Socket([$this->config['host']], $this->config['port']); $this->transport->setRecvTimeout(30000); $this->smpp = new Client($this->transport); $this->transport->open(); $this->smpp->bindTransceiver( $this->config['username'], $this->config['password'] ); $this->isConnected = true; echo "Pripojené k SMPP serveru\n"; } catch (Exception $e) { echo "Pripojenie zlyhalo: " . $e->getMessage() . "\n"; $this->reconnect(); } } public function sendSMS($from, $to, $message) { if (!$this->isConnected) { throw new Exception("Nie ste pripojený k SMPP serveru"); } try { $fromAddr = new Address($from, SMPP::TON_ALPHANUMERIC); $toAddr = new Address($to, SMPP::TON_INTERNATIONAL, SMPP::NPI_ISDN); $sms = new SMS($fromAddr, $toAddr, $message); $sms->setDataCoding(SMPP::DATA_CODING_DEFAULT); return $this->smpp->sendSMS($sms); } catch (Exception $e) { $this->isConnected = false; throw $e; } } public function reconnect() { $this->close(); sleep(5); $this->connect(); } public function close() { if ($this->isConnected) { $this->smpp->close(); $this->isConnected = false; } } public function __destruct() { $this->close(); } } // Príklad použitia $config = [ 'host' => 'your.ozeki.server', 'port' => 2775, 'username' => 'your_username', 'password' => 'your_password' ]; $client = new SMPPClient($config); try { $messageId = $client->sendSMS('12345', '+1234567890', 'Ahoj z PHP!'); echo "Správa odoslaná s ID: $messageId\n"; } catch (Exception $e) { echo "Chyba pri odosielaní správy: " . $e->getMessage() . "\n"; } ?>
Táto trieda poskytuje opakovane použiteľnú implementáciu PHP pre SMPP API, s metódami na pripojenie, odosielanie správ, opätovné pripojenie pri zlyhaní a uvoľnenie zdrojov. Je navrhnutá tak, aby bola modulárna a ľahko integrovateľná do väčších aplikácií.
Najlepšie postupy pre vytvorenie PHP SMPP klientaAk chcete zabezpečiť, že vaša PHP aplikácia používajúca SMPP API je robustná a škálovateľná, dodržiavajte tieto najlepšie postupy:
- Implementujte robustné spracovanie chýb: Zachytávajte a spracúvajte výnimky pre zlyhania pripojenia, chyby pri odosielaní správ a problémy so spracovaním PDU, aby ste zabezpečili spoľahlivosť.
- Použite trvalé pripojenia: Udržiavajte jedno pripojenie k SMPP API, aby ste znížili režiu a zlepšili výkon.
- Implementujte front správ: Pre odosielanie SMS vo veľkom objeme použite front na správu doručenia správ a zabránenie preťaženiu servera.
- Sledujte stav pripojenia: Priebežne kontrolujte stav pripojenia a implementujte logiku automatického opätovného pripojenia na zvládnutie výpadkov siete.
- Použite pracovný proces: Spustite svojho PHP SMPP klienta ako démona alebo pracovný proces pre nepretržitú prevádzku v produkčných prostrediach.
- Logujte aktivitu: Implementujte logovanie na sledovanie udalostí pripojenia, stavov správ a chýb na účely ladenia a monitorovania.
Tento komplexný sprievodca ukázal, ako implementovať PHP
klienta pre SMPP API na odosielanie a správu SMS správ pomocou
Ozeki SMS Gateway. Využitím knižnice php-smpp
sa vývojári môžu
sústrediť na detaily SMPP protokolu nízkej úrovne pri
vytváraní robustných aplikácií. Poskytnuté príklady kódu pokrývajú správu
pripojenia, odosielanie správ, spracovanie správ o doručení a kompletnú
PHP triedu pre produkčné použitie. Pre pokročilé aplikácie
zvážte implementáciu ďalších funkcií, ako je front správ, podrobné logovanie
a monitorovanie, aby ste zvýšili spoľahlivosť a škálovateľnosť.
Pre produkčné prostredia zabezpečte, aby váš PHP SMPP klient obsahoval robustné spracovanie chýb, monitorovanie pripojenia a logovanie. SMPP API podporuje pokročilé funkcie, ako je priorizácia správ a obmedzenie rýchlosti, ktoré môžete preskúmať, keď sa vaše požiadavky na aplikáciu zvýšia.
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