kronas/smpp-client-bundle
Laravel bundle that wraps an SMPP client, letting PHP applications send SMS through an SMSC using the SMPP protocol. Configure the SMSC host, port, and credentials, then submit messages directly from your Laravel app without handling raw SMPP sockets yourself.
SMS transport strategy: direct SMPP bind vs. HTTP aggregator API. This package exists to answer one question cheaply: “do we hold a persistent SMPP session to an SMSC/aggregator, or do we call Twilio/Vonage-style REST endpoints?” It supports that decision by making the SMPP path a low-friction thing to try, inside an existing PHP codebase, rather than something that requires standing up a separate service. A PM should treat it as a spike tool, not an architecture commitment.
Build vs. buy on messaging infrastructure. A thin wrapper over a known-good protocol library (onlinecity/php-smpp) is the “assemble” option: you own session lifecycle, retries, and queueing; the vendor owns the SMSC and the carrier relationship. The package itself is evidence for the “buy/assemble” pole — it demonstrates how little glue is needed on your side once a library exists, and how much of the real work (connection, DLR correlation, reconnection) is operational rather than code.
Unit economics and margin at volume. SMPP binds are the lever for per-message margin, throughput per connection, sender-ID control, and native delivery receipts. If the roadmap includes OTPs, transactional alerts, or notification volume where per-message cost is a line item, prototyping this path gives you real numbers to negotiate with, instead of assumptions. That’s a decision a PM can defend with data.
Reliability and failover architecture as an explicit design commitment. SMPP forces decisions PMs usually defer: reconnect/backoff policy, DLR correlation, multi-vendor failover, dead-letter handling. Standing up even a prototype surfaces those as roadmap items with owners and timelines rather than surprises post-launch.
Roadmap gating: platform modernization. The package targets PHP 5 / Symfony 2. In a Laravel context that is already the wrong stack. Adopting it is a decision about not modernizing whatever service it lands in — a legitimate short-term call for a frozen legacy service, but one that must be recorded as technical debt with an exit date.
Sourcing and risk posture. With 4 stars and 0 dependents, this is a single-team fork of a fork. The PM decision it informs is whether to vendor/pin and own it internally, or treat it strictly as a throwaway spike. Either way, the package itself is a reference implementation, not a dependency you inherit.
Consider it (narrowly, as a spike) when all of the following hold:
data_coding handling.submit_sm / deliver_sm, name a maintainer, and put it behind an internal MessageSender interface so the transport is swappable.Look elsewhere when:
onlinecity/php-smpp directly (or a maintained fork), and write your own Laravel service provider — you’ll get the same capabilities with a fraction of the legacy surface.To executives: We are evaluating how we send SMS — through a per-message HTTP vendor API, or over a direct SMPP connection to a carrier or aggregator. This package is a low-cost way to prototype the direct path inside an existing PHP app so we can measure real throughput, delivery-receipt behavior, and per-message cost before committing to a multi-year vendor or build decision. The strategic upside is margin at volume and sender-ID control. The risk is that the code itself is an unmaintained Symfony2 fork with effectively no community — so we would treat it as internal, owned, and temporary, never as a dependency we lean on. Recommendation: run a two-to-four week spike behind an internal MessageSender interface, capture measured cost and delivery quality, and then choose between a maintained open-source client, a commercial SMPP aggregator, or a CPaaS. Do not let it become permanent infrastructure by default.
To engineering: This is a Symfony2/PHP 5 bundle wrapping onlinecity/php-smpp — a genuine SMPP 3.4 implementation (bind_transceiver, submit_sm, deliver_sm for DLRs and MO, enquire_link keepalive, UDH/multipart). It is not a Laravel package and is not adoptable on a modern stack — the container, config, and event wiring have no Laravel equivalent, and the PHP 5 syntax will break on PHP 8. If we pilot it: vendor and pin the source, extract the underlying SM\* classes and discard the Symfony bundle glue, wrap them in a Laravel service provider, isolate behind a transport-agnostic interface, and run the session in a supervised long-lived worker or queue consumer — never in a web request. Instrument reconnect/backoff and DLR correlation explicitly; those are where SMPP integrations fail in production, and this bundle is not going to give them to us. Budget the follow-on now: reimplementation on PHP 8 with a maintained client or a managed SMPP vendor, with the bundle serving only as a protocol reference during the spike.
How can I help you explore Laravel packages today?