avtonom/sms-streamtelecom-bundle
Installation:
composer require avtonom/sms-streamtelecom-bundle ~1.1
Replace ~1.1 with the latest version from releases.
Register Bundles in config/bundles.php (Symfony 4+):
return [
// ...
KPhoen\SmsSenderBundle\KPhoenSmsSenderBundle::class,
Avtonom\Sms\StreamtelecomBundle\AvtonomSmsStreamtelecomBundle::class,
];
Configure in .env:
SMS_PROVIDER_STREAMTELECOM_LOGIN=your_login
SMS_PROVIDER_STREAMTELECOM_PASSWORD=your_password
SMS_PROVIDER_STREAMTELECOM_ORIGINATORS=["SenderName"]
Define Logger (optional but recommended):
# config/services.yaml
services:
avtonom_sms.logger:
class: Symfony\Component\Monolog\Logger
arguments: ['sms']
First Use Case:
Inject sms.sender service and send an SMS:
$this->get('sms.sender')->send('+79123456789', 'Hello from Laravel!', 'YourBrand');
Service Initialization:
KPhoenSmsSenderBundle, so leverage its provider pool (memory by default).streamtelecom as the provider in config/packages/k_phoen_sms_sender.yaml:
k_phoen_sms_sender:
providers: [streamtelecom]
factories: ["%kernel.project_dir%/vendor/avtonom/sms-streamtelecom-bundle/Resources/config/provider_factories.xml"]
Sending SMS:
SmsSenderInterface:
use SmsSender\SmsSenderInterface;
public function __construct(private SmsSenderInterface $sender) {}
$this->sender->send('+79123456789', 'Test message', 'YourBrand');
Balance & Session Management:
SmsSender\Provider\ProviderInterface:
$provider = $this->sender->getProvider('streamtelecom');
$balance = $provider->getBalance(); // Returns float
$sessionId = $provider->getSessionId(); // For API auth
Error Handling:
WrappedException:
try {
$this->sender->send($phone, $message, $originator);
} catch (\SmsSender\Exception\WrappedException $e) {
$data = $e->getWrappedException()->getData();
// Log $data['response'] for debugging
}
Validator to sanitize phone numbers before sending.SmsSenderInterface to throttle requests (e.g., 1 SMS/minute).ProviderInterface in unit tests:
$this->sender->setProvider('streamtelecom', $mockProvider);
Deprecated Symfony2 Syntax:
AppKernel). For Symfony 4+, ensure config/bundles.php is used instead of AppKernel.php.config/packages/ for bundle configs.HTTP Adapter Conflicts:
CurlHttpAdapter. If using BuzzHttpAdapter, install it manually:
composer require kriswallsmith/buzz
services.yaml:
services:
Avtonom\Sms\StreamtelecomBundle\Adapter\BuzzHttpAdapter: ~
Originator Validation:
originators is empty in config, the bundle skips sender-name validation. Populate it to enforce branding:
parameters:
sms.provider.streamtelecom.originators: ["YourBrand", "Support"]
Session Management:
Logging:
avtonom_sms.logger) is optional but critical for debugging. Ensure it’s configured to write to a file/channel.catch (\SmsSender\Exception\WrappedException $e) {
var_dump($e->getWrappedException()->getData()['response']);
}
curl.timeout in php.ini if the API is slow:
// In a service config
services:
Avtonom\Sms\StreamtelecomBundle\Adapter\CurlHttpAdapter:
arguments: [30] # Timeout in seconds
Custom Adapters:
Avtonom\Sms\StreamtelecomBundle\Adapter\AbstractHttpAdapter to add retry logic or headers.Provider Decorators:
ProviderInterface to add features like:
Event Dispatching:
$this->sender->send($phone, $message, $originator);
// Listen for SmsSenderEvents::ON_SEND_FAILURE
Configuration Overrides:
# config/packages/k_phoen_sms_sender.yaml
streamtelecom:
login: "%env(SMS_LOGIN)%"
password: "%env(SMS_PASSWORD)%"
How can I help you explore Laravel packages today?