Menu / szukaj

Wysyłanie SMSów przy użyciu Azure Functions v2 – Twilio

Podobnie jak w przypadku wysyłania maili przy użyciu SendGrid-a zamieszczam opis sposobu integracji Azure Functions v2 z usługą Twilio.

W tym przypadku musimy zainstalować pakiet Microsoft.Azure.WebJobs.Extensions.Twilio z repozytorium NuGet. Następnie wystarczy wykorzystać następujący kod:

using Twilio.Rest.Api.V2010.Account;
using Twilio.Types;

public static class SendNotificationSMS
{
  [FunctionName("SendNotificationSMS")]
  public static void Run(
    [TwilioSms(
      From = "Assigned by Twilio number",
      Body = "...")]
    out CreateMessageOptions messageOptions)
  {
    messageOptions = new CreateMessageOptions(
      new PhoneNumber("Phone number to which you would like to send message"));
  }
}

Nie jest to jednak wszystko. Oprócz tego musimy jeszcze dodać dwa wpisy do Application Settings:

  • AzureWebJobsTwilioAccountSid
  • AzureWebJobsTwilioAuthToken

Wartości, które należy do nich przypisać można odnaleźć na portalu Twilio.

Jeśli potrzebujesz uzupełnić wiedzę dotyczącą konfigurowania usługi Twilio zachęcam do zapoznania się z artykułem Wysyłanie SMSów przy użyciu Azure Functions – Twilio.

Wysyłanie maili z Azure Functions v2 – SendGrid

Jakiś czas temu opisałem jak można zintegrować usługę SendGrid z Azure Functions (artykuł: Wysyłanie maili z Azure Functions – SendGrid). Tekst jest cały czas aktualny, w szczególności jeśli chodzi o konfigurację samej usługi SendGrid. Dodać należy natomiast cześć dotyczącą integracji z Azure Functions v2. Od jakiegoś czasu wersja v2 funkcji jest już oficjalnie dostępna i wprowadza zmiany architektoniczne do środowiska.

Do tej pory (wersja v1 funkcji) miała wbudowane w siebie elementy odpowiedzialne za integrację. Powodowało to, że za każdym razem, gdy Microsoft próbował coś zmienić w tych elementach musiał zmienić całą platformę. W wersji drugiej, rzeczy związane z integracją zostały wyciągnięte poza ten obszar i są niezależne od środowiska Azure Functions. Powoduje to, że możemy już samodzielnie rozszerzyć platformę o nowe funkcjonalności. Dodatkowo zmienił się sposób wykorzystania tych elementów w kodzie. Czytaj dalej

Zdalne włączanie \ wyłączanie Azure Function

Dziś trochę inny temat. Czy zastanawialiście się kiedyś jak można wbudować w system możliwość wyłączania Azure Functions? Tak, aby nasza aplikacja była w stanie włączyć jakąś funkcję w miarę potrzeb i potem ją wyłączyć. Powodów takich wymagań może być wiele. Możemy przykładowo chcieć odroczyć przetwarzanie jakiś wiadomości do godzin nocnych, tak aby w trakcie dnia nasza funkcja nie obciążała elementu naszej infrastruktury. Innym dość często spotykanym pytaniem w trakcie różnego rodzaju meetupów lub hackatonów jest to czy jesteśmy w stanie w jakiś sposób wyłączyć funkcję automatycznie jeśli wykorzystamy darmową ilość wykonań funkcji. Czytaj dalej

Wysyłanie maili z Azure Functions – SendGrid

Staram się przekonać programistów, że obecnie powinniśmy zmienić nasze podejście do budowania aplikacji w sposób efektywny. Dotychczasowe budowanie aplikacji w sposób samodzielny od prawie zera powinniśmy zamienić na komponowanie rozwiązania przy wykorzystaniu gotowych elementów. Tak, aby ograniczyć ilość wytwarzanego przez nas kodu. Pewnie zgodzicie się, ze mną, że wraz ze zmniejszeniem ilości kodu, maleje również prawdopodobieństwo popełnienia błędu.

Taki podejście chciałbym zastosować w tym przypadku. Naturalnym wyborem dla wysyłania maili w przypadku Azure Functions jest usługa SendGrid. Czytaj dalej

Caching w Azure Function – czyli jak podpiąć Redis’a

Pewnie już wiecie, ale tak w ramach przypomnienia… Microsoft przygotował niewielki zestaw bardzo przydatnych komponentów, które pozwalają na zintegrowanie naszej funkcji z następującymi usługami: Azure Storage, Azure Event Hubs, Azure Service Bus, Azure Mobile Apps, Azure Cosmos DB, Azure Notification Hubs, Twilio, SendGrid. Lista ta pozwala na zaspokojenie różnorakich scenariuszy. Ale jak zawsze chcielibyśmy coś więcej.

Dzisiaj chciałbym Wam pokazać jak w bardzo łatwy sposób można dodać cache do naszej funkcji. W przykładzie zostanie wykorzystany Redis. Pewnie zastanawiacie się po co? Niejednokrotnie mówiłem, że funkcje powinny być atomowe, bezstanowe, szybkie, … Rzeczywistość nie zawsze jest taka różowa. Czasami musimy coś zoptymalizować i zrobić rzecz nie do końca zgodnie z teorią. I tak było w tym przypadku. Czytaj dalej

Azure Functions – Lessons learned

Ostatnio wszystkie tematy związane z Chmurą oraz pojęciem Serverless stały się bardzo modne. Jednym z takich elementów są Azure Functions. Na stronie Microsoftu można przeczytać, że:

Azure Functions to rozwiązanie umożliwiające łatwe uruchamianie małych fragmentów kodu („funkcji”) w chmurze. Możesz napisać tylko kod rozwiązujący aktualny problem, nie martwiąc się o całą aplikację ani infrastrukturę do jej uruchomienia. Dzięki usłudze Functions programowanie może być jeszcze wydajniejsze i można korzystać z wybranego języka programowania, takiego jak C#, F#, Node.js, Python lub PHP. Płać tylko za czas działania kodu — platforma Azure jest skalowana zgodnie z potrzebami. Usługa Azure Functions pozwala tworzyć na platformie Microsoft Azure aplikacje niewymagające użycia serwera.

I rzeczywiście mógłbym pisać dużo o komforcie użycia, łatwości wdrożenia i jeszcze kilkunastu innych cechach, które urzekły mnie w tym rozwiązaniu. Super sprawdzają się w przypadku projektów, które nie potrzebują dużego backendu. Przetestowałem to rozwiązanie wielokrotnie i jestem z niego zadowolony.

Nie odbyło się jednak bez błędów, o których chciałbym wspomnieć – a dokładniej dwóch. Czytaj dalej

Pakiet Moq.EntityFramework.Helpers

Na blogu pojawiły się ostatnio dwa wpisy pokazujące w jaki sposób mnożna zamockować DbSet<TEntity> wykorzystując Moq:

Opisane rozwiązania połączyłem w jednej bibliotece i opublikowałem jako pakiet NuGet – Moq.EntityFramework.Helpers. Czytaj dalej