https://d226lax1qjow5r.cloudfront.net/blog/blogposts/forward-nexmo-sms-to-slack-using-express-and-node-dr/E_SMS-to-Slack_1200x600.jpg

Weiterleitung von Nexmo-SMS an Slack mit Express und Node

Zuletzt aktualisiert am May 18, 2021

Lesedauer: 8 Minuten

Einführung

Mit den virtuellen Numbers von Nexmo können Sie Textnachrichten und Telefonanrufe senden oder empfangen und so effektiv mit Ihren Nutzern oder Kunden kommunizieren.

In diesem Tutorial mit Node und Express schauen wir uns an, wie wir einen Slack-Kanal automatisch benachrichtigen können, wenn eine virtuelle Nummer von Nexmo eine Textnachricht erhält. Die Benachrichtigung wird den Inhalt der empfangenen Textnachricht enthalten. Dies kann sehr nützlich sein, da es bedeutet, dass wir immer benachrichtigt werden, wenn wir eine Textnachricht erhalten, und der Slack-Kanal kann als zentraler Ort für die Verfolgung eingehender Textnachrichten dienen.

Voraussetzungen

  • Node.js

  • ngrok die es Ihnen ermöglicht, Ihren lokalen Webserver dem Internet auszusetzen. Um mehr darüber zu erfahren, wie Sie Ihre lokale Umgebung mit ngrok einrichten, können Sie sich die Dokumentation ansehen hier.

  • Slack

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.

Node-Abhängigkeiten installieren

Führen Sie im Stammverzeichnis Ihres Projekts den folgenden Befehl aus, um eine package.json Datei zu erstellen.

npm init

Daraufhin werden Sie aufgefordert, eine Reihe von Fragen zu beantworten; die Standardeinstellung ist für dieses Tutorial ausreichend. Um alle Abhängigkeiten unseres Projekts zu installieren, führen Sie den folgenden Befehl aus:

npm install express body-parser slack-notify
  • express ist ein Node-Webanwendungs-Framework.

  • body-parser ist eine Express-Middleware zum Parsen eingehender Anfragekörper.

  • slack-notify ist ein Node-Wrapper um die Slack Webhook API die es einfach macht, Benachrichtigungen an Slack aus Ihrer Anwendung zu senden.

Als nächstes führen Sie den folgenden Befehl aus, um eine index.js Datei im Stammverzeichnis Ihres Projekts zu erstellen:

touch index.js

Fügen Sie den folgenden Code in die soeben erstellte Datei ein:

const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const port = 3000;

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({extended: true}));

app.listen(port, () => {
    console.log(`Listening on ${port}`);
})

Dadurch wird eine Express-Anwendung mit einem Webserver erstellt, der auf Port 3000 lauscht. Wir haben die Anwendung auch angewiesen, den JSON-Parser aus dem body-parser Paket zu verwenden, das wir zuvor installiert haben, und setzen die Option urlencoded Option auf true gesetzt. Fügen wir einen Befehl zum Ausführen dieses Servers hinzu.

In der Datei package.json Datei fügen Sie den folgenden Code in den scripts Abschnitt ein:

"scripts": {
    "start": "node index.js"
  },

Wir können die Anwendung nun mit folgendem Befehl ausführen

npm run start

Eingehende Webhooks auf Slack erstellen

Um Nachrichten an Slack senden zu können, müssen wir eine eingehende Webhook-URL erstellen. Um damit zu beginnen, gehen Sie zu Slack und erstellen Sie eine App, wenn Sie noch keine haben.

Creating a Slack App

Wählen Sie einen Namen für Ihre App und verknüpfen Sie sie mit dem Arbeitsbereich, an den Sie Benachrichtigungen senden möchten. Sobald Sie die App erstellt haben, wird ein Bildschirm ähnlich dem unten abgebildeten angezeigt:

Build an App for Slack

Wählen Sie die Registerkarte Eingehende Webhooks und klicken Sie auf den Activate incoming webhooks um sie einzuschalten. Klicken Sie dann auf die Schaltfläche Add New Webhook to Workspace Schaltfläche. Wählen Sie den Kanal, an den Sie Benachrichtigungen senden möchten, und klicken Sie dann auf allow um die App zu autorisieren. Sie werden zurück zur Einstellungsseite mit einer neuen Webhook-URL weitergeleitet, die für Sie erstellt wurde.

Defining the Webhook URL

Notieren Sie sich die Webhook-URL, da wir sie in Kürze benötigen werden.

Webhook für eingehende Nachrichten erstellen

