Po krótkiej przerwie, jaką sobie zrobiłem w pisaniu aplikacji todo.team czas wrócić do wytężonej pracy. Jeśli jeszcze nie wiesz, dostałem się do ścisłego finału DSP, a todo.team jest owocem tego projektu. Oprócz wiadomości e-mail, które są jednym z trzech filarów powiadomień postanowiłem wdrożyć eksperymentalnie możliwość przypominania o zadaniach z poziomu SMS. Skorzystałem z możliwości, jakie daje SMSAPI. Przy okazji bardzo dziękuję za udostępnienie darmowej puli wiadomości SMS do celów testowych. :-)
Aby to zrobić wypełnij formularz na stronie dajsiepoznac.pl. Dziękuję! :-)
Podłączenie pakietu SMSAPI.pl
Podłączenie pakietu było dziecinnie proste. Zrobiłem to dzięki konsoli menadżera pakietów.
1 | PM> Install-Package SMSAPI.pl |
Przygotowanie serwisu SMS
Analogicznie do serwisu E-mail przygotowałem serwis SMS. Po całość kodu odsyłam Cię do repozytorium na github.com/michalkortas.
W jego skład wchodzą:
- prosty model Services.Models.Sms
1 2 3 4 5 6 | public class Sms { public string Body { get; set; } public string RecipientName { get; set; } public string RecipientMobileNumber { get; set; } } |
- interfejs Services.Interfaces.ISmsService z definicją metody Send
1 2 3 4 | public interface ISmsService { bool Send(Sms sms); } |
- klasę usługi Services.Sms z metodą Send
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public void Send(Sms sms) { try { SMSApi.Api.Client client = prepareSmsApiConnection(); SMSApi.Api.SMSFactory smsApi = new SMSApi.Api.SMSFactory(client); SMSApi.Api.Response.Status result = smsApi.ActionSend() .SetText("Witaj, " + sms.RecipientName + "! " + sms.Body) .SetTo(sms.RecipientMobileNumber) .SetSender("todo.team") .Execute(); } catch { // obsługa błędów } } |
Przygotowanie połączenia z API SMSApi
Wykorzystuję tu prywatną metodę prepareSmsApiConnection. Pobiera ona z pliku ustawień aplikacji login i zahaszowane hasło do API.
1 2 3 4 5 6 7 | private SMSApi.Api.Client prepareSmsApiConnection() { SMSApi.Api.Client client = new SMSApi.Api.Client(Login); client.SetPasswordHash(HashedPassword); return client; } |
Ustawienia w kontenerze Dependency Injection
Żeby interfejs dobrze obsługiwał na razie skromną obsługę SMS muszę jeszcze zbindować do z klasą serwisu w kontenerze DI. Tak dla jasności – korzystam z Ninject.
1 | kernel.Bind<ISmsService>().To<Services.Services.SmsService>(); |
Testowa wysyłka SMS
Mając powyższe za sobą, mogę śmiało przeprowadzić pierwszą wysyłkę SMS.
W konstruktorze kontrolera zadań wstrzyknąłem zależność, odwołującą do interfejsu do usługi SMS mojej aplikacji. W uproszczeniu wygląda to następująco:
1 2 3 4 5 6 7 8 9 | public class TasksController : Controller { private ISmsService smsService; public TasksController(ISmsService smsServ) { smsService = smsServ; } ... |
Utworzyłem nowa akcję kontrolera, po której wywołaniu wyślę wiadomość.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public ActionResult SendSms() { try { Sms sms = new Sms(); sms.RecipientName = "Michał"; sms.Body = "Dotarła do Ciebie pierwsza wiadomość z todo.team! Jest to aplikacja, która powstała dzięki konkursowi Daj Się Poznać 2017 :-)"; sms.RecipientMobileNumber = "123456789"; smsService.Send(sms); return View(); } catch { // obsługa błędów return View("Error"); } } |
Ok, nie wyrzuciło błędu, teraz czekam na SMS!
Odbiór wiadomości SMS
Po krótkiej chwili telefon zasygnalizował nadejście wiadomości. To historyczna chwila! Moja aplikacja umie mówić! :-)
Podsumowanie
Cieszę się! Kolejny krok do przodu. Jeśli jest ktoś zainteresowany tematem SMS, omówię później sprawdzanie statusu wysłanych wiadomości. W powyższym przykładzie oczywiście wysyłka odbyła się w ciemno.
Jeszcze raz dziękuję firmie SMSApi za poświęcenie czasu i pakietu SMSów, bym mógł przetestować usługę SMS w swojej aplikacji.
Aby to zrobić wypełnij formularz na stronie dajsiepoznac.pl. Dziękuję! :-)
Zachęcam więc do śledzenia projektu. Poniżej znajdziesz garść przydatnych ku temu linków. Nadal liczę na Twoje wskazówki i komentarze.
- Repozytorum todo.team na GitHub
- Tag na blogu do obserwowania
- RSS z wpisami
- Konto na Twitterze
- Konto na Facebooku
Do następnego razu!
Tagi: asp.net • Daj Się Poznać 2017 • sms • top • wiadomość sms • wysyłka sms