DownloadSMSGateway ? A flat-file based SMS gateway PHP class using an open source Android app
Features
-
SMS gateway using the open source Android app SMS Gateway
License
This software is distributed under the LGPL-3.0-only license. Please read LICENSE for information on the software availability and distribution.
Installation & loading
SMSGateway is available on Packagist (using semantic versioning), and installation via Composer is the recommended way to install SMSGateway. Just add this line to your composer.json file:
"multiotp/smsgateway": "^1.0"
or run
composer require multiotp/smsgateway
Note that the vendor folder and the vendor/autoload.php script are generated by Composer; they are not part of SMSGateway.
Alternatively, if you're not using Composer, you
can download SMSGateway as a zip file, then copy the contents of the SMSGateway folder into one of the include_path directories specified in your PHP configuration and load each class file manually:
<?php
use multiOTP\SMSGateway\SMSGateway;
require 'path/to/SMSGateway/src/SMSGateway.php';
Two simple examples
<?php
//Import SMSGateway classes into the global namespace
//These must be at the top of your script, not inside a function
use multiOTP\SMSGateway\SMSGateway;
//Load Composer's autoloader
require 'vendor/autoload.php';
//Create an instance
$smsgateway = new SMSGateway();
// Set the data folder
$smsgateway->setDataPath(__DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR);
// Set the shared secret
$smsgateway->setSharedSecret("secret");
$device_id = "demo";
$to = "+1234567890";
$message = "Demo message";
$device_h = $smsgateway->calculateAuthenticationHash($device_id);
$message_id = $smsgateway->sendMessage($device_id, $to, $message);
echo "Full URL for Android app URL: https://......./?id=$device_id&h=$device_h";
<?php
//Import SMSGateway classes into the global namespace
//These must be at the top of your script, not inside a function
use multiOTP\SMSGateway\SMSGateway;
//Load Composer's autoloader
require 'vendor/autoload.php';
// Please note that implementing a new_message_handling callback function
// will flag the new messages as read when returning from the function.
function new_message_handling($array) {
// Handling $array of new received messages
// [["device_id" => "device id",
// "message_id" => "message id",
// "from" => "from phone number",
// "sms_sent" => "sms_sent timestamp (ms)",
// "sms_received" => "sms_received timestamp (ms)",
// "content" => "message content",
// "last_update" => "last update timestamp (ms)",
// "status" => "UNREAD|READ"
// ],
// [...]
// ]
}
function update_handling($array) {
// Handling $array of status updates for sent messages
// [["device_id" => "device id",
// "message_id" => "message id",
// "to" => "to phone number",
// "content" => "content",
// "last_update" => "last update timestamp (ms)",
// "status" => "NEW|PUSHED|PENDING|SENT|DELIVERED|FAILED"
// ],
// [...]
// ]
}
function timeout_handling($array) {
// Handling $array of devices not seen during the last "DeviceTimeout" seconds
// [["device_id" => "device_id",
// "last_update" => "device_last_update"
// ],
// [...]
// ]
}
//Create an instance
$smsgateway = new SMSGateway();
// Set the data folder
$smsgateway->setDataPath(__DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR);
// Launch the API server with callback functions definition
$smsgateway->apiServer("secret", "new_message_handling", "update_handling", "timeout_handling");
SMS messages status
Received message
-
UNREAD: message has never been read on the gateway
-
READ: message has already been read on the gateway
Sent message
-
NEW: new created message, not transfered yet to the Android device
-
PUSHED: message pushed to the Android device
-
PENDING: message is pending in the Android device
-
SENT: message has been sent to the gateway's network
-
DELIVERED: message has been received by the recipient's phone
-
FAILED: message delivery has failed and will not be retried
Online demo
A full working gateway implementation is available here : Online SMSGateway demo. Click the link and everything is self-explanatory. You will simply have to install and configure the companion open source Android app in order to send and receive SMS messages through this demo gateway (as explained after sending a first SMS message using the online demo gateway).
Documentation
Example of how to use SMSGateway for a common scenario can be found in the examples folder. If you're looking for a good starting point, we recommend you start with the gateway example.
Changelog
See CHANGELOG.
That's it. You should now be ready to use SMSGateway! |