Chcesz z automatu wysłać użytkownikowi SMS lub e-mail? Informować o zdarzeniach wewnątrz aplikacji? Zwiększyć zaangażowanie lub sprzedać abonament? Zobacz, jak z gotowych usług zbudować zaplecze do obsługi powiadomień!
Obecnie budowanie aplikacji oraz dostarczanie rozwiązań IT przypomina układanie klocków. Korzystamy z gotowych bibliotek, narzędzi i usług (często chmurowych), które łączymy ze sobą produkując coś nowego. Integrujemy gotowe elementy, aby dostarczyć określoną wartość biznesową.
Nikt nie stawia własnego serwera pocztowego, aby wysyłać maila do użytkowników swojej aplikacji. Nikt nie podpisuje umowy z operatorem sieci komórkowej i nie wpina się bezpośrednio do (najczęściej) przestarzałego API, aby wysłać kilka wiadomości SMS.
OK – prawie nikt. Pomijam specyficzne zastosowania np. gdy chcesz słać potężną ilość SMS na terenie określonego kraju lub tylko do numerów danego operatora. Bezpośrednio możesz wynegocjować lepsze stawki. W tym artykule piszę o 99% przypadków, gdzie e-mail czy SMS to tylko dodatek, a nie główna funkcjonalność.
Poniżej znajdziesz 3 rodzaje usług (z przykładami), które najczęściej integruję ogrywając obsługę wiadomości w aplikacjach.
1. Powiadomienia e-mail (SendGrid)
Wysyłka mailingu „funkcjonalnego”, czyli zdarzenia wewnątrz aplikacji i zarządzanie kontem np. potwierdzenie rejestracji, przypomnienie hasła lub podsumowanie aktywności. Wewnętrzne zdarzenia to w zależności od rodzaju aplikacji np. zmiana statusu zadania, wygasające ogłoszenie czy potwierdzenie sprzedaży biletu na wydarzenie.
Do tego celu najlepiej sprawdza się e-mail API w chmurze – w moim przypadku SendGrid. Możesz wypróbować go całkowicie za darmo, a szczegółowy cennik znajdziesz TUTAJ.
Po rejestracji dostaniesz prostą instrukcję z fragmentami kodu do wysyłki wiadomości z poziomu 8 różnych języków programowania. Poniżej przykładowy fragment w C# dla projektów .NET.
// using SendGrid's C# Library // https://github.com/sendgrid/sendgrid-csharp var apiKey = "YOUR_SENDGRID_KEY"; var client = new SendGridClient(apiKey); var from = new EmailAddress("test@example.com", "Example User"); var subject = "Sending with SendGrid is Fun"; var to = new EmailAddress("test@example.com", "Example User"); var plainTextContent = "and easy to do anywhere, even with C#"; var htmlContent = "<strong>and easy to do anywhere, even with C#</strong>"; var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); var response = await client.SendEmailAsync(msg);
Opakowujemy te kilka linijek w abstrakcję (serwis lub komendę w CQRS) i po robocie 🙂
Szablony maili możesz wyklikać na panelu SendGrid i odwoływać się do nich w kodzie przez identyfikatory lub trzymać je jako zasoby w projekcie (pliki HTML). Osobiście wolę trzymać wszystko w projekcie – HTML z tłumaczeniami dla wspieranych przez aplikację języków.
2. Powiadomienia SMS (Nexmo)
Ważne (często krytyczne) informacje lub zdarzenia w aplikacji przesyłam użytkownikom w formie wiadomości SMS. Są to zdarzenia, które najczęściej wymagają natychmiastowej reakcji. Dlaczego nie e-mail? Bo pewniej i szybciej. Dlaczego nie SMS do wszystkiego? Bo drożej 😉
Aplikacje o zwiększonym poziomie bezpieczeństwa np. do bankowości elektronicznej wymagają logowania lub potwierdzenia niektórych operacji za pomocą kodu SMS – tutaj również przydaje się integracja z SMS API.
Przykładem API umożliwiającego globalną wysyłkę SMS jest Nexmo. Na start dostajesz €2 kredytu, a później dokupujesz według cennika dla poszczególnych państw.
Po zalogowaniu standardowo dostaniesz instrukcję do integracji z popularnymi technologiami.
var client = new Client(creds: new Nexmo.Api.Request.Credentials { ApiKey = "API_KEY", ApiSecret = "API_SECRET" }); var results = client.SMS.Send(request: new SMS.SMSRequest { from = "Nexmo", to = "48123456789", text = "Hello from Nexmo" });
Można prościej? I don’t think so 🙂
3. E-mail marketing i automatyzacja (ActiveCampaign)
Ostatnią usługą, której nie może zabraknąć jest narzędzie do e-mail marketingu i automatyzacji. Cytując klasyka: „A komu to potrzebne? A dlaczego?” Chodzi przede wszystkim o rozdzielenie komunikacji funkcjonalnej od sprzedażowej.
Proste maile zdarzeniowe są zaszyte w aplikacji, rzadko ulegają zmianie, a za ich wysyłkę odpowiada logika biznesowa rozwiązania.
Wiadomości sprzedażowe są tworzone na bieżąco (w trakcie życia aplikacji). Informują o zmianach, dodatkowych produktach, promocjach lub zachęcają do kupna/przedłużenia abonamentu. Nie chcę użyć słowa „newsletter”, bo w naszych głowach newsletter == SPAM.
Możesz wyciągać z bazy danych adresy użytkowników i wykorzystać API z punktu 1. Jest to jednak mało wyrafinowane, niewygodne i ograniczające. Potrzebujesz narzędzia, które przeprowadzi człowieka przez cały lejek sprzedażowy – od zainteresowania produktem, przez kampanie marketingowe, po płacącego użytkownika.
TUTAJ znajdziesz zestawienie najlepszych narzędzi do e-mail marketingu. Polecam ActiveCampaign, do którego wpinam się przez REST API lub w kilka chwil wyklikuję integrację z Leadpages, gdzie tworzę landingi.
Po rejestracji tworzysz różne listy mailingowe, oznaczasz kontakty tagami, projektujesz automatyzacje i kampanie marketingowe.
- potencjalni użytkownicy (wejście do lejka) => pobrali darmowe materiały, zostawili maila na blogu, zapisali się na webinar czy demo call
- użytkownicy => zarejestrowali się na okres próbny lub darmowy plan
- płacący użytkownicy => klienci
Twoim głównym celem jest konwertowanie ruchu na subskrybentów tej ostatniej. Dobra lista mailingowa to podstawa każdego biznesu.
Trochę o architekturze
Niezależnie od tego, czy tworzysz aplikację mobilną, czy internetową to integrację robisz na backendzie – po stronie usługi sieciowej, która jest zapleczem Twojego rozwiązania.
Pamiętaj, że nie zawsze wystarczy kilka linijek kodu, które wkleiłem wyżej i analityka na dashboardach wykupionych usług.
Czasami warto zbudować oddzielną usługę (mikroserwis) do obsługi wiadomości. Wszystkie informacje, które wychodzą do zewnętrznych usług, są dodatkowo zapisywane w bazie danych aplikacji.
W takim podejściu masz pełną historię komunikacji w swoim systemie, większą kontrolę, a co za tym idzie łatwiejszą diagnostykę potencjalnych problemów.
Jeżeli messaging nie jest główną funkcjonalnością Twojej aplikacji, to Keep It Simple, Stupid (KISS) 😉
A Ty z czym się integrujesz i jakie powiadomienia wysyłasz? Daj znać w komentarzu!