
Teilen Sie:
Alex Lakatos ist ein JavaScript-Entwickler Advocate für Nexmo. In seiner Freizeit engagiert er sich bei Mozilla als Tech Speaker und Reps Mentor. Als JavaScript-Entwickler, der auf dem offenen Web aufbaut, verschiebt er jeden Tag dessen Grenzen. Wenn er nicht gerade in London programmiert, reist er gerne um die Welt, so dass man ihn wahrscheinlich in einer Flughafen-Lounge antrifft.
Senden und Empfangen von SMS-Nachrichten mit Node.js und Azure Functions
Dieser Blogbeitrag ist Teil der Angewandte Cloud-Geschichten Initiative.
Webhooks werden in der API-Welt immer beliebter, und Vonage verwendet sie für eine ganze Reihe unserer APIs. Also schreibe ich am Ende ziemlich viele davon. Da ich ein Node.js-Fan bin, habe ich die meisten von ihnen mit Express erstellt. Es war mühsam, einen Webserver aufzusetzen und ihn irgendwo einzusetzen, also habe ich mich nach Alternativen umgesehen. Serverless tauchte bei meinen Recherchen immer wieder als eine der guten Alternativen auf, also dachte ich, ich würde Azure-Funktionen und Node.js zum Senden und Empfangen von SMS-Nachrichten verwenden.
Für SMS werde ich die Vonage SMS APIdie es Ihnen ermöglicht, ein großes Volumen an SMS überall auf der Welt zu senden und zu empfangen. Sobald Sie Ihre virtuelle Telefonnummer haben, können Sie die API verwenden, um ausgehende Nachrichten ("Senden") und eingehende Nachrichten ("Empfangen") zu verwalten.
In diesem Artikel erfahren Sie, wie Sie SMS-Nachrichten mit Node Js senden und empfangen können. Node.js und einer Azure-Funktionen-App.
Den Code für dieses Tutorial finden Sie auf GitHub.
Voraussetzungen
Bevor Sie beginnen, vergewissern Sie sich, dass Sie alles haben:
Ein Azure Account
Node.js auf Ihrem Rechner installiert
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.
Eine Azure Functions-App einrichten
Es gibt mehrere Möglichkeiten, wie Sie eine Azure Functions App einrichten können. Ich habe mich dafür entschieden, dies über das Azure-Portal.
Create Azure Functions App
Ich habe ihr einen Namen gegeben send-receive-smsbenannt, eine neue Ressource dafür erstellt und Node.js als Laufzeitumgebung gewählt. Ich habe die Standardeinstellungen in Bezug auf Bereitstellung, Region und Pläne gewählt.
Sobald die Bereitstellung abgeschlossen ist (in der Regel etwa 2 Minuten), können Sie zur neu erstellten Ressource gehen und Ihre erste Funktion erstellen. Es gibt einen Assistenten, der Sie durch den Prozess führt, und ich habe ausgewählt VS-Code als Entwicklungsumgebung und "Direct publish" als Bereitstellungsmethode ausgewählt. Daraufhin erhielt ich eine Reihe von Anweisungen, wie VS Code für Azure einzurichten ist.
Create Azure Function quickstart
Sobald ich mit der Einrichtung fertig war, erstellte ich meine erste Funktion, einen HTTP-Trigger. Ich habe sie inboundgenannt, aber Sie können jeden beliebigen Namen verwenden. Für den Sicherheitsmechanismus gibt es einige Optionen, die die Berechtigungsstufe für die Funktion steuern: "Function" erfordert einen funktionsbasierten API-Schlüssel, "Admin" erfordert Ihren Haupt-API-Schlüssel von Azure und "Anonymous" erfordert keinen API-Schlüssel. Ich habe mich für "Anonymous" als Sicherheitsmechanismus entschieden. Damit wurde eine neue Datei mit einer Standardvorlage erstellt.
Create Azure Function template
Empfangen einer SMS-Nachricht
Erstellen einer Webhook-Funktion
Ich habe den Inhalt der Funktion so ersetzt, dass er mit dem SMS-Empfang-Codeausschnitt den wir in unserem Entwicklerportal verwenden. Es kombiniert den Textkörper und die Abfrageparameter einer Anfrage und protokolliert diese in der Konsole. Es handelt sich um einen einfachen Webhook, den Sie für den Empfang von SMS-Nachrichten auf der Vonage-Plattform verwenden können.
module.exports = async function(context, req) {
const params = Object.assign(req.query, req.body);
if (params.text) {
context.log("SMS received", params);
}
context.res = {};
}; Funktion bereitstellen
Da Vonage in der Lage sein muss, auf eine öffentliche URL zuzugreifen, habe ich meine Funktion mit Azure implementiert. Sie können dies in VS Code tun. Sobald die Bereitstellung abgeschlossen ist, erhalten Sie eine Live-URL für Ihre Funktion zurück, meine lautet zum Beispiel https://send-receive-sms.azurewebsites.net/api/inbound.
Deploy Azure Function
Eingehende URL festlegen
Um eine SMS auf der Vonage Plattform zu empfangen, müssen Sie eine Vonage Number besitzen. Wenn Sie noch keine Nummer haben, können Sie eine im Vonage-Dashboard:
Buy Vonage Phone Number
Wenn eine Vonage-Telefonnummer eine SMS-Nachricht erhält, leitet Vonage diese Nachricht an einen Webhook weiter, den Sie im Nexmo-Dashboard angegeben haben. Wir werden unsere Azure-Funktion als empfangenden Webhook verwenden. Um die Webhook-URL einzurichten, klicken Sie auf das kleine Zahnradsymbol neben Ihren Telefonnummern im Nexmo Dashboard und fülle das Feld "Inbound Webhook URL" mit der URL aus, die du nach der Bereitstellung der Azure-Funktion erhalten hast (meine war https://send-receive-sms.azurewebsites.net/api/inbound).
Set Inbound Webhook URL on the Vonage Dashboard
Sie können testen, ob es funktioniert, indem Sie eine SMS von Ihrem Telefon an Ihre Vonage-Telefonnummer senden, die in den Azure-Funktionsprotokollen angezeigt wird.

Versenden einer SMS-Nachricht
Ich dachte, es wäre schön, wenn die Funktion ein wenig mehr tun würde, als nur die SMS-Nachrichten zu protokollieren, also werde ich sie auch auf SMS-Nachrichten reagieren lassen, indem ich die Nachricht von Text in Emojis umwandle.
Ich werde das Vonage Node.js SDK für den Versand der SMS verwenden, also müssen Sie es in der Azure-Funktion installieren. Der oberste Ordner für Ihre Funktion enthält eine package.json Datei enthalten, die bei jeder Bereitstellung installiert wird. Wenn Sie also im Terminal zu diesem Ordner navigieren und npm install nexmoaufrufen, erhalten Sie Zugriff auf das Vonage SDK innerhalb der Azure-Funktion.
Ich habe auch die Funktion aktualisiert, um das Vonage SDK zu initialisieren, die SMS-Nachricht in Emojis umzuwandeln und sie dann als SMS an den ursprünglichen Absender zurückzuschicken.
module.exports = async function(context, req) {
const Nexmo = require("nexmo");
const nexmo = new Nexmo({
apiKey: process.env["NEXMO_API_KEY"],
apiSecret: process.env["NEXMO_API_SECRET"]
});
const params = Object.assign(req.query, req.body);
if (params.text) {
var response = [];
// transform inbound SMS into emojis
for (let i = 0; i < params.text.length; i++) {
const emoji = String.fromCodePoint(127715 + params.text.charCodeAt(i));
response.push(emoji);
}
// send SMS back with emojis
nexmo.message.sendSms(
params.to,
params.msisdn,
response.join(""),
{
type: "unicode"
},
(err, responseData) => {
if (err) {
context.log(err);
} else {
if (responseData.messages[0]["status"] === "0") {
context.log("Message sent successfully.");
} else {
context.log(
`Message failed with error: ${responseData.messages[0]["error-text"]}`
);
}
}
}
);
}
context.res = {};
};
Sie werden feststellen, dass mein Code das Vonage SDK mit process.env["NEXMO_API_KEY"] und process.env["NEXMO_API_SECRET"]. Die Azure Function App hat Anwendungseinstellungen und ich habe meine NEXMO_API_KEY und NEXMO_API_SECRET hinzugefügt, die bei jeder Bereitstellung von meinem lokalen Rechner aus aktualisiert werden. Sie können dies ebenfalls tun oder diese Werte durch Ihren tatsächlichen API-Schlüssel und Ihr Geheimnis ersetzen. Sie finden diese auf der Seite "Getting Started" im Vonage Dashboard.
Add Application Settings in Azure
Die SDK-Methode zum Senden einer SMS, nexmo.message.sendSms()nimmt die Absender-ID, die Empfänger-Telefonnummer, die Textnachricht und Optionen als Parameter entgegen. Ich habe {type: "unicode"} in den Optionen hinzugefügt, weil ich Emojis versende. Sie akzeptiert auch einen Rückruf, der aufgerufen wird, wenn die API-Anforderung abgeschlossen ist.
Die Antwortdaten enthalten ein Array für alle gesendeten Nachrichten mit Informationen über deren Status. In den meisten Fällen handelt es sich um ein einziges Element in diesem Array, aber wenn die SMS länger als 160 Zeichen war, wird sie in eine mehrteilige SMS aufgeteilt, und dann enthält das Array Daten über jeden gesendeten Teil. Wenn der Status der Nachricht 0 ist, wurde die SMS erfolgreich gesendet, andernfalls befinden sich die Fehlerdaten für die Nachricht in der error-text Eigenschaft der Nachricht.
Da mein Text ein Emoji enthält, setze ich den Typ unicode im Optionsobjekt ein, andernfalls wird das Emoji über das Netzwerk als ?.
Probieren Sie es aus
Senden Sie nun eine SMS-Nachricht von Ihrem Telefon an Ihre Vonage-Nummer. Sie sollten eine SMS zurückerhalten, die Ihre Textzeichen in Emojis umwandelt. Wenn Sie die Hello World! in der SMS eingeben, sollten Sie 🌷🍈🍛🍗🌃🍐🍈🌃🍗🍈🍑🍇🍈🍕🌑 zurückerhalten.
Received SMS message with Vonage
Ich hoffe, es hat funktioniert und Sie haben soeben gelernt, wie man SMS-Nachrichten mit den Vonage APIs, Azure Functions und Node.js sendet und empfängt.
Teilen Sie:
Alex Lakatos ist ein JavaScript-Entwickler Advocate für Nexmo. In seiner Freizeit engagiert er sich bei Mozilla als Tech Speaker und Reps Mentor. Als JavaScript-Entwickler, der auf dem offenen Web aufbaut, verschiebt er jeden Tag dessen Grenzen. Wenn er nicht gerade in London programmiert, reist er gerne um die Welt, so dass man ihn wahrscheinlich in einer Flughafen-Lounge antrifft.
