https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receiving-an-sms-with-php/blog_php_sms_1200x600.png

SMS-Empfang mit PHP

Zuletzt aktualisiert am November 3, 2020

Lesedauer: 8 Minuten

Intro

Wir haben bereits Folgendes behandelt Versenden einer SMS mit PHPbehandelt, aber das ist nur die Hälfte des Themas. In diesem Beitrag werden wir uns ansehen, wie man Ihnen eine SMS schicken kann.

Der Quellcode für diesen Blogbeitrag ist verfügbar auf Github.

Voraussetzungen

Bevor Sie diesen Beitrag durcharbeiten, müssen Sie PHP installiert haben. Ich verwende PHP 7.4, aber der Code hier sollte auch mit PHP 7.3 und höher funktionieren. Sie benötigen außerdem Composer um unsere Abhängigkeiten herunterzuladen.

Schließlich benötigen Sie die Vonage CLI installiert sein. Damit kaufen wir eine Telefonnummer und konfigurieren unser Vonage-Konto so, dass es auf unsere neue Anwendung zeigt.

Vonage API-Konto

Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.

In diesem Lernprogramm wird auch eine virtuelle Telefonnummer verwendet. Um eine zu erwerben, gehen Sie zu Rufnummern > Rufnummern kaufen und suchen Sie nach einer Nummer, die Ihren Anforderungen entspricht.

SMS-Empfang mit PHP

Wenn Vonage eine SMS für eine Telefonnummer empfängt, die Ihnen gehört, wird eine HTTP-Anfrage an eine von Ihnen konfigurierte URL gestellt, die alle Informationen über die SMS enthält. (Kümmern Sie sich noch nicht um die Konfiguration dieser URL, dazu kommen wir etwas später)

Um die eingehenden SMS-Inhalte zu empfangen, werden wir das Slim-Framework Installieren wir es jetzt mit composer:

composer require slim/slim:"4.*"

Wenn wir eine SMS erhalten, werden wir alle Informationen, die Vonage der Konsole zur Verfügung stellt, ausloggen. In der realen Welt könnten Sie dies in einer Datei oder einer Datenbank speichern.

Vonage wird entweder eine GET oder eine POST Anfrage an Ihre Anwendung mit den Daten, je nachdem, wie Ihr Konto konfiguriert ist (Sie können dies unter HTTP Method im Dashboard). In diesem Beitrag werden wir eine Anwendung schreiben, die mit beiden HTTP-Methoden umgehen kann:

Erstellen Sie eine Datei mit dem Namen index.php mit dem folgenden Inhalt. Wir bootstrappen unsere Slim Anwendung, definieren einen Handler, der eine HTTP 204 Antwort zurückgibt und weisen Slim an, diesen Handler zu verwenden, wenn wir eine GET oder eine POST an /webhooks/inbound-sms:

<?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(['GET', 'POST'], '/webhooks/inbound-sms', $handler);

$app->run();

Mit diesem Code kehren wir lediglich mit einem 204 Antwortcode zurück, der besagt, dass alles in Ordnung ist. Um die empfangenen Parameter zu protokollieren, müssen wir prüfen, ob Daten von \Vonage\SMS\Webhook\Factory::createFromRequest($request).

Zu diesem Zeitpunkt sind alle Parameter in einer Variablen namens $sms gespeichert, und wir können sie auf dem Terminal ausgeben mit error_log('From: ' . $sms->getMsisdn() . ' message: ' . $sms->getText());. Wenn man das alles zusammenfasst, sollte Ihr $hander sollte wie folgt aussehen:

$handler = function (Request $request, Response $response) {
    $sms = \Vonage\SMS\Webhook\Factory::createFromRequest($request);
    error_log('From: ' . $sms->getMsisdn() . ' message: ' . $sms->getText());

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

Speichern Sie diese Datei und öffnen Sie dann ein neues Terminalfenster. Starten wir den eingebauten PHP-Server und bedienen unsere Anwendung auf Port 8000.

php -t . -S localhost:8000

Besuchen Sie http://localhost:8000/webhook/inbound-sms?msisdn=14155550100&text=Hello+Weltsehen, sollten Sie from und text in demselben Terminal sehen, in dem Sie den PHP-Server gestartet haben.

Das ist wirklich alles, was es zu tun gibt. Der Empfang einer SMS mit Vonage ist wirklich einfach, da sie eine SMS in eine HTTP-Anfrage für uns umwandeln.

Offenlegung Ihrer Anwendung mit ngrok

Unsere Anwendung ist zwar fertig, aber unsere Arbeit ist noch nicht ganz beendet. Um eine HTTP-Anfrage an unsere Anwendung zu senden, muss Vonage wissen, unter welcher URL unsere Anwendung läuft.

Wir werden Folgendes verwenden ngrok um unsere lokale Anwendung dem Internet zugänglich zu machen. Starten Sie ngrok http 8000 aus und notieren Sie sich die ngrok URL, die erzeugt wird (sie sieht ungefähr so aus http://abc123.ngrok.io).

Konfigurieren Sie Ihr Vonage-Konto

Bei Vonage kann jede Telefonnummer, die Sie besitzen, eine andere Rückruf-URL haben, an die sie eingehende SMS senden können.

Beginnen wir mit dem Erwerb einer Rufnummer über die Vonage CLI, die wir zum Testen verwenden können. Wählen Sie zunächst eine verfügbare Nummer zum Kauf aus:

vonage numbers:search US

Und dann kaufen Sie es:

vonage numbers:buy US

Erstellen Sie nun eine neue Anwendung mit der URL, an die die eingehenden SMS gesendet werden sollen:

vonage apps:create --messages_inbound_url=http://abc123.ngrok.io/webhooks/inbound-sms

Jetzt verknüpfen wir unsere Nummer mit unserer Anwendung:

vonage apps:link --number=14155550100

Jetzt können Sie eine SMS an Ihre Vonage-Nummer senden und beobachten, wie sie in Ihrem Terminal erscheint. Aufgrund der Netzwerklatenz kann es ein paar Minuten dauern, aber sie sollte bald ankommen!

Schlussfolgerung

In nur 20 Codezeilen konnten wir in unserer Anwendung eingehende SMS-Nachrichten empfangen.

Die Entwicklerdokumentation enthält weitere Informationen über Empfang von eingehenden SMS-Nachrichten mit PHP, einschließlich einer Beschreibung aller verfügbaren Parameter, die Vonage an Sie senden kann.

Wenn Sie Fragen zu diesem Beitrag haben, können Sie dem Slack-Kanal der Vonage Community beitretenein, wo wir Ihnen gerne helfen.

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/1c8825919c/mheap.png
Michael HeapVonage Ehemalige

Michael ist ein polyglotter Software-Ingenieur, der sich dafür einsetzt, die Komplexität von Systemen zu reduzieren und sie berechenbarer zu machen. Er arbeitet mit einer Vielzahl von Sprachen und Tools und gibt sein technisches Fachwissen auf Benutzergruppen und Konferenzen in der ganzen Welt weiter. Im Alltag ist Michael ein ehemaliger Developer Advocate bei Vonage, wo er seine Zeit damit verbrachte, über alle Arten von Technologie zu lernen, zu lehren und zu schreiben.