ASP.NET

Dodałem możliwość wysyłki przypomnień SMS w mojej aplikacji ASP.NET

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. :-)

Możesz jeszcze mi pomów i zagłosować na todo.team w konkursie Daj Się Poznać 2017.
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.

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
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
public interface ISmsService
{
    bool Send(Sms sms);
}
  • klasę usługi Services.Sms z metodą Send
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.

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.

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:

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ść.

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!

Oczekiwanie na SMS
Oczekiwanie 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ć! :-)

Pierwsza wiadomość SMS
Pierwsza wiadomość SMS

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.

SMSAPI

Możesz jeszcze mi pomów i zagłosować na todo.team w konkursie Daj Się Poznać 2017.
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.

Do następnego razu!

Tagi:asp.netDaj Się Poznać 2017smswiadomość smswysyłka sms

Brak komentarzy

Napisz komentarz jako pierwszy!

Zostaw odpowiedź