
Teilen Sie:
Ehemaliger Direktor für Entwicklerschulung bei Vonage. Mit einem Hintergrund als kreativer Entwickler, Produktmanager und Organisator von Hack-Days arbeitet Martyn seit 2012 als Befürworter der Technologie, nachdem er zuvor beim Rundfunk und bei großen Plattenfirmen tätig war. Er bildet Entwickler auf der ganzen Welt aus und unterstützt sie.
Tastatureingabe (DTMF) mit PHP verarbeiten
Lesedauer: 10 Minuten
In diesem Tutorial erfahren Sie alles, was Sie wissen müssen, um eine PHP-Anwendung einzurichten, die eingehende Anrufe empfangen und Benutzereingaben über die Tastatur erfassen kann.
Wenn Sie diese Anleitung befolgen, erhalten Sie eine einfache Anwendung, die um komplexere, interaktive Elemente erweitert werden kann und Ihnen einen Vorsprung bei der Erstellung interaktiver Menüs für Ihre Anrufer verschafft.
Den Code für dieses Tutorial finden Sie auf GitHub.
Voraussetzungen
TL;DR - Sie benötigen die folgenden Dinge:
Eine Telefonnummer, die nicht bereits mit einer anderen App verknüpft ist
PHP (>5.6), Composer und das Slim-Framework
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.
Hier ist die lange Version:
Wenn du mitmachen willst, brauchst du einen Nexmo Account, also melde dich jetzt an, wenn du noch keinen hast.
Die Entgegennahme von Anrufen mit Nexmo wird mit 0,0045 €/Min. berechnet, und Sie müssen eine Nummer mieten, damit die Leute anrufen können. Wir werden das später behandeln.
Der Beispielcode verwendet das Slim-Framework für die Bearbeitung von Anfragen. Wir haben dies wegen seiner Einfachheit und Lesbarkeit gewählt, aber wenn Sie mit PHP vertraut sind und dies anders handhaben möchten, können Sie gerne etwas anderes verwenden. Sie müssen Slim mit Hilfe von Composer installieren. Stellen Sie also sicher, dass Sie auch das eingerichtet haben.
Es wird erwartet, dass der von Ihnen erstellte Code mit jeder Version von PHP 5.6 oder höher funktioniert.
Aus administrativer Sicht empfehlen wir, unser Kommandozeilen-Tool zu verwenden, um mit Nexmo zu arbeiten, Nexmo-CLI.
Um den Code auf unserem lokalen Rechner für die Außenwelt zugänglich zu machen, werden wir ngrokverwenden, also stellen Sie sicher, dass Sie das auch installiert haben.
Entgegennahme des eingehenden Anrufs
Wenn Nexmo einen Anruf auf einer von Ihnen gemieteten Nummer erhält, wird eine HTTP-Anfrage an eine von Ihnen angegebene URL (einen "Webhook") gestellt, die alle für den Empfang und die Beantwortung des Anrufs erforderlichen Informationen enthält. Dies wird üblicherweise die Antwort-URL.
Wir werden auch DTMF-Eingaben von unseren Anrufern sammeln. DTMF steht für Doppeltönige Mehrfrequenz und tritt im Falle dieses Tutorials auf, wenn ein Benutzer eine Nummer auf seiner Tastatur drückt.
Wann immer eine DTMF-Eingabe vom Benutzer erfasst wird, wird diese an eine andere URL in Ihrer App gesendet, die wir ebenfalls angeben müssen.
Als Nächstes beginnen wir mit dem Schreiben des Codes, der zur Bearbeitung dieser Anfragen erforderlich ist.
Um Slim mit Composer zu installieren, führen Sie den folgenden Befehl im Projektordner in Ihrem Terminal aus:
Als Nächstes erstellen Sie in Ihrem Hauptordner eine neue Datei namens index.php und fügen Sie ihr den folgenden Code hinzu:
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require 'vendor/autoload.php';
$app = new \Slim\App;
$app->get('/webhooks/answer', function (Request $request, Response $response) {
$uri = $request->getUri();
$ncco = [
[
'action' => 'talk',
'text' => 'Please enter a digit'
],
[
'action' => 'input',
'maxDigits' => 1,
'eventUrl' => [
$uri->getScheme().'://'.$uri->getHost().'/webhooks/dtmf'
]
]
];
return $response->withJson($ncco);
});
$app->run();
Mit diesem Code richten wir eine neue URL in unserer App ein, webhooks/answerein, die auf alle eingehenden Anrufe an Ihre Telefonnummer mit den Anweisungen im $ncco Array.
Die $ncco führt diese Schritte aus, sobald der Anruf entgegengenommen wird:
Lesen Sie den Text "Bitte geben Sie eine Ziffer ein" vor
Erfassen der vom Anrufer eingegebenen Ziffer
Übergeben Sie die erfasste Eingabe an die Route, die die Eingabe verarbeitet,
/webhooks/dtmf
Bearbeitung der Benutzereingaben
Fügen wir den Code zur Behandlung eingehender DTMF in index.php:
Nach dem Code, den wir oben eingegeben haben, und vor $app->run(); fügen Sie Folgendes hinzu:
$app->post('/webhooks/dtmf', function (Request $request, Response $response) {
$params = $request->getParsedBody();
$ncco = [
[
'action' => 'talk',
'text' => 'You pressed '.$params['dtmf']
]
];
return $response->withJson($ncco);
});
?>
Die Funktion dieser Route führt die folgenden Schritte aus:
Empfangen Sie die Eingabe von
/webhooks/answerParsen des Anfragekörpers in eine Variable,
$paramsErstellen Sie ein neues
$nccoArray, das den Anrufer anspricht und ihm mitteilt, welche Nummer er gedrückt hat.
Als Referenz sollte Ihre endgültige index.php Datei sollte genau so aussehen wie diese Datei.
Jetzt sind Sie bereit, den Code auszuführen, indem Sie den folgenden Befehl in Ihr Terminal eingeben:
Dadurch wird ein Server gestartet und jeglicher Verkehr zu http://localhost:3000 durch Ihre index.php Datei.
Machen Sie Ihre Anwendung mit ngrok sichtbar
Damit Nexmo Anfragen an Ihre Anwendung stellen kann, müssen Sie den Code, der auf Ihrem lokalen Rechner läuft, für die Welt zugänglich machen.
ngrok ist unser Tool der Wahl für diese Aufgabe, und wir haben eine großartige Einführung in das Tool zur Verfügung gestellt, die Sie lesen können, wenn Sie es noch nicht benutzt haben.
Sobald Sie ngrok installiert haben, führen Sie ngrok http 3000 aus, um Ihre Anwendung dem Internet zugänglich zu machen. Notieren Sie sich die ngrok URL notieren, da wir diese im nächsten Schritt an Nexmo weitergeben müssen (sie wird ungefähr so aussehen http://45hfh5.ngrok.io).
Eine Nummer kaufen und eine App erstellen
Nachdem der Code fertiggestellt ist und unsere App der Welt zur Verfügung steht, müssen wir uns nun eine Telefonnummer besorgen und den Code, der lokal ausgeführt werden soll, mit dieser verknüpfen.
Beginnen wir mit dem Kauf einer Nummer über die Nexmo CLI:
Sie können auch eine andere Landesvorwahl verwenden, wenn Sie möchten. Notieren Sie sich die Nummer, die Sie gekauft haben, da wir sie für den nächsten Schritt benötigen.
Jetzt müssen wir eine Nexmo-Anwendung erstellen, die ein Container für alle Einstellungen ist, die für Ihre Anwendung erforderlich sind. In diesem Fall müssen wir Nexmo mitteilen, an welche URL eine Anfrage gestellt werden soll, wenn ein Anruf eingeht (die answer_url), und wohin alle Ereignisinformationen über den Anruf gesendet werden sollen (die event_urlMehr über Ereignisse erfahren Sie im Abschnitt Anrufablauf Dokumentation).
Verwenden Sie die Nexmo CLI, um Ihre Anwendung zu erstellen und ersetzen Sie <your_ngrok_url> durch Ihre eigene generierte URL, die Sie zuvor von ngrok erhalten haben:
Die Antwort, die Sie zurückbekommen, enthält einen umfangreichen privaten Schlüssel und darüber hinaus eine Anwendungs-ID. Sie können den privaten Schlüssel ignorieren, da er für die Bearbeitung eingehender Anrufe nicht erforderlich ist.
Notieren Sie sich die Anwendungs-ID (die wie folgt aussieht: e7a25242-77a1-42cd-a32e-09febcb375f4) und verknüpfen Sie diese dann mit Ihrer neuen Nummer:
Das ist alles, was Sie brauchen, um den obigen Code mit Ihrer Nexmo-App und -Nummer zu verknüpfen. Sie können es ausprobieren, indem Sie die von Ihnen gekaufte Nummer wählen und den Schritten folgen, die Ihnen am anderen Ende der Leitung auf magische Weise vorgesprochen werden!
Schlussfolgerung
In nur dreißig Zeilen PHP haben Sie nun eine Anwendung, die einen eingehenden Anruf empfangen und DTMF-Eingaben vom Anrufer erfassen kann. Wie könnten Sie dies von hier aus erweitern?
Wenn Sie mehr darüber erfahren möchten, was mit eingehenden Sprachanrufen möglich ist und wie Sie sie durch Hinzufügen von Funktionen wie z. B. Audioaufnahmen komplexer gestalten können, finden Sie weitere Informationen zur Bedienung Ihrer NCCOs in der NCCO-Referenz.
Wie immer, wenn Sie Fragen zu diesem Beitrag haben, können Sie eine E-Mail an devrel@nexmo.com schicken oder treten Sie dem Slack-Kanal der Nexmo-Community beiwo wir auf Sie warten und bereit sind, Ihnen zu helfen.
Teilen Sie:
Ehemaliger Direktor für Entwicklerschulung bei Vonage. Mit einem Hintergrund als kreativer Entwickler, Produktmanager und Organisator von Hack-Days arbeitet Martyn seit 2012 als Befürworter der Technologie, nachdem er zuvor beim Rundfunk und bei großen Plattenfirmen tätig war. Er bildet Entwickler auf der ganzen Welt aus und unterstützt sie.
