Wie baue ich einen SlackBot?

Vor kurzem habe ich einen SlackBot gebaut. Als ich angefangen habe, es zu erstellen, habe ich keine einzige Anleitung gefunden, die mich von Anfang an zu einer fertigen, funktionierenden App geführt hat. Dieser Beitrag wird hoffentlich jedem helfen, einen SlackBot mit Node und JavaScript zu erstellen, ohne viel Programmiererfahrung zu haben.

Als einfaches, leicht verständliches Beispiel wollen wir einen Bot bauen, der uns zufällige Witze erzählen kann.

Teil 1: Projekteinrichtung

Schritt 1: Erstelle deinen Bot auf Slack

Es ist keine schlechte Idee, ein separates Slack-Konto für Bot-Tests zu erstellen. Dann brauchst du dir keine Sorgen zu machen, ob du etwas zufälliges in den allgemeinen Kanal deines Slack-Teams schreibst (das habe ich getan I ).

Mein erster versehentlicher Slackbot-Eintrag im #Allgemeinen Kanal meines Teams

Wenn Sie Ihr Slack-Konto eingerichtet haben, rufen Sie https://my.slack.com/services/new/bot auf, um einen neuen Bot zu erstellen. Gehen Sie die Setup-Anweisungen durch. Ich rufe meinen Bot-Jokesbot an und wähle als Profilfoto für meinen Bot. Stellen Sie sicher, dass diese Seite geöffnet bleibt. Sie benötigen das API-Token später.

Schritt 2: Erstellen Sie Ihr Knotenprojekt

Gehen Sie in Ihr Terminal und richten Sie ein Git-Repo für Ihren Slackbot ein:

mkdir witze-bot
CD-Witze-Bot
Git Init

Fügen Sie in Ihrem Jokes-Bot-Verzeichnis eine .gitignore-Datei hinzu und fügen Sie ihr node_modules hinzu, indem Sie Folgendes in das Terminal eingeben:

echo node_modules> .gitignore

Führen Sie zum Erstellen eines Knotenprojekts npm init über die Befehlszeile aus und führen Sie die Setup-Schritte aus (ich habe gerade für jeden Schritt die Eingabetaste gedrückt).

Jetzt haben Sie ein Knotenprojekt erstellt!

Schritt 4: Fügen Sie die Slackbots-API hinzu

Für dieses Projekt werden wir diese API verwenden, um die Dinge zu vereinfachen: https://github.com/mishk0/slack-bot-api

Fügen wir diese Bibliothek unserem Projekt hinzu, indem Sie Folgendes in das Terminal eingeben:

npm install --save Slackbots

Übernehmen Sie Ihren Code und senden Sie ihn an GitHub. Sie müssen ein GitHub-Repo erstellen und Ihren Code dorthin übertragen. Wir werden es auf GitHub brauchen, damit wir unseren Witzbot mit Heroku bereitstellen können, sobald wir fertig sind.

Jetzt können wir etwas programmieren!

Teil 2: Unseren Bot zum Reden bringen

Schritt 1: Starten Sie die Verwendung der Slackbots-API

Öffnen Sie Ihr Knotenprojekt in Ihrem bevorzugten Texteditor und erstellen Sie eine index.js-Datei.

Die Slackbots-API enthält einen großartigen Starter-Code in ihrer README-Datei:

Kopieren Sie den obigen Code aus der README-Datei der Slackbots-API und fügen Sie ihn in Ihre Datei index.js ein.

Wir sind fast bereit, mit unserem Witzbot zu sprechen!

Schritt 2: Fügen Sie Ihren eigenen Slackbot-Token hinzu

Wir müssen den Slackbot-Token hinzufügen, der unserem Witzbot entspricht. Aber anstatt unser Token auf GitHub hochzuschieben, damit die ganze Welt es sehen kann, sollten wir es an einem sicheren Ort aufbewahren. Ein guter Ort, um dieses Token aufzubewahren, ist unsere .bash_profile-Datei.

Gehen Sie zu Ihrem .bash_profile und fügen Sie Ihren Schlüssel wie folgt hinzu:

export JOKES_BOT_TOKEN = "Geben Sie Ihren Schlüssel hier ein"

Speichern Sie diese Datei und aktualisieren Sie Ihre index.js-Datei, um dieses neue Token zu verwenden:

const envKey = process.env.JOKES_BOT_TOKEN
var bot = neuer SlackBot ({
  Token: envKey,
  Name: "Witze Bot"
})

Geben Sie nun in Ihrem Projektverzeichnis in Ihrem Terminal den Knoten index.js ein. Dadurch wird Ihr Projekt lokal ausgeführt.

Gehen Sie zu Slack und Sie sollten sehen, dass Ihr Witzbot "meow!" In Ihrem allgemeinen Kanal veröffentlicht!

Obwohl ich eine Katzenperson bin, möchte ich, dass mein Bot mehr als nur miaut. Lassen Sie uns unseren Bot so programmieren, dass er einige Witze aus einer Witz-API abruft und diese stattdessen veröffentlicht.

Teil 3: Unseren Bot dazu bringen, uns Witze zu erzählen

Schritt 1: Direkt mit dem Bot sprechen

Ich möchte, dass mein Bot nur dann antwortet, wenn es jemand DMs gibt. Um das zu tun, muss ich meinen Code von oben entfernen, der sich beim Start des Bots verhält, und ihn durch folgenden ersetzen:

bot.on ("message", msg => {
  switch (msg.type) {
  case "message":
    if (msg.channel [0] === "D" && msg.bot_id === undefined) {
      bot.postMessage (msg.user, "hi", {as_user: true})
    }
    brechen
  }
})

