https://d226lax1qjow5r.cloudfront.net/blog/blogposts/receiving-sms-delivery-receipts-with-php-dr/Blog_SMS_PHP_1200x600.png

Empfang von SMS-Zustellungsbestätigungen mit PHP

Zuletzt aktualisiert am November 12, 2020

Lesedauer: 4 Minuten

Wir haben uns bereits mit folgenden Themen beschäftigt Versenden von und Empfang von SMS-Nachrichten mit PHP behandelt, aber eine Sache fehlt noch - die Empfangsbestätigung.

Es werden Lieferscheine verschickt:

  • wenn ein Mobilteil eine Nachricht erhält,

  • durch ein Netzwerk

  • oder gar nicht, je nachdem, an welches Netz Sie eine Nachricht senden.

Weitere Informationen hierzu finden Sie in der Wissensdatenbank von Vonage.

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 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 konfigurieren wir unsere Zustellungsbeleg-URL auf unserem Vonage-Konto.

Vonage API-Konto

Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch kein Konto 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.

Empfang einer SMS-Zustellungsbestätigung mit PHP

Wenn ein Netzwerk Vonage darüber informiert, dass eine SMS-Nachricht zugestellt wurde, kann Vonage diese Information als HTTP-Anfrage an Ihre Anwendung weiterleiten.

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 den Lieferschein zu erhalten, werden wir das Slim-Framework Installieren wir es jetzt mit composer:

composer require slim/slim "^4.0" slim/psr7

Vonage wird entweder eine GET oder eine POST Anfrage an Ihre Anwendung mit den Daten stellen, je nachdem, wie Sie Ihr Konto konfiguriert haben (Sie finden Ihre ausgewählten HTTP Method im Dashboard). In diesem Beitrag werden wir eine Anwendung schreiben, die mit beiden HTTP-Methoden umgehen kann.

Um die eingehende Anfrage zu bearbeiten, erstellen wir eine neue Slim Anwendung und registrieren einen Handler, der sowohl auf GET und POST auf /webhooks/delivery-receipt. Zu diesem Zweck erstellen Sie eine Datei namens index.php mit dem folgenden Inhalt:

<?php

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Slim\Factory\AppFactory;
require __DIR__ . '/vendor/autoload.php';

$app = AppFactory::create();

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

$app->get('/webhooks/delivery-receipt', $handler);
$app->post('/webhooks/delivery-receipt', $handler);

$app->run();

Diese Anwendung verarbeitet die eingehende Anfrage und antwortet mit einem Erfolgscode an Vonage, aber sie tut noch nichts. Wir wollen die Werte der eingehenden Anfrage nehmen und sie auf dem Terminal ausloggen. Zu diesem Zweck überprüfen wir den POST-Body auf Werte und greifen auf GET-Parameter zurück. Sobald wir ein Array von $paramshaben, loggen wir es auf dem Terminal aus, indem wir error_log. Aktualisieren Sie Ihr $handler um wie folgt auszusehen:

$handler = function (Request $request, Response $response) {
    $params = $request->getParsedBody();

    // Fall back to query parameters if needed
    if (!count($params)){
        $params = $request->getQueryParams();
    }

    error_log(print_r($params, true));
    return $response->withStatus(204);
};

Das ist alles, was wir brauchen, um eingehende Empfangsbestätigungen von Vonage mit PHP zu protokollieren.

Ihren Code lokal ausführen

Als Nächstes müssen Sie den lokalen PHP-Server starten, damit Sie HTTP-Aufrufe für Ihre Anwendung tätigen können. Um Ihren lokalen PHP-Server zu starten, öffnen Sie ein neues Terminal und führen Sie php -S localhost:8000. Ihre Anwendung lauscht nun am Port 8000 auf Ihrem lokalen Rechner.

Offenlegung Ihrer Anwendung mit ngrok

Wir haben zwar eine Anwendung, die Zustellungsbestätigungen verarbeiten kann, aber wir müssen sie dem Internet zugänglich machen, damit Vonage Anfragen an sie senden kann.

Wir können verwenden ngrok verwenden, um unsere lokale Anwendung dem Internet zugänglich zu machen, indem wir ngrok http 8000. Notieren Sie sich die ngrok URL, die erzeugt wird (sie sieht ungefähr so aus http://abc123.ngrok.io), da wir diese URL an Vonage weitergeben müssen, damit sie wissen, wohin sie die Empfangsbestätigung senden sollen.

Konfigurieren Sie Ihr Vonage-Konto

Als Letztes müssen Sie die Webhook-URL für Zustellungsbestätigungen im Vonage-Dashboard konfigurieren. Besuchen Sie Ihre Einstellungen Seite, aktualisieren Sie Webhook-URL für Zustellungsbestätigungen mit Ihrer ngrok URL (z. B. http://abc123.ngrok.io/webhooks/delivery-receipt) und klicken Sie auf Änderungen speichern.

Jetzt können wir eine SMS senden und sehen, wie der Lieferschein ankommt. Sie können entweder hier eine frühere Anleitung zum Versenden von SMS mit PHP lesen lesen oder den folgenden Code ausführen, um eine SMS zu versenden:

Nicht alle Länder unterstützen Alpha-Absender. Wenn dies der Fall ist, müssen Sie möglicherweise eine Nummer kaufen, indem Sie zuerst eine Nummer finden, die Sie mit vonage numbers:search US und dann eine Nummer kaufen, indem Sie vonage numbers:buy <number> und verwenden Sie diese als Ihren from Parameter verwenden.


$client = new \Vonage\Client(new Vonage\Client\Credentials\Basic(API_KEY, API_SECRET));     

$text = new \Vonage\SMS\Message\SMS(VONAGE_TO, VONAGE_FROM, 'Test message using PHP client library');
$text->setClientRef('test-message');

$client->sms()->send($text);

Aufgrund der Latenzzeit im Netz kann es einige Minuten dauern, aber die SMS sollte bald zugestellt werden, und die Empfangsbestätigung sollte kurz darauf eintreffen.

Schlussfolgerung

Der Empfang einer SMS-Zustellungsbestätigung ist dem Empfang einer eingehenden SMS-Nachricht sehr ähnlich. Wenn Vonage Daten aus dem Netz empfängt, werden diese in eine HTTP-Anforderung umgewandelt und an eine von Ihnen konfigurierte URL gesendet.

Nexmo Developer bietet weitere Informationen zum Empfang von SMS-Zustellungsbestätigungen mit PHP, einschließlich eines Flussdiagramms über den Datenaustausch zwischen Ihnen, Vonage und dem Telefonanbieter.

Vergessen Sie nicht, wenn Sie Fragen, Ratschläge oder Ideen haben, die Sie mit der Community teilen möchten, dann können Sie sich gerne in unserem Slack-Arbeitsbereich der Gemeinschaft oder schreiben Sie uns unten eine Antwort 👇. Ich würde mich freuen, von allen zu hören, die dieses Tutorial umgesetzt haben und wie ihr Projekt funktioniert.

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.