symfony/vonage-notifier
Provides Vonage integration for Symfony Notifier, letting your app send SMS notifications through the Vonage API with no custom transport code. Configure the DSN with your key, secret, and sender: vonage://KEY:SECRET@default?from=FROM. Part of the Symfony Notifier component.
Architecture fit
VonageTransport + VonageTransportFactory that plug into symfony/notifier's transport abstraction (TransportInterface, SentMessage, SmsMessage). Value is realized only if symfony/notifier is installed and is the notification seam in the app.Illuminate\Notifications\Channel, does not register a Notification::extend() driver, and has no service provider, config file, or facade. In a Laravel codebase it can only be used as a low-level library called from a custom channel or a domain service — it will not appear in via() arrays out of the box.vonage://KEY:SECRET@default?from=FROM), which is a genuine plus for 12-factor deployments and credential rotation, but it means no per-tenant or per-message from-number without constructing a second transport instance.Integration feasibility
composer require symfony/notifier symfony/vonage-notifier works in a Laravel app today; the bridge has a small dependency surface.(new Notifier([new VonageTransport($dsn)]))->send(new SmsMessage(...)) inside a custom channel class. That is a real, shippable pattern — but it is glue code we own and test, not something the package provides.hash_equals(), v8.1.0-BETA2 / backported in 8.0.11, 7.4.11, 6.4.39) and v8.1.7 adds verification of the payload_hash claim of signed webhooks — closing a tampered-body gap where a validly signed token could be replayed against an altered payload. The controller, route, replay/receipt logic, and idempotency remain ours to build.Technical risk
Stars: 5 and Dependents: 0 describe a read-only subtree split of symfony/symfony, not a standalone project. Real adoption is invisible here because consumers depend on symfony/notifier and the bridge is pulled via the monorepo. Do not let a "low adoption" signal kill this package without checking that distinction.symfony/symfony, where a low-traffic bridge can sit for a long time. There is no repo-local tracker, no local CI badge, and no dedicated docs beyond a README DSN example.hash_equals() comparison, then payload_hash verification). That is a good sign the code is being actively audited — but it also means any pinned version below v8.1.7 has a known payload-integrity gap for signed webhooks, and older lines carry the unpatched behavior until backported. Do not treat "we verify signatures" as sufficient; verify the claim too, and confirm our pinned line has it.payload_hash fix.Key questions
vonage/laravel-notification-channel + the Vonage SDK?symfony/notifier in a Laravel app.payload_hash fix (v8.1.7) been backported to our pinned line, or does it force us onto 8.1 + PHP 8.4?SmsMessage exposes?Stack fit
symfony/notifier. Zero glue, config-only adoption.symfony/notifier core — typically polyglot PHP orgs standardizing one notification abstraction across services, or teams planning a provider-agnostic SMS layer.Migration path
symfony/notifier + bridge resolves alongside the existing Laravel dependency tree on our target PHP version; send one real SMS in staging; capture the glue class.SmsSender interface we own, so the vendor choice stays reversible.Compatibility
symfony/* transitively via another package.Sequencing
Maintenance
Support
symfony/symfony issue queue plus Vonage's own support for API behavior. There is no commercial support tier for the bridge.Scaling
Failure modes
hash_equals() fix addresses timing-safe comparison; v8.1.7's payload_hash check addresses the subtler attack — a validly signed token accompanying a mutated body. Below v8.1.7 on the 8.1 line, that gap is open. Pin the floor, add replay/idempotency keys, and assert body integrity ourselves rather than trusting the bridge alone.Ramp-up
symfony/notifier's Message/Recipient/Transport concepts are new (half a day of reading, no training program needed).TPM recommendation: conditional adopt — unchanged in direction, tightened on version. Strong yes for a Symfony-based service or an org deliberately standardizing a provider-agnostic notification abstraction. Strong no for a single-provider Laravel app — the Laravel-native Vonage channel is the lower-risk, lower-ownership choice, and choosing this bridge there buys portability we would probably never exercise. If we do adopt and consume webhooks, v8.1.7 is the floor and the payload_hash/backport question is a gate on the 6.4/7.x lines we would otherwise pin for PHP 8.1–8.3.
How can I help you explore Laravel packages today?