Witam, pewnie nie tylko ja potrzebuję od czasu do czasu wysłać sms'a z bramki Ery. Jak można przeczytać na ich stronie stworzyli dostęp skryptowy, jednak nie podają nawet przykładowych kodów - wszystko trzeba samemu napisać. Tak właśnie narodziła się klasa EraSMS.
Obsługuje
póki co wysyłkę tylko z bramki sponsorowanej (sms lub mms)
Cały kod klasy:
<?php
class EraSMSException extends Exception {}
class EraSMS {
private $login;
private $password;
private $url;
public function __construct($login, $password, $url) {
if (filter_var($url)) {
$this->login = $login;
$this->password = $password;
$this->url = $url;
}else{
throw new EraSMSException('Wpisany adres url jest niepoprawny!');
}
}else{
throw new EraSMSException('Podałeś niepoprawy numer (wskazuje na to jego format) lub nie podałeś hasła!');
}
}
public function send($text, $number, $mms='false') {
$string = '?message='.urlencode($text).'&number='.$number; $string .= '&password='.$this->password.'&login='.$this->login.'&mms='.$mms;
$string .= '&failure='.$this->url.'&success='.$this->url;
}else{
throw new EraSMSException('Tekst może zawierać tylko: Litery duże i małe (bez polskich znaków), znaki specjalne: !,.? <br/>Wpisany numer może mieć niepoprawny format.');
}
}
public function read() {
}
}
?>
Kod pliku, który odbiera odpowiedzi:
<?php
0 => 'wysyłka bez błędu',
1 => 'awaria systemu',
2 => 'użytkownik nieautoryzowany',
3 => 'dostęp zablokowany',
5 => 'błąd składni',
7 => 'wyczerpany limit',
8 => 'błędny adres odbiorcy',
9 => 'wiadomość zbyt długa',
10 => 'brak wymaganej liczby żetonów'
);
$x = explode('&', $_SERVER['QUERY_STRING']);
foreach ($x as $y) {
list
($var, $val) = explode('=', $y); $vars[$var] = $val;
}
file_put_contents('status.txt', $errors[$vars['X-ERA-error']]);
}else{
$text = 'SMS Wysłany!<br/>';
$text .= 'Pozostało: '.$vars['X-ERA-counter'].' smsów<br/>';
file_put_contents('status.txt', $text);
}
?>
A tutaj mały przykład jak tego używać:
<?php
header('Content-Type: text/html; charset=UTF8');
include('eraSMS.php');
try {
$obj = new EraSMS('Twój numer np. 48602602602', 'hasło', 'http://domena.pl/response.php');
$obj->send('Test mojej bramki. Fifi.', 'numer np. 602602602');
// lub
$obj->send('Test mojej bramki. Fifi.', 'numer np. 602602602', 'true'); // wysyłanie mms
$obj->read();
}catch(EraSMSException $e) {
}
?>
W następnej wersji:
- Możliwość ustawienia, z której bramki mają zostać wysłane sms/mms. (sponsorowana/multimedialna)
- Wszystko zostanie oparte o sesje
- Optymalizacja kodu
Mam nadzieję, że się komuś przyda.
Pozdrawiam.