tarfin-labs/netgsm
Laravel package for sending SMS through NetGSM, a Turkish SMS gateway. It offers a simple, fluent API for sending single or bulk messages, checking delivery reports, and managing account details, with configuration handled through Laravel's config and service container.
composer require tarfin-labs/netgsm, then publish the config (php artisan vendor:publish --tag=netgsm-config) and put credentials in .env — at minimum username, password and the approved message header (msgheader). Nothing works until NetGSM has whitelisted that header for your account.config/netgsm.php (credential keys and any endpoint/timeout options), the Netgsm facade root, and the README's usage block for the exact send/report method signatures — the public surface is small, so the README plus the facade is usually the whole story.SmsSender/SmsService class so call sites stay testable and you can swap providers later. Notifications should go through a custom NotificationChannel that delegates to that service.$tries, backoff(), and ShouldBeUnique/rate limiting for bulk batches.pending status. Delivery reports are the only reliable source of truth for "delivered" vs "rejected", so a scheduled command that polls pending messages older than N minutes and updates statuses is the standard pattern.Http::fake()) or bind a stub implementation of your own service interface in the container. Assert on what you tried to send, not on the provider.config()->set() calls — the latter is fragile under Octane and queue workers that process several tenants.int to string. Treat this as a silent breaking change if you type-hinted int $jobId anywhere, compared with === against an int, or stored the id in an INT/BIGINT column. Since NetGSM ids should be treated as opaque identifiers, storing them as VARCHAR and typing them as string is the correct end state — audit your schema and any strict comparisons before upgrading.php artisan config:cache after any env change; stale credentials after a deploy are the most common "it worked locally" failure.composer.json with a caret constraint and read the changelog on minors — this release shows minor bumps can carry return-type changes that PHP's type system will only catch at the call site, not at install time.How can I help you explore Laravel packages today?