Ideální řešení pro rozesílání SMS zpráv pomocí PHP bylo u jednoho eshopového řešení vzhledem k četnosti zpráv zvoleno rozhranní od smsbrana.cz, které nabízí garantované odeslání i s informací o doručení od 0.65 Kč za zprávu.
Úvaha o vlastním hardwarové variantě byla vzhledem k ceně za 1 sms bezpředmětná. Eshop své zákazníky informuje jen o stavu objednávek. Pokud chcete pravidelně rozesílat marketingové zprávy na tisíce kontaktů, sáhnete pravděpodobně po jiném řešení.
Implementace
Jedná se o komunikaci s externím systémem = určitě bude vhodné vytvářet frontu zpráv a tu následně pomocí naplánované úlohy postupně kontrolovat/rozesílat.
Proměnné SMS_PROVIDER__LOGIN a SMS_PROVIDER__PASSWORD obdržíte od poskytovatele.
define('SMS_PROVIDER__LOGIN', 'xxxxxxx');
define('SMS_PROVIDER__PASSWORD', 'xxxxxxx');
$salt = 'abrakadabra';
$time = date("Ymd") . "T" . date("His");
$auth = md5(SMS_PROVIDER__PASSWORD . $time . $salt);
$url = "http://api.smsbrana.cz/smsconnect/http.php?"
. "login=" . SMS_PROVIDER__LOGIN
. "&sul=" . $salt
. "&time=" . $time
. "&hash=" . $auth
. "&action=send_sms&number=" . $telefon
. "&message=" . urlencode($zprava)";
$return = file_get_contents($url);
V proměnné $return máme uložen návratový status, který si ukládám do databáze k jednotlivým záznamům fronty společně s timestampem odeslání.
Generování řetězce $salt o požadované délce řeší funkce getRandomString().
function getRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
leden 2018