andreasnij / an-sms
A PHP library to send and receive SMS text messages through various gateways/providers.
Installs: 3 702
Dependents: 1
Suggesters: 0
Security: 0
Stars: 9
Watchers: 2
Forks: 2
Open Issues: 1
Requires
- php: >=8.1
- php-http/discovery: ^1.14
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.1 || ^2.0
- psr/log: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.4
- phpstan/phpstan: ^1.3
- phpunit/phpunit: ^10.0 | ^11.0
- squizlabs/php_codesniffer: ^3.6
- twilio/sdk: ^6.32
- vonage/client-core: ^4.0
Suggests
- twilio/sdk: Required to use the Twilio gateway
- vonage/client-core: Required to use the Vonage gateway
README
An extendable library for sending and receiving SMS messages.
Supported SMS gateways
Send SMS | Delivery reports | Receive SMS | Premium SMS | |
---|---|---|---|---|
46elks | ✔ | ✔ | ✔ | |
Cellsynt | ✔ | ✔ | ✔ | ✔ |
Vonage (formerly Nexmo) | ✔ | ✔ | ✔ | |
Twilio | ✔ | ✔ | ✔ | |
Telenor SMS Pro | ✔ | ✔ |
You can add and use your own gateway. This library enables easy switching between different gateways.
Installation
Add the package as a requirement to your composer.json
:
$ composer require andreasnij/an-sms
If you want to use the 46elks, Cellsynt or Telenor SMS Pro gateway you also you need implementations of PSR-7: HTTP message interfaces, PSR-17: HTTP Factories and PSR-18: HTTP Client. A popular package for this is Guzzle. You can install it with:
$ composer require guzzlehttp/guzzle:^7.0 guzzlehttp/psr7:^2.0
You may choose to use any other implementations of the PSR interfaces though.
If you want to use the Twilio gateway you also need to install the Twilio SDK:
$ composer require twilio/sdk
If you want to use the Vonage gateway you also need to install the Vonage client:
$ composer require vonage/client-core
Usage
use AnSms\{ SmsTransceiver, Message\Message, Message\PremiumMessage, Gateway\CellsyntGateway }; $gateway = new CellsyntGateway('username', 'password'); $smsTransceiver = new SmsTransceiver($gateway); // Send SMS $message = Message::create('46700000000', 'Hello world!'); $smsTransceiver->sendMessage($message); // Receive SMS $receivedMessage = $smsTransceiver->receiveMessage($_GET); // Receive SMS delivery report $deliveryReport = $smsTransceiver->receiveDeliveryReport($_GET); // Send Premium SMS $premiumMessage = PremiumMessage::createFromIncomingMessage( 'Thanks for your payment!', 5, $receivedMessage ); $smsTransceiver->sendMessage($premiumMessage);
Upgrading
Please see UPGRADING for details.
Author
Andreas Nilsson (https://github.com/andreasnij)
License
This software is licensed under the MIT license - see the LICENSE file for details.