https://a.storyblok.com/f/270183/1368x665/3cccd1f4b5/26aug_dev-blog_sms-php_1368x665.jpg

Empfang von SMS mit PHP und Vonage

Zuletzt aktualisiert am August 11, 2026

Lesedauer: 4 Minuten

Ich würde sagen, die Frage, die mir am häufigsten gestellt wird, betrifft das Senden und Empfangen von SMS-Nachrichten mithilfe eines Backends oder Frameworks. Die gute Nachricht dabei ist, dass Sie die SMS-Funktionalität in Ihrer App (sei es Symfony, Laravel oder Drupal) mit relativ wenigen Zeilen Code umsetzen können. Ich habe bereits darüber geschrieben, , wie man eine SMS in PHP versendet, daher lernen wir in diesem Tutorial, wie Sie Ihre App so einrichten, dass sie eingehende SMS-Webhooks mit Slim PHP ausliest, wenn das Endgerät antwortet.

Voraussetzungen

Erstellen Sie Ihre „Slim“-Application

Zunächst müssen Sie ein neues Composer-Projekt erstellen und anschließend Slim herunterladen.

mkdir recieving-sms && cd recieving-sms

composer init

Befolgen Sie die interaktiven CLI-Anweisungen; Sie können die Standardeinstellungen für alle Schritte verwenden, mit Ausnahme der interaktiven Auswahl Ihrer Pakete. Sie sollten nun über eine composer.json Datei: In meinem Fall sieht sie wie folgt aus:

Nun fügen wir Slim, die PSR-7-kompatible HTTP-Verarbeitung von Slim und das Vonage PHP-SDK hinzu:

composer require slim/slim

composer require slim/psr7

composer require vonage/client-core

Unsere Route hinzufügen

Die eingehende SMS wird so konfiguriert, dass sie die Form einer POST Anfrage mit den Daten im JSON-Body. Wir müssen dies in Slim entsprechend einrichten, daher müssen wir den Einstiegspunkt für unsere App erstellen.

touch src/index.php

Und dann fügen Sie unseren Code in die neue Datei ein:

<?php

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Slim\Factory\AppFactory;

require 'vendor/autoload.php';

$app = AppFactory::create();

$handler = function (Request $request, Response $response) {
    return $response->withStatus(204);
};

$app->map(['POST'], '/webhooks/sms', $handler);

$app->run();

Wir haben nun eine offene POST Route, die mit HTTP 204. Dies signalisiert an Vonage zurück, dass der Webhook erfolgreich empfangen wurde. Nun möchten wir den Webhook in ein PHP-SDK-Objekt umwandeln und in eine neue Protokolldatei schreiben. Dazu verwenden wir Monolog:

composer require monolog/monolog

Als Nächstes implementieren wir das Abrufen der Daten über den Webhook und das Schreiben dieser Daten in unsere Protokolldatei in der $handler:

<?php

use Monolog\Level;
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Slim\Factory\AppFactory;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

require 'vendor/autoload.php';

$app = AppFactory::create();

$logger = new Logger('sms');
$logger->pushHandler(new StreamHandler(__DIR__ . '/../log.txt', Level::Info));

$handler = function (Request $request, Response $response) use ($logger) {
   $sms = \Vonage\Messages\Webhook\Factory::createFromArray($request->getBody());
   $logger->info('Message Received' . $sms->toArray());

   return $response->withStatus(204);
};

Die App ist einsatzbereit; führen Sie sie mit dem in PHP integrierten Webserver aus:

php -S 127.0.0.1:8000 -t src/

Installieren der Vonage CLI

Verwendung eines JavaScript-Paketmanagers wie npm oder yarninstallieren Sie die Vonage-CLI global:

npm install -g @vonage/cli

Es sind nun zwei Konfigurationen erforderlich: Richten Sie im Rahmen des Einrichtungsprozesses Ihre API-Schlüssel mit ngrok ein und befolgen Sie die Vonage-Einrichtungsanweisungen für die Vonage-CLI befolgen.

Eine Vonage-Nummer hinzufügen

Wir werden die Vonage-CLI nutzen, um den Vorgang etwas zu vereinfachen. Rufen Sie das Vonage-Dashboard auf und rufen Sie Ihren API-Schlüssel und Ihr API-Geheimnis ab.

