This Symfony bundle provides basic service for sending short messages. This bundle does not provide you any finished implementation for communicating the SMS gateway. To use it you have use some transport implementation or implement a transport on your own. See usage section for known implementations
- Service and configurable transports
- Ability to disable delivery via config for testing purposes
- Ability to force redirect messages for testing purposes
- Profiling via Sf2 Toolbar
- Spooling and delayed sending
- Bulk sending
This bunde could be installed via Composer
composer require scaytrase/symfony-sms-delivery-bundle:~2.0
update your kernel bundle requirements as follows:
$bundles = array(
//....
new ScayTrase\SmsDeliveryBundle\SmsDeliveryBundle(),
//....
);
Below is the configuration example and their default values
sms_delivery:
spool: sms_delivery.spool.instant
transport: sms_delivery.dummy_sender # @id of the transport service
disable_delivery: false # disable delivery overrides spool with disabled spool
delivery_recipient: null # delivery recipient overrides recipient when sending
To use this interface you must create a message class implementing ShortMessageInterface
and create the implementation of the
TransportInterface
that delivers your message to end point sms gateway.
You can refer my WebSMS gateway implementation as a reference.
class MyMessage implements ShortMessageInterface { /*...*/ }
class SmsController extends Controller {
public function sendSmsAction()
{
$message = new MyMessage('5552368','Help!')
$sender = $this->get('sms_delivery.sender');
$sender->spoolMessage($message);
$result = $sender->flush();
return new Response('Delivery '. $result ? 'successful' : 'failed');
}
}
Despite of the fact that this library is designed as Symfony bundle it could be used as standalone library for sending short messages. You should just instantiate sender service on your own.
class MyProviderSmsTransport implements TransportInterface { /*...*/ }
class MyMessage implements ShortMessageInterface { /*...*/ }
$transport = new MyProviderSmsTransport();
$sender = new MessageDeliveryService($transport);
$sender->spoolMessage(new MyMessage('Message body'));
$sender->flush(); // Default InstantSpool does not actually needs flushing but you can use another spool instead