terenaa/sms-gateway

This package is abandoned and no longer maintained. No replacement package was suggested.

Just another simple PHP SMS Gateway

v1.2.0 2015-12-28 10:59 UTC

This package is not auto-updated.

Last update: 2024-06-14 15:24:20 UTC


README

SMS Gateway

Just another simple PHP SMS Gateway

Alternative, independently developed version: Dreamer1258/sms-gateway

Installation

composer require terenaa/sms-gateway

Examples

Basic

Sends single text message.

require_once __DIR__ . '/vendor/autoload.php';

use terenaa\SmsGateway\SmsGateway;

try {
    $sms = new SmsGateway();
    $sms->send('123456789', 'The message');
} catch (SmsGatewayException $e) {
    echo $e->getMessage();
}

Multiple recipients

Sends single text message to multiple recipients

require_once __DIR__ . '/vendor/autoload.php';

use terenaa\SmsGateway\SmsGateway;

try {
    $sms = new SmsGateway();
    $sms->sendMultiple(array('123456789', '234567891'), 'The message');
} catch (SmsGatewayException $e) {
    echo $e->getMessage();
}

Bash alias with options

Sends single text message from terminal

alias sms="/home/USERNAME/Scripts/SMSGateway/sms.php"
// /home/USERNAME/Scripts/SMSGateway/sms.php

require_once __DIR__ . '/vendor/autoload.php';

use terenaa\SmsGateway\SmsGateway;
use terenaa\SmsGateway\SmsGatewayException;

$opts = getopt('p:m:s::b::', array('phone:', 'msg:', 'sig::', 'phoneback::'));
$phone = fetchOpt($opts, array('p', 'phone'));
$msg = fetchOpt($opts, array('m', 'msg'));
$sig = fetchOpt($opts, array('s', 'sig'));
$phoneback = fetchOpt($opts, array('b', 'phoneback'));

if (!$phone || !$msg) {
    echo "Usage: sms --phone=<phone> --msg=<message> [--sig=<signature> [--phoneback=<phone back>]]\n";
    exit;
}

try {
    $sms = new SmsGateway();
    
    if ($sms->send($phone, $msg, $sig, $phoneback)) {
        echo "Message has been sent.\n";
    } else {
        echo "Something went wrong...\n";
    }
} catch (SmsGatewayException $e) {
    echo $e->getMessage();
}

function fetchOpt($opts, array $names)
{
    foreach ($names as $name) {
        if (isset($opts[$name])) {
            return $opts[$name];
        }
    }
    
    return null;
}

Phone book

The previous example extended with a phone book.

require_once __DIR__ . '/vendor/autoload.php';

use terenaa\SmsGateway\Contact;
use terenaa\SmsGateway\SmsGateway;
use terenaa\SmsGateway\SmsGatewayException;

$opts = getopt('p:m:s::b::c::', array('phone:', 'msg:', 'sig::', 'phoneback::', 'contact::', 'save'));
$phone = fetchOpt($opts, array('p', 'phone'));
$msg = fetchOpt($opts, array('m', 'msg'));
$sig = fetchOpt($opts, array('s', 'sig'));
$phoneback = fetchOpt($opts, array('b', 'phoneback'));
$name = fetchOpt($opts, array('c', 'contact'));
$save = fetchOpt($opts, array('save'));

if ((!$phone && !$name) || !$msg) {
    echo "Usage:\n\n"
        . "    sms -p|-c phone number or contact's name -m message [-s signature]\n\t[-b phoneback] [-c contact name] [-s]\n\n"
        . "OPTIONS\n"
        . "\t-p, --phone=NUMBER\n"
        . "\t\trecipient's phone number, required\n\n"
        . "\t-m, --msg=MESSAGE\n"
        . "\t\tthe message, required\n\n"
        . "\t-s, --sig=SIGNATURE\n"
        . "\t\tsender's signature\n\n"
        . "\t-b, --phoneback=NUMBER\n"
        . "\t\tsender's phone number\n\n"
        . "\t-c, --contact=NAME\n"
        . "\t\tnew contact's name (only if -s option used)\n\n"
        . "\t--save\n"
        . "\t\t save new contact\n\n";
    exit;
}

try {
    $sms = new SmsGateway();
    $contact = new Contact();

    if ($name && !$phone) {
        $phone = $contact->getPhone($name);

        if ($phone) {
            echo "Found {$name}'s number ({$phone}).\n";
        } else {
            echo "Cannot find '{$name}' in your phone book.\n";
            exit;
        }
    }

    if ($sms->send($phone, $msg, $sig, $phoneback)) {
        echo "Message has been sent.\n";
    } else {
        echo "Something went wrong...\n";
    }

    if ($save && $name && $phone) {
        $saved = $contact->create($phone, $name);

        if ($saved) {
            echo "Contact '{$name}' has been saved.\n";
        } else {
            echo "Cannot save contact.\n";
        }
    }
} catch (SmsGatewayException $e) {
    echo $e->getMessage();
}

function fetchOpt($opts, array $names)
{
    foreach ($names as $name) {
        if (isset($opts[$name])) {
            return $opts[$name] ? $opts[$name] : true;
        }
    }

    return null;
}