Numer, na który nie można odpowiedzieć. Dlaczego zbudowaliśmy własną bramkę SMS zamiast kupić gotową

Dostał_ś kiedyś SMS z przychodni? Przypomnienie o wizycie, data, godzina, wszystko jak trzeba. Chcesz przesunąć, więc odpisujesz. Nic nie wraca. Dzwonisz na ten numer i słyszysz, że nie istnieje.
Wiadomość dotarła. Rozmowa nie.
To nie jest wpadka tej przychodni. To jest tak zaprojektowane. I dokładnie to samo kupujesz, kiedy podłączasz firmę do gotowej bramki SMS.
Co właściwie kupujesz
Rynek bramek wyrósł na masowej wysyłce. Kampanie, promocje, tysiące odbiorców, którzy nadawcy nie znają i znać nie muszą. Pod to są zbudowane produkty i pod to jest ułożony cennik. Popatrz, co dostajesz.
Najtańsza opcja wychodzi z losowego, dziewięciocyfrowego numeru z puli dostawcy. Za każdym razem innego. Odpowiedzieć nie można, priorytet jest niższy, więc czasem idzie dłużej. Część dostawców zresztą już ten typ wysyłki wycofała.
Droższa ma nazwę nadawcy w miejscu numeru. Maksymalnie jedenaście znaków, bez polskich liter, po rejestracji i potwierdzeniu prawa do nazwy, które dostawca weryfikuje ręcznie. Wygląda profesjonalnie i to działa. Na nazwę nie da się odpowiedzieć w ogóle.
Jest jeszcze wysyłka dwukierunkowa, gdzie odbiorca może odpisać w oknie 24 godzin. Tylko że w wariancie podstawowym numer odbiorczy jest losowy, za każdym razem inny, i współdzielony z innymi nadawcami. Własny numer, przypisany tylko do Ciebie, to osobna pozycja na fakturze.
Widzisz, co się tu stało? Trzy produkty i w każdym numer nadawcy jest zmienną.
Dla kampanii do dziesięciu tysięcy osób to bez znaczenia. Nikt nie zapisuje w kontaktach nadawcy jednorazowej promocji.
A teraz odwróć sytuację. Piszesz do trzydziestu osób, z którymi pracujesz od lat. Przypomnienie o niezapłaconej fakturze. Informacja, że zadanie jest gotowe. Zwykła rzecz operacyjna, którą normalnie napisał_ś mailem, ale mail utonął w skrzynce.
Nagle każda zaleta bramki obraca się przeciwko Tobie. Numer, który się zmienia, to numer, którego nikt nie zapisze. Kanał bez odpowiedzi to kanał, w którym nie usłyszysz „przelałem wczoraj, sprawdź jeszcze raz”. A współdzielony numer nadawczy znaczy, że na Twoją dostarczalność pracuje reputacja firm, których nie znasz.
Dochodzą do tego rzeczy z cennika. U jednego z popularniejszych dostawców, w momencie pisania tego tekstu, minimalny depozyt to 49 zł, a wariant abonamentowy kosztuje 49 zł netto miesięcznie plus stawka za wiadomość. Przy trzydziestu SMS-ach płacisz głównie za dostęp.
I jedna rzecz mniej oczywista. Treść przechodzi przez serwer pośrednika. W przypomnieniu o płatności jest nazwisko, kwota i informacja o zaległości. To dane osobowe Twoich partnerów na cudzej infrastrukturze.
Więc przy komunikacji z ludźmi, którzy Cię znają, najważniejszy parametr przestaje być cena wiadomości. Staje się nim stałość numeru. Ten sam numer, zapisany w ich telefonie, na który mogą oddzwonić, wyglądający identycznie za pół roku.
Takiego numeru żadna bramka Ci nie sprzeda, bo nie ma go w ofercie. Ty go masz. To Twój numer firmowy.
Zrobić to razem?
Wdrażam takie rzeczy w firmach na co dzień. Umów 30 minut, pogadamy konkretnie o Twoim przypadku. Bez prezentacji sprzedażowej.
Umów bezpłatną rozmowę →
Jak to zbudowaliśmy
Xiaomi Mi 8 z 2018 roku, który leżał w szufladzie rozładowany do zera. Do niego karta SIM z numerem firmowym. Telefon stoi na stałe na ładowarce i robi jedną rzecz. Wysyła SMS-y, kiedy serwer mu powie.
Software to android-sms-gateway, open source na licencji Apache 2.0. Aplikacja na telefonie wystawia API, a osobno jest komponent serwerowy, który można postawić u siebie. Trzy kontenery na naszym serwerze: serwer, worker, baza.
Jedna decyzja jest tu ważniejsza niż wszystkie pozostałe razem.
Telefon nie nasłuchuje. Sam łączy się wychodząco do naszego serwera i tam czeka na robotę. Brzmi jak detal. Rozwiązuje cały problem sieciowy, bo połączenie wychodzące przechodzi przez domowy router bez przekierowania portu, i przez CGNAT operatora, gdyby telefon miał kiedyś chodzić na danych mobilnych. Nie trzeba VPN-a. Nie trzeba wystawiać telefonu do internetu.
Zaczynaliśmy od Tailscale, żeby serwer po prostu widział telefon w domu. Odrzuciliśmy i nie z lenistwa. Tailscale jest demonem systemowym, który przy domyślnych ustawieniach przepisuje /etc/resolv.conf i wpina własne łańcuchy w iptables na hoście. Na tym samym serwerze stoi poczta i strony, które nie są nasze. Awaria była mało prawdopodobna, ale gdyby jednak przyszła, dotknęłaby cudzych certyfikatów i cudzej poczty. Za dużo, jak na bramkę do trzydziestu SMS-ów.
Odwrócenie kierunku połączenia ten problem znosi, zamiast go obchodzić. Tego typu rzeczy nie widać na etapie planowania, tylko wtedy, kiedy zaczynasz pytać co się stanie, jeśli to padnie.
Wysyłka z n8n to jedno zapytanie HTTP. Pierwszy test przeszedł całą drogę, od zapytania do potwierdzenia dostarczenia, w 1,4 sekundy. Trzy kontenery zajmują razem jakieś 120 MB pamięci, czyli tyle, ile jedna karta w przeglądarce.
Powiem od razu rzecz, która psuje ładną narrację. Na oszczędnościach to się nie zwróciło. Przy naszym wolumenie różnica w złotówkach mieści się w granicach szumu, a czas poświęcony na wdrożenie kosztował więcej niż roczny abonament u pośrednika. Zrobiliśmy to dla jednej rzeczy, której nie ma w żadnym cenniku.
Co nas zaskoczyło
Trzy rzeczy, których nie było w dokumentacji, bo wychodzą dopiero wtedy, kiedy próbujesz własną robotę zepsuć.
Pierwsza. Karta SIM z PIN-em zabija bramkę przy każdym restarcie. Telefon wstaje, Android się uruchamia, aplikacja żyje, a karta czeka na czterocyfrowy kod, którego nikt nie wpisze, bo telefon leży w szufladzie. Sieci nie ma, wysyłka wraca z błędem o niedostępnej usłudze. Dwie wiadomości nam tak przepadły, zanim zrozumieliśmy dlaczego. PIN trzeba wyłączyć świadomie, a potem sprawdzić restartem, nie zaglądaniem w ustawienia.
Druga jest ciekawsza. Przełącznik „uruchom po starcie systemu” był włączony i po prostu nie działał. MIUI blokuje autostart aplikacjom, których nie ma na własnej liście, i nie mówi o tym ani aplikacji, ani użytkownikowi. Po restarcie proces był martwy. A SMS mimo to wyszedł. Wybudził aplikację push z Firebase, bo push idzie przez stałe połączenie Google Play Services, którego Android praktycznie nie ubija. Czyli rzeczą, która trzyma tę bramkę przy życiu, nie jest wcale nasza aplikacja. Zdążyłem uznać to za awarię, zanim sprawdziłem, co się właściwie dzieje.
Trzecia jest przykra. U nas nieudana wysyłka nie była ponawiana, stan „Failed” okazał się końcowy. Okno ryzyka to kilkadziesiąt sekund po restarcie telefonu, kiedy Android już wstał, a modem nie zdążył zameldować się w sieci. Wiadomość przepada cicho i nikt się o tym nie dowie. Przy przypomnieniach o płatnościach to znaczy, że monitoring nie jest tu dodatkiem. Jest częścią konstrukcji.
A może modem
To pytanie zadaje sobie każdy, kto zaczyna o tym myśleć, bo modem USB wygląda na czystsze rozwiązanie. Brak ekranu, brak systemu z nakładką producenta, brak baterii, która po latach na kablu zaczyna puchnąć. Na Linuksie zestaw jest sprawdzony od lat, modem wchodzi w port USB, konfigurujesz /dev/ttyUSB0, a gammu-smsd skanuje go w pętli.
Tylko że w polskich warunkach trzeba popatrzeć, w jakiej sieci ten modem będzie pracował za dwa lata. Spora część najtańszych modemów z ogłoszeń to sprzęt 3G, a 3G u nas gaśnie. T-Mobile skończył w 2023 roku, Orange wyłączył swoją do końca 2025, Play kończy wygaszanie w 2026, Plus zaczyna w grudniu 2026, a całość ma się zamknąć w 2027. Taki modem spadnie do 2G. Dwójka trzyma się mocniej, bo utrzymuje ją ruch maszynowy i telefony bez VoLTE, T-Mobile deklaruje ją do końca 2027, ale to też nie jest fundament na dekadę.
Tani dongiel LTE za jakieś dwie stówki wyśle SMS-a dziś, bez problemu. Rzecz w tym, że robi to, opierając się o starą infrastrukturę pod spodem. Kiedy 2G zgaśnie, wysyłka w czystym LTE wymaga SMS over IMS, a tego tanie dongle nie obsługują. Modem, który to potrafi, to już inna kategoria sprzętu, moduły przemysłowe, w których obsługa IMS zależy od firmware’u i od tego, czy operator włączy ją na Twojej karcie.
Nasz telefon nie kosztował nic, bo leżał w szufladzie i miał LTE z pudełka. To był cały argument, żadna wyższa filozofia.
Czego tym nie wolno robić
To nie jest narzędzie do wysyłki masowej ani do marketingu. Mówię o tym wprost, bo bez tego cały tekst byłby nieuczciwy.
Zacznij od własnej umowy, nie od artykułu w internecie. Regulaminy polskich operatorów zwykle wymagają uprzedniej pisemnej zgody na używanie karty w urządzeniach działających jak bramka, w regulaminie Play nazywanych „Urządzeniami FCT”, i zakazują generowania sztucznego ruchu. Sankcje sięgają dalej niż zablokowanie SMS-ów, do zawieszenia usług albo rozwiązania umowy ze skutkiem natychmiastowym. Jeśli masz wątpliwość, zapytaj obsługi biznesowej i weź odpowiedź na piśmie. My mamy kartę firmową, nie konsumencką, i tak samo bym to sprawdził.
Granica nie leży w liczbie wiadomości. Leży w tym, do czego kanał służy. Przypomnienie o zaległej fakturze i informacja, że zadanie jest gotowe, to komunikacja wewnątrz relacji, która już istnieje. Oferta i promocja to marketing i wtedy jesteś w zupełnie innym reżimie.
Prawo komunikacji elektronicznej, obowiązujące od 10 listopada 2024 roku, wymaga zgody odbiorcy na informację handlową i marketing bezpośredni. Ochrona z artykułu 398 obejmuje też firmy, nie tylko osoby prywatne, więc „to B2B” nie jest wyjściem. Kara sięga 3% przychodu z poprzedniego roku kalendarzowego albo miliona złotych, zależnie co wyższe, i nakłada ją Prezes UKE. Tej granicy nie warto testować własną firmą.
Jest jeszcze trzecia rzecz, o której mało się mówi. Od września 2023 obowiązuje ustawa o zwalczaniu nadużyć w komunikacji elektronicznej. Operatorzy blokują SMS-y pasujące do wzorców smishingu, które dostarcza im CSIRT NASK, a Prezes UKE prowadzi wykaz integratorów usług SMS dla podmiotów publicznych. Cały rynek idzie w stronę nadawców zweryfikowanych i rozpoznawalnych. Losowy numer, zmieniający się przy każdej wysyłce, stoi po przeciwnej stronie tego trendu. Twój własny numer, ten sam od lat, stoi po właściwej.
Wracając do tej przychodni. Problem nie polega na tym, że wysłała SMS z automatu. Automat jest w porządku, nikt nie oczekuje, że ktoś z recepcji będzie pisał ręcznie do trzystu osób.
Problem polega na tym, że przez ten automat przestała być osiągalna. Wybrali kanał, który mówi i nie słucha, a potem postawili na nim komunikację z ludźmi, których leczą od lat.
Jeśli piszesz do trzydziestu firm, które znasz po imieniu, to samo rozwiązanie kosztuje Cię więcej, niż na nim oszczędzasz. Tylko że rachunek przychodzi później i w innej walucie.
Zostań w pętli
Nowe artykuły, narzędzia i case study prosto na maila. Bez spamu, bez sprzedaży.