Dieser Code veranlasst den Bot, DMs anzuhören und dem Benutzer mit „Hallo“ zu antworten. Um das Projekt erneut auszuführen, speichern Sie Ihre Datei und beenden Sie im Terminal den aktuellen Bot, den Sie ausgeführt haben, indem Sie Strg + C drücken. Geben Sie den Knoten index.js erneut ein und versuchen Sie, mit Ihrem Bot zu sprechen. Es sollte an dieser Stelle "Hallo" sagen!

Schritt 2: Verbindung zur API herstellen

Wir werden die icanhazdadjoke API verwenden, um einige Witze von Papa zu holen (nur die besten Witze für unseren Bot!). Für diese API ist keine Authentifizierung erforderlich, sodass sie problemlos eingerichtet und ausgeführt werden kann. Um mit der API zu arbeiten, können wir die Anforderungsbibliothek verwenden. Geben Sie zum Installieren npm install --save request in das Terminal ein. Importieren Sie diese Bibliothek oben in unserer Datei index.js, indem Sie var request = require ("request") hinzufügen.

Fügen Sie nun die folgende Funktion hinzu, damit wir mit der API interagieren können:

const getRandomJoke = (Rückruf, Benutzer) => {
  Rückgabeanforderung ("https://icanhazdadjoke.com/slack", (Fehler, Antwort) => {
    if (Fehler) {
      console.log ("Fehler:", Fehler)
    } else {
      let jokeJSON = JSON.parse (response.body)
      let joke = jokeJSON.attachments [0] .text
      Rückruf (Scherz, Benutzer)
    }
  })
}

Diese Funktion fordert die API von icanhazdadjoke an und fordert einen zufälligen Witz an. Die geparste Antwort sieht so aus:

{ Anlagen:
  [{fallback: 'Hast du von dem Typ gehört, dessen gesamte linke Seite abgeschnitten wurde? Er ist in Ordnung. ',
  Fußzeile: ' - ',
  text: 'Hast du von dem Typ gehört, dessen ganze linke Seite abgeschnitten wurde? Er ist in Ordnung. ' }],
Antworttyp: 'in_channel',
Benutzername: 'icanhazdadjoke'
}

Wir kümmern uns in diesem JSON nur um den Text des ersten Anhangs, daher können wir diesen mit let joke = jokeJSON.attachments [0] .text in unserer getRandomJoke-Methode extrahieren. Sobald wir diesen Text haben, können wir eine Rückrufmethode ausführen, die für das Versenden einer Nachricht an Slack verantwortlich ist. Diese Methode sieht folgendermaßen aus:

const postMessage = (Nachricht, Benutzer) => {
  bot.postMessage (Benutzer, Nachricht, {as_user: true})
}

Im bot.on-Body im obigen Schritt können wir jetzt die Zeile bot.postMessage (msg.user, "hi", {as_user: true}) durch getRandomJoke (postMessage, msg.user) ersetzen. Indem die Funktion postMessage als Parameter an die Methode getRandomJoke übergeben wird, kann die Methode getRandomJoke die Funktion postMessage aufrufen, sobald ein Witz aus der API abgerufen wurde.

Kehren Sie zu Slack zurück und versuchen Sie, etwas zum Witzbot zu sagen. Es sollte jetzt mit einem ach so witzigen Vaterwitz antworten!

Teil 4: Einsatz unseres Bots mit Heroku

Teil 1: Erstellen einer neuen App in Heroku

Wenn Sie noch keinen Heroku-Account haben, richten Sie einen unter www.heroku.com ein. Navigieren Sie nach dem Einrichten Ihres Kontos zu "Personal Apps" in Ihrem Dashboard (https://dashboard.heroku.com/apps). Wählen Sie in der rechten Ecke "Neu> Neue App erstellen". Befolgen Sie die Installationsschritte, um eine neue App zu erstellen. Sobald deine App erstellt ist, verbinde sie mit GitHub, indem du GitHub als Bereitstellungsmethode auswählst und nach deinem Git-Repo suchst:

Klicken Sie auf "Verbinden". Unten können Sie "Automatische Bereitstellungen aktivieren" auswählen. Jedes Mal, wenn Sie sich an Master wenden, wird eine neue Version Ihres Witzbots bereitgestellt und kann auf Slack verwendet werden.

Schritt 2: Konfigurationsvariablen mit Heroku teilen

Wir müssen unseren Bot-Token mit Heroku teilen, damit er unseren Bot für uns bereitstellen kann. Gehen Sie dazu zu den Einstellungen und klicken Sie auf "Konfigurationsvariablen anzeigen". Füge deinen Witzbot hinzu, den du von Slack erhalten hast:

Schritt 3: Hinzufügen eines Protokolls

Da Heroku standardmäßig Webseiten bereitstellt, müssen wir noch etwas hinzufügen, damit dies funktioniert. Gehen Sie zu Ihrem Projekt und erstellen Sie eine neue Datei namens Procfile. Fügen Sie in dieser Datei den folgenden Linienarbeiter hinzu: node index.js. Speichern Sie diese Datei und senden Sie sie an GitHub. Als letztes müssen Sie zu Ihrem Heroku-Dashboard gehen, Ressourcen auswählen und sicherstellen, dass Ihr "Worker" -Dyno aktiviert und Ihr "Web" -Dyno deaktiviert ist (siehe unten).

Das ist es! Dein Witzbot sollte funktionieren. Jedes Mal, wenn Sie mit Ihrem Bot chatten, antwortet dieser mit einem Witz des Vaters:

Schau dir mein GitHub-Repo mit dem fertigen Produkt an: https://github.com/astr0-4/jokes-bot. Lassen Sie mich wissen, wenn Sie Fragen in den Kommentaren unten haben!