
Teilen Sie:
Offenes Web und Technologie ? HTML5, JavaScript, Node.js. Cat hacks ?, und Internet of Blings ✨ (das ist etwas mehr als LED blinkt ?). Ehemaliger Developer Advocate bei Vonage, San Francisco.
Empfangen von SMS-Nachrichten mit Node.js, Express und der Vonage SMS API
Wir haben dieses Tutorial mit der Vonage SMS API, Node.js und Express erstellt.
Im vorherigen Artikel haben Sie Ihren Vonage Account eingerichtet und gelernt wie man SMS-Nachrichten mit Node.js versendet. In diesem Blogbeitrag erfahren Sie, wie Sie eine eingehende SMS empfangen, indem Sie einen Webhook-Endpunkt in Node.js mit Express.
Ansicht den Quellcode auf GitHub
Definieren eines Webhook-Endpunkts
Um eine SMS-Nachricht von Vonage zu erhalten, müssen Sie einen Webhook-Endpunkt (URL) mit einer virtuellen Nummer verknüpfen, die Sie von Vonage gemietet haben. Eingehende Nachrichten an diese Nummer werden dann an Ihren Webhook-Endpunkt gesendet.
Während der Entwicklung des Webhook-Endpunkts ist es mühsam, die laufende Arbeit zu verteilen. Um Ihr Leben einfacher zu machen, lassen Sie uns ngrok um Ihren Webhook-Endpunkt auf Ihrem lokalen Rechner als öffentliche URL bereitzustellen!
Verwendung von ngrok
Laden Sie zunächst ngrok von https://ngrok.com. Nach der Installation führen Sie ngrok im Terminal aus:
running ngrok
Ihr lokaler Server (localhost:3000) hat jetzt eine ngrok-URL wie https://71f03962.ngrok.io die während der Entwicklung als Webhook-Endpunkt verwendet werden kann. Beachten Sie auch die Webinterface-URL - hier können Sie Ihre Anfragen prüfen, ändern und wiedergeben - mehr dazu später!
Einrichten des Webhook-Endpunkts mit Vonage
Melden Sie sich bei Ihrem Vonage Account an und gehen Sie zu Einstellungenund suchen Sie die SMS-Einstellungen Abschnitt.
Vonage verfügt über zwei verschiedene APIs für den Versand und Empfang von SMS-Nachrichten. Sie können jeweils nur eine verwenden, da sich dadurch das Format der empfangenen Webhooks ändert. Dieses Mal verwenden wir die SMS APIverwenden, stellen Sie also sicher, dass diese ausgewählt ist.
Füllen Sie als nächstes den Eingehende SMS-Webhooks aus, indem Sie die ngrok-URL mit einer Route - nennen wir sie "Inbound" - verwenden. Geben Sie ein. https://YOUR_NGROK_URL/inboundein, setzen Sie die HTTP-Methode auf POST und klicken Sie dann auf Änderungen speichern.
setting your webhook endpoint
Jetzt werden alle eingehenden Nachrichten an die Webhook-URL (Callback) weitergeleitet. Schreiben wir also etwas Code mit Node.js und Express!
Hinweis: Oben haben wir den Webhook-Endpunkt für SMS auf Account-Ebene festgelegt. Alternativ dazu können Sie auch eindeutige Webhook-Endpunkte für jede virtuelle Nummer einrichten, indem Sie auf Verwalten neben einer Ihrer Ihrer virtuellen Numbers im Vonage Dashboard klicken.
Schreiben von Webhook-Endpunkten mit Express
Als nächstes werden Sie die POST Anfragen mit Expressbearbeiten, also installieren Sie es.
hinzufügen "type": "module" zu Ihrer package.json Datei hinzu, um den importieren Anweisungen.
Erstellen Sie eine .js Datei, instanziieren Sie Express, und lauschen Sie an Port 3000. Da Sie Ihren ngrok auf expose eingestellt haben localhost:3000eingestellt haben, müssen Sie denselben Port beibehalten.
import express from 'express';
const { json, urlencoded } = express;
const app = express();
app.use(json());
app.use(
urlencoded({
extended: true
})
);
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server listening at http://localhost:${PORT}`);
});
Als nächstes erstellen Sie eine HTTP-POST-Route, um die Anfragen zu bearbeiten:
app.post('/inbound', (req, res) => {
handleParams(req.body, res);
});
Definieren Sie dann die handleParams Funktion:
function handleParams(params, res) {
if (!params.to || !params.msisdn) {
console.log('This is not a valid inbound SMS message!');
} else {
let incomingData = {
messageId: params.messageId,
from: params.msisdn,
text: params.text,
type: params.type,
timestamp: params['message-timestamp']
};
console.log('Success', incomingData);
}
res.status(200).end();
}Führen Sie den Knotencode aus, und versuchen Sie, einige Nachrichten von Ihrem Telefon an Ihre virtuelle Nummer zu senden!
screenshot of a user sending an sms message from an Android phone
Wenn Sie Ihre lokale Anwendung mit ngrok tunneln, können Sie die Anfrage auch unter http://127.0.0.1:4040/ in Ihrem Browser einsehen:
ngrok inspector
Voilà, jetzt können Sie sehen, dass Ihre SMS-Nachricht gesendet wurde. Vonage hat die Nachricht erhalten und sie über einen Webhook an Ihre Express-Anwendung weitergeleitet!
Ich hoffe, Sie fanden dies hilfreich. Lassen Sie es uns wissen @VonageDev auf Twitter.