Jednym z wymogów od strony internetowej czy sklepu internetowego może być możliwość wysyłania wiadomości SMS. Wiadomość SMS to niezależny od poczty e-mail kanał komunikacji, który może pełnić wiele użytecznych funkcji. Mogą to być najzwyklejsze powiadomienia bądź nieco poważniejsze rozwiązania polegające np. na dodatkowym zabezpieczeniu procesu uwierzytelniania.
Wysyłanie wiadomości tekstowych za pomocą SMS ma kilka specyficznych zalet, które powoduje że stosowanie ich jest korzystniejsze w porównaniu do standardowego kanału komunikacji w Internecie jakim jest poczta e-mail. W tym artykule przyjrzymy się tym zaletom oraz odpowiemy na pytanie jak wysyłać SMS z dowolnej aplikacji PHP.
Wysyłanie SMS (ang. Short Message System) czyli krótkich wiadomości tekstowych jest możliwe za pomocą usługi, które świadczą operatorzy usług telefonicznych. SMS wysyłamy z konkretnego numeru na konkretny numer telefonu abonenta. Tak samo jak potrzebujemy adresu e-mail aby wysłać wiadomość poprzez pocztę elektroniczną tak samo potrzebujemy numeru telefonu aby wysłać wiadomość SMS.
Wiadomości tekstowe SMS są z powodzeniem wykorzystywane w e-commerce. Powiadomienia o statusie wysyłki to już praktycznie standard. Powiadomienia SMS są z powodzeniem wykorzystywane w medycynie, które informują o zbliżającym się terminie wizyty lub cyklicznych badaniach. Biura podróży mają większą pewność że SMS dotrze niezależnie od lokalizacji i sytuacji w jakiej znajduje się odbiorca wiadomości. W życiu codziennym można zaobserwować liczne zastosowania przez instytucje finansowe, w branży motoryzacyjnej czy nieruchomościach.
Wysyłanie SMS przez API
Aby strona, sklep lub inna aplikacja internetowa mogła wysłać wiadomość SMS musi dysponować tak jak gdyby własnym numerem telefonu i mieć dostęp do tej płatnej usługi. W praktyce nie integruje się aplikacji ze zwykłym numerem telefonu i nie próbuje się wysyłać takich SMSów na własną rękę a korzysta się raczej z wyspecjalizowanych systemów, które za pomocą specjalnego interfejsu programistycznego umożliwiają pełne zautomatyzowanie nadawania a czasem także odbierania tego typu wiadomości. Na rynku istnieje wiele rozwiązań SMS API, które możemy zintegrować z własną stroną czy sklepem internetowym.
Aby świadomie korzystać z usługi wysyłania SMS za pomocą aplikacji internetowej, należy poznać pewne fundamentalne ograniczenia związane z tą usługą.
- Maksymalna długość SMSa to 160 znaków 7-bitowych. W przypadku wysyłania wiadomości dłuższej niż 160 znaków, system tak naprawdę wysyła kilka SMSów, które mogą być ostatecznie scalone i wyświetlać się jako jeden dłuższy SMS.
- Użycie polskich znaków zmniejsza ten limit do 70 znaków. Użycie znaków polskich wymagało kiedyś kodowania 8-bitowego co zmniejszało wyżej wspomniany limit do 140 znaków ponieważ maksymalna długość wiadomości to 1120 bitów. Obecnie, z powodu 16-bitowego kodowania znaków w standardzie UCS-2 zmniejsza ten limit do 70 znaków jeżeli użyjemy w wiadomości przynajmniej jednej litery ze znakiem diakrytycznym.
W praktyce oznacza to, że używając choćby jednej litery diakrytyzowanej (potocznie lecz niepoprawnie: znaku diakrytycznego) czyli litery ą, ć, ę, ł, ń, ó, ś, ź, ż maksymalna długość wiadomości SMS to 70 znaków.
Krok 1: Utworzenie konta w SMS API
Do celów tutorialu skorzystamy z serwisu SMS API. Aby móc wysyłać wiadomości musimy założyć konto oraz wykupić pakiet SMSów. Kiedy już to zrobimy, konta są niemal natychmiast gotowe do działania ale warto ustawić własne unikalne pole nadawcy. Po weryfikacji anty-phishingowej, nasze SMSy będą przychodzić podpisane unikalną nazwą.
Krok 2: Wygenerowanie tokenu API
Aby móc skorzystać z SMSAPI, trzeba wygenerować Token API. Jest to specjalny kod, który jest wysyłany do systemu aby wiedział on, że my to my i mieć pewność że nikt się pod nas nie podszywa. Opcjonalnie, możemy jeszcze bardziej zabezpieczyć nasze konto ograniczając adresy IP, które są uprawnione do korzystania z naszego klucza.
Token generujemy na podstronie panelu: https://ssl.smsapi.pl/webapp#/oauth/manage
Krok 3: Integracja aplikacji internetowej z SMS API
Polecam wykorzystać funkcję, która będzie używana za każdym razem kiedy chcemy nadać SMS:
<?php function sms_send($params, $token, $backup = false) { static $content; if ($backup == true) { $url = 'https://api2.smsapi.pl/sms.do'; } else { $url = 'https://api.smsapi.pl/sms.do'; } $c = curl_init(); curl_setopt($c, CURLOPT_URL, $url); curl_setopt($c, CURLOPT_POST, true); curl_setopt($c, CURLOPT_POSTFIELDS, $params); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); curl_setopt($c, CURLOPT_HTTPHEADER, array( "Authorization: Bearer $token" )); $content = curl_exec($c); $http_status = curl_getinfo($c, CURLINFO_HTTP_CODE); if ($http_status != 200 && $backup == false) { $backup = true; sms_send($params, $token, $backup); } curl_close($c); return $content; }
Krok 4: Wysyłanie SMS w PHP
Jeżeli chcemy teraz nadać SMS wystarczy przygotować tablicę z parametrami i użyć stworzonej funkcji sms_send():
$token = "aBcDEFGhIj0123456789aBcDEFGhIj0123456789"; $params = array( 'to' => $telefon, //pojedynczy numer lub numery rozdzielone przecinkami 'from' => 'FIRMA ABC', 'message' => $wiadomosc, 'format' => 'json', 'encoding' => 'utf-8' ); echo sms_send($params, $token);
Funkcję tę wykonujemy za każdym razem kiedy chcemy wysłać wiadomość. Istnieje też alternatywna metoda, która wymaga użycia biblioteki PHP. Więcej na ten temat można przeczytać w źródłach.
Zalety wysyłania wiadomości SMS
- szybsze i wygodniejsze powiadomienia, które trafią niezależnie czy użytkownik w danym momencie korzysta z e-maila czy nie,
- SMSy z powiadomieniami są bardziej widoczne niż e-maile, na które trzeba się zalogować, i które potencjalnie mogą trafić do SPAMu,
- wygodny sposób wdrożenia logowania dwuetapowego (2FA),
- kanał SMS to skuteczny sposób weryfikacji unikalnych użytkowników – mało kto ma więcej niż 1 numer telefonu i mało kto zadaje sobie trud aby rejestrować kolejny numer tylko po to aby założyć kolejne konto w naszej aplikacji,
- w porównaniu do adresów e-mail, rzadko się zdarza, że numer telefonu jest współdzielony przez wiele osób, stąd większa pewność że trafią do konkretnego adresata,
- unikalność doświadczeń – powiadomienia SMS są stosowane na mniejszą skalę niż powiadomienia e-mail,
- pozornie większa anonimowość.
Wady wysyłania wiadomości SMS
- ograniczenie liczby znaków i dodatkowe limity (a co za tym idzie, także koszt) w przypadku korzystania ze znaków diakrytyzowanych,
- z perspektywy wysyłania masowych wiadomości na dużą skalę – dodatkowy koszt utrzymywania aplikacji,
Podsumowanie
Wysyłanie wiadomości ze sklepu internetowego lub dowolnej innej aplikacji internetowej może realizować wiele przydatnych funkcjonalności. Wykorzystując SMS mamy pewność, że wiadomość dotrze do adresata, i jest większe prawdopodobieństwo, że zwróci jego uwagę, bo nie zginie w gąszczu innych wiadomości i nie trafi do folderu SPAM.
Odpowiedz lub skomentuj