
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.
SMS senden, wenn Typeform mit Node.js und Messages API übermittelt wird
Lesedauer: 8 Minuten
In diesem Tutorial werden wir lernen, wie man eine SMS sendet, wenn die Typeform übermittelt wird, mit Hilfe der Nexmo Messages API und dem Node.js-Framework Hapi.
In diesem Beispiel wird ein Webhook erstellt, den Sie mit Ihrem Typeform verbinden können, um Sie zu benachrichtigen, wenn jemand das Formular ausgefüllt hat. Wir verwenden die Nexmo Messages API, um eine SMS-Nachricht mit dem Datum und dem Link zur Anzeige der Antwort zu senden.
Sie können diesen Code herunterladen und selbst ausführen, indem Sie die nexmo-community/nexmo-typeform-sms Projektarchiv auf GitHub herunterladen.
Voraussetzungen
Sie müssen Konten einrichten, um dies für sich selbst zu tun, also stellen Sie sicher, dass Sie die folgenden Einstellungen vornehmen:
A Typenblatt Account
Ngrok (damit die Außenwelt auf die Anwendung auf Ihrem lokalen Rechner zugreifen kann)
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.
Der Code für dieses Beispiel wurde mit Node.js und dem hapi-Framework. Es funktioniert mit Node.js Version 8.9.0 oder höher.
Sie können Ihre Version von Node überprüfen, indem Sie node -v auf Ihrer Kommandozeile ausführen. Wenn die Nummer 8.9.0 oder höher ist, ist alles in Ordnung. Ist dies nicht der Fall, verwenden Sie bitte eine ältere Version von hapi.
Erstellen der Skelettanwendung
Um einen eingehenden Webhook von Typeform empfangen zu können, müssen Sie eine Anwendung mit mindestens einer POST Route. Wir beginnen mit dem Aufbau einer einfachen Anwendung mit einer POST Route.
Richten Sie in einem neuen Ordner eine neue Node.js-Anwendung ein, indem Sie
Als nächstes installieren Sie die Abhängigkeiten für das Projekt:
Erstellen Sie den Hapi-Server
Hapi ist ein einfach zu verwendendes, konfigurationszentriertes Framework. Es ermöglicht Entwicklern, sich auf das Schreiben wiederverwendbarer Anwendungslogik zu konzentrieren, anstatt Zeit mit dem Aufbau der Infrastruktur zu verbringen. Ich mag es, weil es integrierte Unterstützung für Eingabevalidierung, Caching, Authentifizierung und andere wichtige Funktionen für die Entwicklung von Web- und Serviceanwendungen bietet.
Wir erstellen die Hauptdatei für die Anwendung, indem wir in Ihrem Stammverzeichnis eine neue Datei namens index.js. Dies wird unser Webhook-Server sein.
Fügen Sie in dieser neuen Datei den folgenden Code ein:
const Hapi = require('hapi');
// create the hapi server and listen on port 3000
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
// create a POST route for http://localhost:3000/
server.route({
method: 'POST',
path: '/',
handler: (request, h) => {
// return a 200 OK HTTP status code
return h.response().code(200)
}
});
// initialize the server using async/await
const init = async () => {
await server.start();
console.log(`Server running at: ${server.info.uri}`);
};
// log any error and exit
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
// run the server
init();
Erstellen einer Nachrichten- und Versandanwendung
Richten Sie eine neue Anwendung Nachrichten & Versand über das Nexmo Dashboard.
Für die Zwecke dieses Blogbeitrags benötigen Sie keinen Inbound- oder Status-Webhook, Sie können also http://example.com in diesen Feldern verwenden.
Create Application
Denken Sie daran, auch auf die Schaltfläche Öffentliches/privates Schlüsselpaar generieren Link. Dadurch wird eine Datei namens private.key.
Suchen Sie die Datei private.key Datei auf Ihrem System und verschieben Sie sie in den Stammordner Ihrer Anwendung.
Schließen Sie die Einrichtung der Anwendung ab, indem Sie auf die Schaltfläche Anwendung erstellen klicken, und die Konfiguration ist abgeschlossen.
Notieren Sie sich Ihre Anwendungs-ID, Sie benötigen sie im nächsten Schritt.
Senden Sie die SMS mit der Messages API
Der letzte Teil dieses Blogeintrags besteht darin, die von Typeform gestellte Anfrage zu nehmen und eine SMS mit den darin enthaltenen Daten zu senden.
Die Nexmo Messages API wird all dies für uns erledigen. Wir verwenden die Nexmo Node JS Client-Bibliothek um die SMS zu versenden.
Wenn Sie uns gefolgt sind, haben Sie die Bibliothek installiert, als wir die Skelettanwendung erstellt haben, jetzt müssen Sie sie in der index.js Datei anfordern und die Nexmo Instanz mit Ihrem API-Schlüssel und -Geheimnis, der Anwendungs-ID aus den vorherigen Schritten und dem Pfad zu der private.key die Sie heruntergeladen haben, als Sie Ihre Nachrichten- und Versandanwendung erstellt haben.
Fügen Sie am Anfang von index.js fügen Sie den folgenden Code ein, wobei Sie darauf achten, dass Sie NEXMO_API_KEY, NEXMO_API_SECRET, NEXMO_APPLICATION_ID und NEXMO_APPLICATION_PRIVATE_KEY_PATH durch Ihre eigenen Anmeldedaten:
const Nexmo = require('nexmo')
const nexmo = new Nexmo({
apiKey: "NEXMO_API_KEY",
apiSecret: "NEXMO_API_SECRET",
applicationId: "NEXMO_APPLICATION_ID",
privateKey: "NEXMO_APPLICATION_PRIVATE_KEY_PATH"
})Wir müssen auch den von uns erstellten Routing-Handler aktualisieren, damit er eine SMS an Sie sendet, wenn das Typeform abgeschickt wird. Vergessen Sie nicht zu ersetzen YOUR_NUMBER durch Ihre Telefonnummer zu ersetzen. Verwenden Sie keine führenden + oder 00 bei der Eingabe der Telefonnummer, beginnen Sie mit der Landesvorwahl, zum Beispiel 447700900000.:
server.route({
method: 'POST',
path: '/',
handler: (request, h) => {
nexmo.channel.send(
{ "type": "sms", "number": "YOUR_NUMBER" },
{ "type": "sms", "number": "NEXMO" },
{
"content": {
"type": "text",
"text": `New submission in Typeform ${request.payload.form_response.definition.title} on ${new Date(request.payload.form_response.submitted_at).toDateString()}. You can view it at https://admin.typeform.com/form/${request.payload.form_response.form_id}/results#responses`
}
},
(err, data) => { console.log(data.message_uuid); }
);
return h.response().code(200)
}
});
Führen Sie nun den folgenden Befehl aus, um den Server zu starten:
Die App wird auf Port 3000.
Verwenden Sie Ngrok, um diesen Port für die Welt zu öffnen und notieren Sie sich die URLs, die er für Sie erzeugt.
ngrok output
Hier ist eine praktische Anleitung für die Arbeit mit Ngrok falls Sie es noch nicht benutzt haben.
TLDR? Sie können Ngrok (falls installiert) durch Ausführen dieses Befehls starten:
Verbinden Sie den Webhook mit Typeform
Wir haben unseren Webhook fertiggestellt, jetzt ist es an der Zeit, ihn mit einem Typeform zu verbinden. Wenn Sie dabei Hilfe benötigen, finden Sie im Hilfebereich einen sehr guten Artikel, der Ihnen zeigt wie man einen Webhook mit einem Typeform verbindet. Verwenden Sie die ngrok-URL, die Sie durch den obigen Befehl erhalten haben, anstelle von pastebin für die Ziel-URL in der typeform-Anleitung.
Sobald Sie auf Test Webhook klicken, um zu sehen, dass es funktioniert, erhalten Sie eine SMS mit den Details.
Webhook
Schlussfolgerung
Wir haben einen Hapi-Server verwendet, um einen Webhook einzurichten, der mit einem Typeform verbunden ist und über die Nexmo Messages API eine SMS-Nachricht sendet, sobald ein Benutzer das Formular ausfüllt. Man könnte noch mehr machen, zum Beispiel jede Antwort im Formular per SMS verschicken oder sogar den Facebook Messenger um das Typeform auszufüllen.
Wenn Sie mehr mit den Nexmo-APIs machen wollen, finden Sie hier einige wichtige Informationen, die Sie weiterbringen:
Die Dokumentation für die Messages API und die Dispatch API auf dem Entwicklerportal
Ausführliches Tutorial für Verwendung der Messages API zum Senden und Empfangen von Facebook-Nachrichten
Wenn Sie uns brauchen, versuchen Sie den Nexmo Community Slack-Kanal
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.