Wir müssen eine route in unserer Anwendung definieren, wo Nexmo eine POST Anfrage stellen wird, wenn unsere virtuelle Nummer eine Textnachricht erhält. Diese route wird für die Auslösung der Slack-Benachrichtigungen verantwortlich sein. Bevor wir die routeerstellen, müssen wir require das slack-notify Paket, das wir zuvor installiert haben.

Fügen Sie den folgenden Code in die Datei index.js Datei unter dem require Abschnitt :

const webhookUrl = 'https://hooks.slack.com/services/xxxx/xxx';
const slack = require('slack-notify')(webhookUrl)

Ersetzen Sie webhookUrl durch die Webhook-URL, die Slack im vorherigen Abschnitt für Sie generiert hat.

Console output showing the webhook response

Immer, wenn wir eine eingehende Nachricht erhalten, sendet Nexmo eine Nutzlast, die wie der Screenshot oben aussieht. Der text Schlüssel enthält den Inhalt der empfangenen Nachricht.

Fügen wir nun die Route hinzu. Bearbeiten Sie die index.js Datei mit dem folgenden Code:

app.post("/webhooks/inbound-message", (req, res) => {
    const { text } = req.body
    slack.alert({
        text: 'New SMS message',
        fields: {
            'Message' : text
        }
    });
    res.status(200).end();
})

Der text Schlüssel des Anfragekörpers enthält den Inhalt der empfangenen Nachricht. Durch Destrukturierung weisen wir den text Schlüssel an eine text const zu und lösen im Gegenzug die Benachrichtigung aus, die an Slack mit der alert() Methode. Sie können die verschiedenen Methoden finden slack-notify unterstützen hier.

Die endgültige Struktur der index.js Datei sollte wie folgt aussehen:

const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const port = 3000;
const webhookUrl = 'https://hooks.slack.com/services/xxxx/xxx';
const slack = require('slack-notify')(webhookUrl)

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({extended: true}));

app.post("/webhooks/inbound-message", (req, res) => {
    const { text } = req.body
    slack.alert({
        text: 'New SMS message',
        fields: {
            'Message' : text
        }
    });
    res.status(200).end();
})

app.listen(port, () => {
    console.log(`Listening on ${port}`);
})

ngrok einrichten

Um unsere Anwendung über das Web öffentlich zugänglich zu machen, müssen wir ngrok einrichten. Wie man ngrok einrichtet, können Sie hier. Da unsere Anwendung derzeit auf Port 3000 läuft, müssen wir nur den folgenden Befehl ausführen:

ngrok http 3000

Sie sollten einen ähnlichen Bildschirm wie den folgenden sehen:

Screenshot showing example of Ngrok running

Kopieren Sie die erste Weiterleitungs-URL, da wir sie in Kürze in unserem Nexmo Account verwenden werden.

Webhook Inbound URL zu Nexmo hinzufügen

Unter dem Numbers in Ihrem Nexmo-Dashboard auf das Zahnrad-Symbol für die Nummer, über die Sie Slack-Benachrichtigungen erhalten möchten. Wenn Sie keine virtuellen Numbers haben, müssen Sie eine kaufen.

Screenshot showing the Nexmo dashboard with a list of your numbers

Sie werden mit einem Modal ähnlich dem untenstehenden aufgefordert:

Screenshot showing how to configure your Webhook URLS

Konfigurieren Sie die Inbound Webhook URL mit der ngrok URL, die wir zuvor notiert haben. (http://1e389185.ngrok.io/webhooks/inbound-message)

Prüfung

Um zu testen, ob unsere Anwendung wie erwartet funktioniert, starten Sie Ihren Node-Server neu und senden Sie eine Nachricht von Ihrem Telefon an Ihre Nexmo-Nummer.

Screenshot showing an example text message received

Überprüfen Sie Ihren Slack-Kanal, und Sie sollten die Benachrichtigung sehen.

Screenshot showing Slack bot receiving the SMS

Schlussfolgerung

In diesem Tutorial haben wir gesehen, wie wir Slack-Benachrichtigungen mit Nexmo empfangen können. Dieses Tutorial kann als großartiger Leitfaden für die Erstellung von Applications mit Nexmo und Slack dienen. Sie finden das Repo zu diesem Tutorial hier.

Teilen Sie:

https://a.storyblok.com/f/270183/250x250/d288ec8a73/dotun.png
Dotun Jolaoso

Software Developer who loves building awesome tools and products. I currently work with Laravel, PHP and Vue.