Erstellen eines SMS-Benachrichtigungsdienstes mit Serverless
Lesezeit: 4 Minuten
Ethereum ist eine Blockchain mit einer Kryptowährung. Wie bei Bitcoin müssen Benutzer die Kosten tragen, wenn sie über Ethereum Transaktionen senden oder mit einem Smart Contract (Programm, das auf der Blockchain ausgeführt wird) interagieren. Diese Transaktionskosten werden bei Ethereum als Gaspreise bezeichnet, und der Preis kann je nach Auslastung variieren. Wenn sich viele Benutzer auf dem Netzwerk tümmeln, können die Gaspreise enorm steigen. Weitere Informationen zu Gaspreisen und wie sie diesen Sommer geradezu explodierten, findest du hier. Versierte Benutzer warten daher, bis die Gaspreise sinken, bevor sie mit Smart Contracts auf Ethereum interagieren. Die SMS-API von Twilio ist das ideale Tool, um sich über die Gaspreise auf dem Laufenden zu halten. In diesem Blog zeige ich, wie wir eine Serverless-Anwendung schreiben, die eine SMS-Benachrichtigung sendet, wenn die Gaspreise unter ein bestimmtes Niveau sinken.
Wenn du kein Interesse an Gaspreisen hast, kann der Ablauf in diesem Tutorial auch verwendet werden, um jede HTTPS-REST-API über Serverless mit der SMS-API von Twilio zu verbinden und Abfragen zu stellen.
Technische Voraussetzungen
Für dieses Tutorial benötigen wir Folgendes:
- Ein kostenloses Twilio-Konto. Wenn du dich über diesen Link registrierst, erhältst du ein Guthaben von 10 $ bei einem Upgrade auf ein kostenpflichtiges Konto.
- Ein Serverless-Konto
- Installiertes Node.js und npm
Fangen wir an.
Erstellen einer Serverless-Anwendung
Wir verwenden das Serverless-Framework, um unsere Anwendung zu schreiben. Serverless eignet sich ideal zum Erstellen von serverlosen Funktionen, die auf AWS Lambda gehostet werden. Serverless abstrahiert die AWS-Schnittstelle für uns, d. h., wir können über die Benutzeroberfläche von Serverless arbeiten und müssen nur minimalen Gebrauch der AWS-Konsole machen. Wir lösen unsere Funktionen nur zu bestimmten Zeitintervallen aus, deshalb benötigen wir keinen Server, der rund um die Uhr ausgeführt wird. Für dieses Tutorial nutzen wir die kostenlose Stufe von Serverless, damit uns keine Kosten entstehen.
Wir installieren die Severless-CLI als globales npm-Modul.
Dann erstellen wir ein neues Verzeichnis und führen den folgenden Befehl aus, um eine serverlose Anwendung zu erzeugen.
Nachdem wir unser Konto erstellt haben, wählen wir in der Benutzeroberfläche von Serverless.com die Option „Create app“ und anschließend „Serverless Framework“ aus.
Wir öffnen die neu erstellte servless.yml
und fügen die org
hinzu (wie in der Benutzeroberfläche dargestellt). Außerdem heben wir in der serverless.yml
die Auskommentierung auf und aktualisieren den Pfad wie folgt:
Dadurch wird ein Endpunkt für die Auslösung unserer serverlosen Funktion erzeugt. Später ersetzen wir diesen durch einen geplanten Timer für eine Auslösung zu bestimmten Zeitintervallen.
Wir melden uns an und führen die Bereitstellung in der CLI mit folgendem Befehl durch:
Wir sollten jetzt unsere Anwendung im Dashboard von Severless.com sehen. Die Serverless-Benutzeroberfläche und die Konsolenausgabe zeigen uns auch den URL-Endpunkt an. Wir testen in unserem Browser, ob die Funktion richtig bereitgestellt wurde.
Abfragen der DeFi Pulse-API
Die Gaspreise fragen wir über die Gas Station-API ab. Dazu senden wir eine GET-Anfrage an die folgende URL:
https://data-api.defipulse.com/api/v1/egs/api/ethgasAPI.json
Wenn wir das in unserem Browser, in Postman oder über curl testen, erhalten wir ein Objekt mit den Gaspreisdaten zurück. Wir fügen diese Anfrage der handler.js-Funktion hinzu:
Hier haben wir Axios verwendet, um unsere HTTPS-Anfrage zu stellen. Weitere Informationen zum Stellen von Anfragen findest du hier. Wir installieren Axios mit dem Befehl npm install axios
. Dann führen wir unsere serverlose Funktion lokal aus, um zu sehen, ob sie auch funktioniert. Um die Funktion lokal auszuführen, installieren wir das Plug-in „serverless-offline“ mit dem Befehl npm install serverless-offline --save-dev
und fügen es unserer YML-Datei hinzu:
Anschließend führen wir Folgendes aus:
Wenn wir jetzt im Browser http://localhost:3000/dev/users/create aufrufen, sollten wir ein JSON-Objekt mit den erforderlichen Gaspreisdaten sehen. Im Terminal werden die Protokolle angezeigt, wenn wir lokal arbeiten. Sobald das funktioniert, können wir mit dem Befehl serverless deploy
eine Remote-Bereitstellung durchführen, um das Gleiche unter der bereitgestellten URL zu sehen.
Hinzufügen von Twilio
Wir verfügen nun über die erforderlichen Daten. Im nächsten Schritt müssen wir unsere Funktion mit Twilio verbinden und eine SMS senden. Falls wir noch keine Telefonnummer haben, müssen wir zuerst eine kaufen. Wir melden uns hierzu an der Twilio-Konsole an und navigieren zu „Phone Numbers“ > „Buy a Number“. Wir suchen nach einer Nummer, die für SMS aktiviert ist, und kaufen sie.
Wir öffnen unsere serverless.yml
und fügen ihr Folgendes als Umgebungsvariablen hinzu:
Unsere Twilio ACCOUNT_SID und das Twilio AUTH TOKEN finden wir im Konsolen-Dashboard.
Als Nächstes installieren wir mit npm die Twilio-Hilfebibliothek für unsere Funktion. Dann importieren wir sie und übergeben unsere Anmeldeinformationen, um einen Twilio-Client zu erstellen.
Innerhalb unserer Funktion können wir nach der if-Anweisung, die Fehler aufgreift, Folgendes hinzufügen:
Wir führen einen weiteren lokalen Test durch. Wenn lokal Fehler auflaufen, schreiben wir Protokolle und prüfen die Fehler im Terminal, um sie zu beheben. Wenn alles richtig funktioniert, heben wir die Auskommentierung der if-Anweisung auf, damit Benachrichtigungen nur gesendet werden, wenn die Gaspreise niedrig sind. Wir können die Parameter der if-Anweisung auf jede gewünschte Stufe anpassen.
Planen von Triggern
Wir haben unsere Funktion zum Laufen gebracht. Jetzt können wir unseren Trigger von einem Endpunkt-Trigger in einen geplanten Trigger ändern. Diesen Vorgang führen wir wiederum in unserer serverless.yml
aus. Wir suchen den Abschnitt events
und entfernen das HTTP-Attribut. Wir heben die Auskommentierung des Werts „schedule“ auf und ersetzen ihn durch ein Zeitintervall unserer Wahl.
Wir führen ein letztes Mal serverless deploy
aus. Gut gemacht! Jetzt haben wir ein serverloses SMS-Benachrichtigungssystem, das uns bei niedrigen Gaspreisen benachrichtigt.
Fazit
In diesem Tutorial haben wir gesehen, wie wir ein SMS-Benachrichtigungssystem für Ethereum-Gaspreise erstellen. Weitere Anregungen zu Blockchains und Twilio findest du in folgenden Blogs: Tägliches Abrufen und Senden von aktuellen Bitcoin-Kursen mit CEX.io, Twilio-SMS und PHP und Konvertieren von Bitcoin in lokale Währungen mit PHP. Wenn du an einer Entwicklung mit Blockchain und Twilio arbeitest, würde ich gern davon erfahren. Kontaktiere mich auf Twitter oder sende eine E-Mail an rblack@twilo.com.
Wir können den Gas Station-API-Aufruf natürlich auch durch jede andere REST-API ersetzen, die wir lieber verwenden oder auf die wir Zugriff haben. Serverless und Twilio sind ein tolles Team zum Erstellen dieser Art von Diensten, mit denen wir uns selbst oder unseren Benutzern unterwegs Benachrichtigungen senden können.
Verwandte Posts
Ähnliche Ressourcen
Twilio Docs
Von APIs über SDKs bis hin zu Beispiel-Apps
API-Referenzdokumentation, SDKs, Hilfsbibliotheken, Schnellstarts und Tutorials für Ihre Sprache und Plattform.
Ressourcen-Center
Die neuesten E-Books, Branchenberichte und Webinare
Lernen Sie von Customer-Engagement-Experten, um Ihre eigene Kommunikation zu verbessern.
Ahoy
Twilios Entwickler-Community-Hub
Best Practices, Codebeispiele und Inspiration zum Aufbau von Kommunikations- und digitalen Interaktionserlebnissen.