Πώς να δημιουργήσετε ένα βασικό slackbot: έναν οδηγό για αρχάριους

Ενημέρωση: ο κώδικας και το σεμινάριο ενημερώθηκαν στις 28 Ιουνίου για να αντικατοπτρίζουν τις αλλαγές του Slack API .

Slackbots: Γιατί να τα χρησιμοποιήσετε;

Πριν μπείτε στο εκπαιδευτικό μέρος αυτής της ανάρτησης, ας ρίξουμε μια ματιά στο γιατί αυτό μπορεί να είναι ένα αξιόλογο έργο και εργαλείο.

Το Slack είναι ένα όλο και πιο δημοφιλές εργαλείο για επικοινωνία σε όλη την ομάδα. Έχει αναπτυχθεί ώστε να περιλαμβάνει πρόσθετα για άλλα ευρέως χρησιμοποιούμενα εργαλεία διαχείρισης έργων, όπως το JIRA, το Google Drive και τα παρόμοια. Οποιοσδήποτε χαλαρός χρήστης γνωρίζει - όσο περισσότερα μπορείτε να κάνετε μέσα από τη συνομιλία, τόσο το καλύτερο.

Οι κοινές χρήσεις για ένα φάσμα slackbot από έναν απλό ειδοποιητή για το πότε μια εργασία έχει ολοκληρωθεί (όπως μια δοκιμαστική έκδοση ή όταν το γεύμα σας είναι έτοιμο) σε διαδραστικά, ρομπότ με κουμπιά που εκτελούν εντολές κατά βούληση του χρήστη. Μπορείτε να δημιουργήσετε μηχανισμούς ψηφοφορίας, bots συνομιλίας και άλλα.

Δημιουργία περιβάλλοντος προγραμματισμού python

Εάν είστε χρήστης των Windows και δεν έχετε χρησιμοποιήσει το python στο παρελθόν, θα πρέπει να το εγκαταστήσετε. Χρήστες Linux / Mac: Το Unix έρχεται με python!

Μόλις εγκατασταθεί, ενεργοποιήστε το τερματικό σας και πληκτρολογήστε pythonή python3(εάν έχετε πολλές εγκαταστάσεις) για να βεβαιωθείτε ότι λειτουργεί και είναι εκεί.

Επίσης, ελέγξτε για να δείτε ότι έχετε έναν καλό επεξεργαστή κειμένου για κώδικα: το υψηλό και το άτομο είναι εξαιρετικές επιλογές.

Προαιρετικό: Μπορεί επίσης να είναι χρήσιμο να εργάζεστε σε ένα εικονικό περιβάλλον - είναι καλή πρακτική όταν έχετε πολλές εξαρτήσεις.

pip install virtualenv virtualenv tutorial source tutorial/bin/activate

Θα πρέπει επίσης να πιείτε το εκπαιδευτικό πρόγραμμα GitHub repo και να κλωνοποιήσετε στο τοπικό μηχάνημά σας, καθώς θα χρησιμοποιήσουμε αυτόν τον κώδικα ως πλαίσιο για αυτό το σεμινάριο.

Για να το κάνετε αυτό, μεταβείτε στο repo και κάντε κλικ Forkπάνω δεξιά. Το διχαλωτό repo πρέπει να είναι / slackbot-tutorial . Πατήστε το πράσινο Clone or downloadκουμπί στα δεξιά κάτω από τη γραμμή στατιστικών και αντιγράψτε το url. Επιστρέψτε στο τερματικό για να κλωνοποιήσετε το αποθετήριο:

cd Desktop/ git clone //github.com/yourusername/slackbot-tutorial.git cd slackbot-tutorial/ sublime . (or open your text editor and open this directory)

Εφαρμογές Slack

Υπάρχουν δύο τρόποι για να δημιουργήσετε το slackbot σας: αυτόνομα bots ή εφαρμογές Slack. Οι εφαρμογές επιτρέπουν ένα ευρύτερο φάσμα λειτουργιών προς τα εμπρός και είναι η προτεινόμενη διαδρομή του Slack για τη δημιουργία ενός χρήστη bot.

Μεταβείτε στη διεύθυνση //api.slack.com/apps και πατήστε Create New Appπάνω δεξιά. Δώστε του ένα όνομα και επιλέξτε έναν χώρο εργασίας όπου μπορείτε να δημιουργήσετε ένα κανάλι για να δοκιμάσετε το bot σας. Μπορείτε πάντα να διαμορφώσετε ξανά το bot σας για έναν άλλο χώρο εργασίας αργότερα ή ακόμα και να το δημοσιεύσετε στον κατάλογο εφαρμογών Slack.

Συνιστώ να δημιουργήσετε ένα κανάλι # δοκιμής σε ένα χώρο εργασίας που δημιουργείτε μόνο για αναπτυξιακούς σκοπούς ή ένα κανάλι που έχει σχετικά λίγους χρήστες που δεν θα σας πειράζουν να δοκιμάσετε κάτι εκεί έξω.

Το πρώτο πράγμα που θέλετε να κάνετε είναι να λάβετε το διακριτικό bot. Όταν φτάσετε στην παραπάνω σελίδα, κάντε κλικ στο Bots. Προσθέστε ορισμένα πεδία. Αυτά καθορίζουν ποια δικαιώματα θα έχει ο χρήστης bot της εφαρμογής σας. Για να ξεκινήσετε, συνομιλία: γράψτεκαιim: γράψτεείναι μάλλον αρκετά.

Τώρα, για να λάβετε πραγματικά τα διακριτικά σας, θα θέλετε να μεταβείτε στην OAuth & Permissionsαριστερή πλευρική γραμμή.

