Sådan bygger du en grundlæggende slackbot: en begyndervejledning

Opdatering: kode og tutorial opdateret 28. juni for at afspejle Slack API-ændringer .

Slackbots: Hvorfor bruge dem?

Før vi går ind i vejledningsdelen af ​​dette indlæg, lad os se på, hvorfor dette kan være et værdig projekt og værktøj.

Slack er et stadig mere populært værktøj til kommunikation i hele teamet. Det er vokset til at omfatte plugins til andre meget anvendte projektstyringsværktøjer, som JIRA, Google Drive og lignende. Enhver slap bruger ved - jo mere du kan gøre inden for samtalen, jo bedre.

Almindelige anvendelser for en slackbot spænder fra en simpel besked, når en opgave er færdig (som en testopbygning, eller når din frokost er klar) til interaktive, knapbaserede bots, der udfører kommandoer efter brugerens vilje. Du kan oprette afstemningsmekanismer, samtalebots med mere.

Opsætning af et python-programmeringsmiljø

Hvis du er Windows-bruger, og du ikke har brugt python før, skal du installere det. Linux / Mac-brugere: Unix leveres med python!

Når du er installeret, skal du starte din terminal og skrive pythoneller python3(hvis du har flere installationer) for at sikre, at den fungerer og er der.

Kontroller også, om du har en god teksteditor til kode: sublim og atom er gode valg.

Valgfrit: Det kan også være nyttigt at arbejde i et virtuelt miljø - det er god praksis, når du har mange afhængigheder.

pip install virtualenv virtualenv tutorial source tutorial/bin/activate

Du skal også forkaste tutorial GitHub repo og klone til din lokale maskine, da vi bruger den kode som en ramme for denne tutorial.

For at gøre dette skal du gå til repoen og klikke Forkpå øverst til højre. Forklædt repo skal være / slackbot-tutorial . Tryk på den grønne Clone or downloadknap til højre under statistiklinjen, og kopier url'en. Gå tilbage til terminalen for at klone lageret:

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

Slap apps

Der er to måder at gå til at oprette din slackbot: enkeltstående bots eller Slack-apps. Apps tillader en bredere vifte af funktionalitet fremadrettet og er Slacks anbefalede rute til oprettelse af en botbruger.

Gå til //api.slack.com/apps, og tryk Create New Appøverst til højre. Giv det et navn, og vælg et arbejdsområde, hvor du kan oprette en kanal til at teste din bot i. Du kan altid omkonfigurere din bot til et andet arbejdsområde senere eller endda sende den til Slack App Directory.

Jeg anbefaler, at du opretter en #test-kanal i et arbejdsområde, du opretter kun til udviklingsformål, eller en der har relativt få brugere, der ikke har noget imod, at du tester noget derude.

Den første ting, du vil gøre, er at få bot-tokenet. Når du kommer til ovenstående side, skal du klikke på Bots. Tilføj nogle rækkevidde; disse bestemmer, hvilke tilladelser din apps botbruger har. For at starte, chat: skrivogim: skriver nok nok.

Nu, for faktisk at få dine tokens, vil du gå til OAuth & Permissionspå venstre sidepanel.

Her kan du Install the App to the Workspacegenerere de nødvendige tokens. Som en tommelfingerregel starter bot-tokens medxoxb-.

Du vil også have igangsættelseshemmeligheden , som findes under Grundlæggende oplysninger> Applegitimationsoplysninger.

Fungerer som din Bot

Nu har du de legitimationsoplysninger, der er nødvendige for at foretage API-opkald og fungere som din bot. For at teste dette skal du starte en terminal og køre denne (med det korrekte token og kanalnavn):

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

Hvis du går til den kanal i dit slappe arbejdsområde, skal du nu se en besked fra din bot! Du har lige lavet en HTTP POST-anmodning - bad en server om at sende en besked et eller andet sted.

Programmering af Bot

Vi ønsker at gøre ovenstående programatisk. Der er et par forskellige måder, du kan oprette en slackbot på. Jeg dækker følgende:

  • Udløst med jævne mellemrum (efter en tidsplan) for at sige noget
  • / skråstregkommandoer

Den anden kræver en server, der kører, mens den første ikke gør det.

Planlagte meddelelser

Lad os sige, at du med jævne mellemrum vil sende en besked et eller andet sted - måske hver mandag morgen. Gå til teksteditoren, hvor du åbnede slackbot-tutorial.

Du skal se en fil scheduled.py. Se: sendMessageer en funktion, der udløser API-opkaldet for at slække og sende en besked. Nederst ser du hovedmetoden: hvad der udføres, når du kører scriptet. Her kan du se et par ting at bemærke:

  • SLACK_BOT_TOKENtrækkes fra os.environ['SLACK_BOT_TOKEN']- hvordan? Kør export SLACK_BOT_TOKEN="xoxb-your-token"i din terminal for at indstille denne variabel.
  • her bruges en planlægning, og der er en uendelig løkke, der kontrollerer for begivenheder på planlæggeren. Som standard her har jeg planlagt, at sendMessagefunktionen skal kaldes hvert minut.

For at teste dette skal du gå tilbage til terminalen, hvor du er i slackbot-tutorialbiblioteket, og køre

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. Handlinger / svar kan udløses af omtale eller bestemte sætninger. Dette kræver, at du kører en server og lytter beskederne et eller andet sted.
  2. Din bot kan være en samtale og kan bidrage til tråde. Tjek noget NLP for at komme i gang med en forståelig samtale! Word2Vec + TensorFlow eller Keras kan være et sted at starte. DialogFlow er også fantastisk.
  3. Forbind det med nogle andre API'er. Måske vil du være i stand til at interagere med et Google Sheet og køre nogle beregninger. Det kan være en god idé at sende andre brugere en besked baseret på nogle handlinger. Integrer knapper. Måske vil du udløse beskeder baseret på noget andet.