|  Download SMSGateway ? A flat-file based SMS gateway PHP class using an open source Android appFeatures
SMS gateway using the open source Android app SMS Gateway
 LicenseThis software is distributed under the LGPL-3.0-only license. Please read LICENSE for information on the software availability and distribution. Installation & loadingSMSGateway 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.jsonfile: "multiotp/smsgateway": "^1.0"
 or run composer require multiotp/smsgateway
 Note that the vendorfolder and thevendor/autoload.phpscript 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_pathdirectories 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 statusReceived 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 demoA 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). DocumentationExample 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. ChangelogSee CHANGELOG. That's it. You should now be ready to use SMSGateway! |