Εδώ, θα μπορείτε να Install the App to the Workspaceδημιουργήσετε και να δημιουργήσετε τα απαραίτητα διακριτικά. Κατά κανόνα, τα διακριτικά bot ξεκινούν μεxoxb-.

Θα θέλατε επίσης το αρχικό μυστικό , το οποίο βρίσκεται στην ενότητα Βασικές πληροφορίες> Πιστοποιητικά εφαρμογών.

Λειτουργεί ως Bot σας

Τώρα έχετε τα απαραίτητα διαπιστευτήρια για να κάνετε κλήσεις API και να ενεργήσετε ως bot σας. Για να το δοκιμάσετε, ενεργοποιήστε ένα τερματικό και εκτελέστε το (με το σωστό διακριτικό και όνομα καναλιού)

curl -X POST \ -H 'Authorization: Bearer xoxb-your-token' \ -H 'Content-type: application/json;charset=utf-8' \ --data '{"channel":"#test","text":"Hello, Slack!"}' \ //slack.com/api/chat.postMessage

Εάν μεταβείτε σε αυτό το κανάλι στον χαλαρό χώρο εργασίας σας, θα πρέπει τώρα να δείτε ένα μήνυμα από το bot σας! Μόλις κάνατε ένα αίτημα HTTP POST - ζητήσατε από έναν διακομιστή να δημοσιεύσει ένα μήνυμα κάπου.

Προγραμματισμός του Bot

Θέλουμε να κάνουμε τα παραπάνω προγραμματικά. Υπάρχουν μερικοί διαφορετικοί τρόποι με τους οποίους μπορείτε να ρυθμίσετε ένα slackbot. Θα καλύψω τα εξής:

  • Ενεργοποιείται περιοδικά (σε πρόγραμμα) για να πει κάτι
  • / slash εντολές

Το δεύτερο απαιτεί έναν διακομιστή να λειτουργεί, ενώ ο πρώτος δεν λειτουργεί.

Προγραμματισμένα μηνύματα

Ας υποθέσουμε ότι θέλετε να στέλνετε περιοδικά ένα μήνυμα κάπου - ίσως κάθε Δευτέρα το πρωί. Μεταβείτε στον επεξεργαστή κειμένου όπου ανοίξατε slackbot-tutorial.

You should see a file scheduled.py. Take a look: sendMessage is a function that fires off the API call to slack and posts a message. At the bottom, you’ll see the main method: what executes when you run the script. Here, you’ll see a few things to note:

  • SLACK_BOT_TOKEN is pulled from os.environ['SLACK_BOT_TOKEN'] — how? Run export SLACK_BOT_TOKEN="xoxb-your-token" in your terminal to set this variable.
  • a scheduler is used here, and there’s an infinite loop that checks for events on the scheduler. By default here, I’ve scheduled the sendMessage function to be called every minute.

To test this out, go back to the terminal where you’re in the slackbot-tutorial directory and run

export SLACK_BOT_TOKEN="xoxb-your-token" python scheduled.py

You should see the log messages print. Make sure you’ve changed channel=#test in the code to your test channel name (if different) and added your bot (in the slack channel, type /invite @botname. Let it run for a couple minutes and watch the messages show up on Slack!

This is, of course, a super basic implementation of a scheduled message sender — you can actually do this just with slackbot /remind #test “Hello, Slack!” every Monday at 9am.

The true power here is that you can substitute in any function for sendMessage, leveraging the power of interfacing with external services through APIs, doing math, etc and then constructing a message to post.

Slash Commands

This one requires a little more setup — go back to your app settings > Slash Commands. Create a new slash command: for example, /test. For the request URL, you’ll need to either deploy this web server (I use Heroku), or run a local ngrok instance to test it. The latter will run it locally, and is best for testing. You can brew install ngrok or get it from here.

In the starter code repo, look for slashCommand.py to start understanding this method. To start the server, run python server.py. The Request URL to put in Slack will be given by your ngrok instance and the @app.route in your code — it would be something like //a1234b5cde6f.ngrok.io/slack/test (the bold part comes from the route defined in the code). You should be able to test the slash commands in your Slack workspace. From the tutorial code, try /test.

Moving Forward

Now you have a very basic slackbot that either operates on a command or runs every so often. Be creative with how you use it! Think about what else you can link this skeleton to to make it more useful.

Other ways your bot might respond

  1. Οι ενέργειες / απαντήσεις θα μπορούσαν να προκληθούν από αναφορές ή συγκεκριμένες φράσεις. Αυτό απαιτεί την εκτέλεση διακομιστή και την ακρόαση των μηνυμάτων κάπου.
  2. Μπορείτε να συνομιλήσετε και να συμβάλλετε σε θέματα. Ρίξτε μια ματιά στο NLP για να ξεκινήσετε να έχετε κατανοητή συνομιλία! Το Word2Vec + TensorFlow ή το Keras μπορεί να είναι ένα μέρος για να ξεκινήσετε. Το DialogFlow είναι επίσης υπέροχο.
  3. Συνδέστε το με κάποια άλλα API. Ίσως θέλετε να μπορείτε να αλληλεπιδράτε με ένα Φύλλο Google και να εκτελείτε μερικούς υπολογισμούς. Ίσως θέλετε να στείλετε σε άλλους χρήστες ένα μήνυμα βάσει ορισμένων ενεργειών. Ενσωματώστε τα κουμπιά. Ίσως θέλετε να ενεργοποιήσετε μηνύματα που βασίζονται σε κάτι άλλο.