Sobald Sie Ihre API-Anmeldedaten haben, befolgen Sie die Anweisungen in der Anweisungen in der README-Datei im CLI-Quellcode , um die Einrichtung vorzunehmen.

Rufen Sie nun über die Befehlszeilenschnittstelle die zum Kauf verfügbaren Numbers ab:

vonage numbers search us

Es wird eine Liste der verfügbaren Numbers angezeigt, aus der Sie dann eine auswählen und erwerben können.

vonage numbers buy <number>

Alles zusammen verdrahten

Als letzten Schritt erstellen wir eine Application in der CLI und ordnen ihr die Nummer zu. Sobald dies erledigt ist, können Sie eine Nachricht an diese Nummer senden, woraufhin der Webhook an Ihre App ausgelöst wird.

Erstellen Sie zunächst die App:

vonage apps create "My App"

Als Nächstes fügen Sie die „Messages“-Funktion hinzu:

vonage apps capabilities update <your-app-id> messages \
--messages-inbound-url=https://example.com/webhooks/inbound \
--messages-status-url=https://example.com/webhooks/status

Wir haben example.com vorläufig als Platzhalter hinzugefügt, da die CLI unsere Domains verwalten wird, wie Sie später sehen werden.

Wir fügen die Nummer zur Anwendung hinzu: Verwendung des Vonage-Tunnels

vonage apps numbers link <your-app-id> 07730006666

Verwendung des Vonage-Tunnels

Sie müssen Ihre Slim-Application nach außen hin zugänglich machen, damit Vonage Ihnen Webhooks senden kann. Dazu müssen Sie ngrok installieren. Anstatt jedoch nur ngrok zu verwenden, bietet die Vonage-CLI über einige nützliche Tools, die ngrok einbinden und so die Entwicklererfahrung etwas reibungsloser gestalten.

Sie können die tunnel Funktion nutzen, um Ihre App für den Empfang von Webhooks zu öffnen. Geben Sie dazu den folgenden Befehl ein:

vonage tunnel ngrok <your-app-id>

Dieser Befehl ist ziemlich nützlich. Anstatt ngrok lediglich anzuweisen, Ihre Anwendung bereitzustellen, führt er einige Aktualisierungsbefehle auf Ihrer Anwendungsinstanz aus, um die bestehende Domain für Webhooks (in unserem Fall https://example.com) in die von ngrok generierte Domain um, die im Hintergrund ausgeführt wurde (z. B. https://3d3daF.ngrok.com). Anschließend fügt er die bestehenden relativen Pfade in den Applications an die neue Domain an – in unserem Fall also /webhooks/inbound und /webhooks/status. Wenn du den Tunnel beendest, versucht er außerdem, diese auf ihren vorherigen Wert zurückzusetzen https://example.com in unserem Fall).

Alles ist bereit: Nehmen Sie Ihr Mobilgerät zur Hand und senden Sie eine SMS an Ihre Anwendungsnummer. Beobachten Sie, wie Ihre App einen Webhook empfängt und das Protokoll auffüllt.

Schlussfolgerung

Es liegt auf der Hand, dass man nicht viele Zeilen Code braucht, um eine Application zu starten, die SMS empfangen kann – genauso wie das Senden einer SMS ebenfalls nicht viele Zeilen Code erfordert. Wenn es jedoch um Skalierbarkeit geht, sollten Sie eine robustere Überwachung einsetzen, sobald Ihre Anwendung Tausende von Anfragen sendet und empfängt; vielleicht möchten Sie sich die Überwachung der Anwendungsaktivitäten mit Nightwatch .

Haben Sie eine Frage oder möchten Sie uns mitteilen, was Sie gerade bauen?

Bleiben Sie auf dem Laufenden und halten Sie sich über die neuesten Nachrichten, Tipps und Veranstaltungen für Entwickler auf dem Laufenden.

Teilen Sie:

https://a.storyblok.com/f/270183/400x385/12b3020c69/james-seconde.png
James SecondeSenior PHP Entwickler Advocate

Als ausgebildeter Schauspieler mit einer Dissertation in Standup-Comedy bin ich über die Meetup-Szene zur PHP-Entwicklung gekommen. Man findet mich, wenn ich über Technik spreche oder schreibe, oder wenn ich seltsame Platten aus meiner Vinylsammlung spiele oder kaufe.