Wiadomość tekstowa może dotrzeć po ponownym połączeniu telefonu, mimo że nadawca wysłał ją wcześniej.
Co oznacza store and forward?
Centrum wiadomości zapisuje tekst przed próbą dostarczenia go na telefon.
Przyjęcie przez sieć nie potwierdza, że telefon odebrał wiadomość. Wyłączony lub nieosiągalny telefon może pozostawić wiadomość w stanie oczekiwania. Ponowne połączenie telefonu umożliwia kolejną próbę dostarczenia. Wiadomość musi pozostać uprawniona do tej próby.
Specyfikacja 3GPP 23.040 opisuje rolę centrum w SMS.
Jak długo wiadomość może czekać?
Sieć może podejmować kolejne próby dostarczenia, dopóki okno dostarczenia wiadomości pozostaje otwarte. To okno nazywane jest okresem ważności.
Standard SMS pozwala nadawcom podać okres ważności. Twój dostawca decyduje, czy możesz go ustawić przez swoje API.
Dostarczenie może zakończyć się wygaśnięciem po zamknięciu tego okna. Raport o wygaśnięciu nie oznacza, że pierwotne żądanie wysyłki się nie powiodło.
W przypadku przepływu wrażliwego na czas Twoja aplikacja nadal musi egzekwować własny termin. Jeśli kod weryfikacyjny jest ważny przez dziesięć minut, a dotrze po czterech godzinach, Twój serwer musi go odrzucić. Spóźniona wiadomość nie może wydłużyć czasu życia akcji, którą opisuje.
Gdzie znajduje się centrum względem mojej aplikacji?
Twoja aplikacja może dotrzeć do centrum wiadomości przez dostawcę usług komunikacyjnych, zamiast samodzielnie zarządzać połączeniem z operatorem.
Dostawcy używają SMPP do przekazywania wiadomości do centrów wiadomości, bezpośrednio lub przez inne usługi routingu. Dokumentacja SMPP opisuje te połączenia.
Twój dostawca może potwierdzić żądanie, zanim następna usługa sieciowa je przyjmie. Centrum wiadomości może następnie przyjąć tekst, zanim telefon go odbierze. Każde potwierdzenie opisuje jeden etap drogi.
Przyjęte, ale niedostarczone wyjaśnia, jak te etapy wyglądają w aplikacji.
Co mogę zaobserwować przez Bird?
Możesz sprawdzić przekazanie do operatora i zgłoszone dostarczenie bez samodzielnego łączenia się z centrum wiadomości.
Pole sent_at w odpowiedzi wiadomości rejestruje moment, gdy Bird przekazuje wiadomość operatorowi. delivered_at rejestruje potwierdzone dostarczenie. Oba pola zawierają znacznik czasu lub null. Brak czasu dostarczenia nie oznacza, że telefon odrzucił wiadomość.
Endpoint wysyłki Bird odrzuca validity_period z HTTP 422 SMSUnsupportedFeature. Nie możesz ustawić okna przechowywania operatora przez to pole. Odpowiedź nie zwraca tego pola.
Bird emituje sms.expired, gdy operator zgłosi wygaśnięcie. Zbuforowane potwierdzenie, czyli sytuacja, w której operator trzyma wiadomość, nie powoduje publicznej zmiany statusu. Potwierdzenia dostarczenia wyjaśnia, które raporty sieciowe docierają do Twojej aplikacji.
Co to zmienia w przepływie wysyłki?
Twoja aplikacja musi obsługiwać dostarczenie jako późniejsze zdarzenie z wynikiem niezależnym od wysłania.
Traktuj wynik oczekujący jako odrębny od niepowodzenia. Egzekwuj terminy dla kodów weryfikacyjnych i innych akcji wrażliwych na czas w swojej aplikacji. Używaj potwierdzenia dostarczenia jako raportu sieci o dostarczeniu. Nie dowodzi ono, że ktokolwiek przeczytał wiadomość.
W skrócie
Przyjęcie i dostarczenie to osobne etapy.
Centrum wiadomości może przyjąć tekst, zanim telefon odbiorcy stanie się osiągalny.
Przechowywanie daje dostarczeniu kolejną szansę.
Oczekująca wiadomość może dotrzeć po ponownym połączeniu telefonu, o ile okno dostarczenia jest nadal otwarte.
Okno dostarczenia jest ograniczone.
Sieć może zgłosić wygaśnięcie, gdy jej okres oczekiwania się skończy.
Twoja integracja nie musi łączyć się bezpośrednio.
Dostawca usług komunikacyjnych może obsłużyć połączenie między Twoją aplikacją a siecią operatora.