Senden von SMS mit Java und Twilio

March 23, 2021
Autor:in:
Prüfer:in:

Senden von SMS mit Java und Twilio


Hallo und Danke fürs Lesen! Dieser Blogpost ist eine Übersetzung von Sending SMS with Java with Twilio. Während wir unsere Übersetzungsprozesse verbessern, würden wir uns über Dein Feedback an help@twilio.com freuen, solltest Du etwas bemerken, was falsch übersetzt wurde. Wir bedanken uns für hilfreiche Beiträge mit Twilio Swag :)

Wusstest du schon, dass du in weniger als 5 Minuten eine Java-App so codieren kannst, dass SMS über die Twilio-API gesendet werden? Und nachdem wir die richtigen Tools installiert haben, dauert es wahrscheinlich nur noch 2 Minuten. Das brauchen wir dazu:

Am einfachsten lässt sich die Twilio-API mit der Twilio Java-Hilfebibliothek aufrufen. Für die Beispiele in diesem Blog verwende ich das Apache Maven-Buildtool. Das Tool kümmert sich um das Herunterladen und Verwalten der Abhängigkeit sowie um die Paketerstellung des Projekts. Du kannst dich innerhalb von 5 Minuten in Maven einarbeiten. Aber auch andere Tools wie Gradle funktionieren wunderbar, wenn du diese lieber verwendest.

Wenn du dir lieber ein Video ansiehst statt den Blog zu lesen, dann ist mein 2-minütiges Demovideo zu Twilio genau richtig:

Erstellen eines neuen Projekts

Wir gehen davon aus, dass wir mit einem leeren Verzeichnis beginnen. Deshalb müssen wir zuerst ein neues Projekt erstellen.

Ein neues Maven-Projekt

Wir erstellen folgendermaßen ein neues Maven-Projekt in IntelliJ IDEA:

Screenshot des IDE-Assistenten für ein neues Maven-Projekt. Ein gleichwertiges Setup wird im Text als Code-Snippet beschrieben.

Ich verwende gern den integrierten Assistenten für neue Projekte in der IDE, aber wir können das Projekt auch über die Befehlszeile erstellen. Dazu erstellen wir einen Ordner für unseren Quellcode im Standardverzeichnislayout mit mkdir -p src/main/java und eine Datei mit dem Namen pom.xml mit folgendem Inhalt:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>java-send-sms</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>

[Code auf GitHub]

Bevor wir mit der Codierung beginnen können, müssen wir Maven anweisen, Java 8 zu verwenden, und die Twilio-Hilfebibliothek herunterladen.  Wir fügen Folgendes der Datei pom.xml kurz vor </project> hinzu.

<properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
    <dependency>
        <groupId>com.twilio.sdk</groupId>
        <artifactId>twilio</artifactId>
        <version>8.10.0</version>
    </dependency>
</dependencies>

Wir empfehlen immer, die neueste Version der Twilio-Hilfebibliothek zu verwenden. Zum Zeitpunkt des Verfassens dieses Blogs ist das die Version 8.10.0. Welches die neueste Version ist, findest du unter mvnreporistory.com.

Schreiben des Codes

Maven nutzt src/main/java als Ablageort für den Java-Quellcode. Darin erstellen wir ein Paket mit dem Namen com.example sowie eine Klasse mit dem Namen TwilioSendSms. Unsere Verzeichnisstruktur sollte so aussehen:

├── pom.xml
└── src
    └── main
        └── java
            └── com
                └── example
                    └── TwilioSendSms.java

Wir starten die TwilioSendSms-Klasse mit einer main-Methode:

package com.example;

public class TwilioSendSms {

    public static void main(String[] args) {
        // code will go in here
    }
}

[Code auf GitHub]

An der Stelle, wo es heißt // code will go in here, müssen wir zwei Aufgaben ausführen:

  • Authentifizieren des Twilio-Clients
  • Die API aufrufen, um eine SMS zu senden

Dafür müssen wir je eine Zeile Code schreiben.

Authentifizieren des Twilio-Clients

Wir benötigen unsere ACCOUNT_SID und unser AUTH_TOKEN von der Twilio-Konsole. Um die Geheimhaltung dieser Informationen sicherzustellen, empfehle ich immer, diese aus Umgebungsvariablen zu lesen statt sie hart zu codieren.  Ich verwende dazu das Plug-in „EnvFile“ für IntelliJ IDEA. Es gibt Alternativen für andere IDEs oder wir können sie in unserem Betriebssystem festlegen. Nachdem sie in der Umgebung festgelegt wurden, fügen wir diesen Code dem main()-Funktionstext hinzu:

Twilio.init(
    System.getenv("TWILIO_ACCOUNT_SID"),
    System.getenv("TWILIO_AUTH_TOKEN"));

Wenn wir die Umgebungsvariablen nicht festgelegt haben, löst dieser Code folgende Ausnahme aus:

com.twilio.exception.AuthenticationException: Username can not be null

Senden unserer ersten SMS

Endlich ist es soweit! Der Code für das Senden einer SMS.  Wir fügen den folgenden Code der main-Methode hinzu, und zwar unterhalb des init-Codes, den wir gerade eingefügt haben:

Message.creator(
    new PhoneNumber("<TO number - ie your cellphone>"),
    new PhoneNumber("<FROM number - ie your Twilio number"),
    "Hello from Twilio 📞")
  .create();

[Code, einschließlich Importe, auf GitHub]

Die Telefonnummern, die wir an die PhoneNumber-Konstruktoren übergeben, müssen tatsächliche Telefonnummern im E.164-Format sein. Nachdem wir sie hinzugefügt haben, führen wir den Code aus und wir empfangen eine SMS.

Screenshot der SMS-App meines Telefons mit der Meldung „Hello from Twilio“

 Gut gemacht!

Zusammenfassung

Wir wissen jetzt, wie wir eine SMS mit der Twilio-API senden. Der nächste Schritt wäre das Empfangen von und Antworten auf SMS mit Java und Twilio.

Lass deiner Fantasie freien Lauf. Du kannst beispielsweise tägliche ErinnerungenWettervorhersagen oder Benachrichtigungen zu verfügbaren Parkplätzen senden. Der Kreativität sind keine Grenzen gesetzt.

Ich würde gern erfahren, an was du gerade arbeitest. Nimm mit mir Kontakt auf:

Ich bin gespannt.