- Can I use symfony/esendex-notifier directly in Laravel without Symfony’s Notifier?
- No, this package requires Symfony’s Notifier component as a dependency. You’ll need to install `symfony/notifier` and create a custom Laravel transport adapter to bridge Symfony’s `SmsMessage`/`Email` to Laravel’s `Notification` system. The package itself is not Laravel-native.
- How do I configure Esendex in Laravel’s .env file?
- Use the DSN format: `ESENDEX_DSN=esendex://EMAIL:PASSWORD@default?accountreference=ACCOUNT_REF&from=FROM`. Store this in `.env`, but note that Symfony’s Notifier must be manually initialized (e.g., via a service provider) to read it, as Laravel’s native config system isn’t directly supported.
- Will this work with Laravel’s queue system for async SMS sends?
- Yes, but you’ll need to wrap the Symfony Notifier’s send logic in a Laravel job. Use `shouldQueue()` on your notification class and process the `SmsMessage` via the Esendex transport in the job’s `handle()` method. Esendex’s API supports async sends, but Laravel’s queue handles the orchestration.
- Does this package support Laravel’s markdown emails or notification channels (e.g., Slack)?
- No, this package is SMS-focused and only bridges Symfony’s Notifier to Esendex. For markdown emails or multi-channel support, you’d need to extend Laravel’s native `Notification` system separately or use a different package like `laravel-notification-channels/esendex`.
- What Laravel versions are compatible with symfony/esendex-notifier?
- The package itself doesn’t enforce Laravel version constraints, but it depends on Symfony’s Notifier (v5.4+). Test with Laravel 8.x/9.x/10.x, but ensure your Symfony Notifier version aligns with Laravel’s PHP version (8.1+). Check the [Symfony Notifier docs](https://symfony.com/doc/current/notifier.html) for details.
- How do I handle Esendex webhook callbacks (e.g., delivery status) in Laravel?
- This package doesn’t include webhook handling. You’ll need to create a Laravel route/controller to receive Esendex’s webhook payloads (e.g., at `/esendex/webhook`). Use Esendex’s API docs to validate signatures and parse delivery statuses, then dispatch Laravel events or update your database accordingly.
- Is there a way to add custom headers or retry logic for failed SMS sends?
- Yes, use the `EsendexOptions` class to set per-message options like `accountReference` or custom headers. For retries, wrap the send logic in a Laravel job with exponential backoff or use a queue driver like `database` with `retryAfter` logic. The package itself doesn’t include built-in retry mechanisms.
- What are the alternatives to this package for Laravel + Esendex?
- Consider `laravel-notification-channels/esendex` (Laravel-native) or Esendex’s [official PHP SDK](https://developers.esendex.com/api-reference#php). The Symfony bridge is useful if you’re already using Symfony Notifier, but for pure Laravel apps, the official SDK or Laravel channel may offer tighter integration with queues, events, and notifications.
- How do I test SMS sends in a CI environment without hitting rate limits?
- Use Esendex’s sandbox environment (check their docs) or mock the `EsendexTransport` in tests. Replace the real DSN with a test account in your `.env.testing` file. For unit tests, mock Symfony’s `TransportInterface` to avoid actual API calls. Example: `This->partialMock(EsendexTransport::class, ['doSend'])`.
- What happens if Esendex changes their API endpoints or authentication method?
- The package could break if Esendex modifies their API, as it relies on their undocumented transport layer. Mitigate this by: 1) Subscribing to Esendex’s API changelog, 2) Forking the repo to add feature flags for deprecated endpoints, or 3) falling back to Esendex’s official PHP SDK for critical paths.