Hvordan lage en grunnleggende slackbot: en nybegynnerveiledning

Oppdatering: kode og opplæring oppdatert 28. juni for å gjenspeile Slack API-endringer .

Slackbots: Hvorfor bruke dem?

Før vi går inn i opplæringsdelen av dette innlegget, la oss ta en titt på hvorfor dette kan være et verdig prosjekt og verktøy.

Slack er et stadig mer populært verktøy for teamomfattende kommunikasjon. Det har vokst til å inkludere plugins for andre mye brukte prosjektledelsesverktøy, som JIRA, Google Drive og lignende. Enhver slapp bruker vet - jo mer du kan gjøre innenfra samtalen, jo bedre.

Vanlige bruksområder for en slackbot spenner fra en enkel varsling for når en oppgave er fullført (som en testbygging, eller når lunsjen din er klar) til interaktive, knappebaserte roboter som utfører kommandoer etter brukerens vilje. Du kan bygge avstemningsmekanismer, samtaleboter og mer.

Sette opp et python-programmeringsmiljø

Hvis du er Windows-bruker og ikke har brukt python før, må du installere den. Linux / Mac-brukere: Unix kommer med python!

Når du er installert, kan du fyre opp terminalen og skrive pythoneller python3(hvis du har flere installasjoner) for å sikre at den fungerer og er der.

Sjekk også at du har en god tekstredigerer for kode: sublimt og atom er gode valg.

Valgfritt: Det kan også være nyttig å jobbe i et virtuelt miljø - det er god praksis når du har mange avhengigheter.

pip install virtualenv virtualenv tutorial source tutorial/bin/activate

Du bør også forkaste opplæringen GitHub repo og klone til din lokale maskin, da vi bruker den koden som et rammeverk for denne opplæringen.

For å gjøre dette, gå til repoen og klikk Forkøverst til høyre. Den gaffelte repoen skal være / slackbot-tutorial . Trykk på den grønne Clone or downloadknappen til høyre under statistikklinjen, og kopier url. Gå tilbake til terminalen for å klone depotet:

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

Slakke apper

Det er to måter å opprette slackbot på: frittstående roboter eller Slack-apper. Apper tillater et bredere spekter av funksjonalitet fremover, og er Slacks anbefalte rute for å opprette en botbruker.

Gå til //api.slack.com/apps og trykk Create New Appøverst til høyre. Gi det et navn og velg et arbeidsområde der du kan opprette en kanal å teste boten i. Du kan alltid konfigurere boten din for et annet arbeidsområde senere, eller til og med legge den ut i Slack App Directory.

Jeg anbefaler å lage en #test-kanal i et arbeidsområde du oppretter bare for utviklingsformål, eller en som har relativt få brukere som ikke har noe imot at du tester noe der ute.

Det første du vil gjøre er å få bot-token. Når du kommer til siden ovenfor, klikker du på Bots. Legg til noen omfang; disse bestemmer hvilke tillatelser appens bot-bruker vil ha. For å starte, chat: skrivogim: skriver nok nok.

Nå, for å faktisk få tokens, vil du gå til OAuth & Permissionspå venstre sidefelt.

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

Du vil også ha skjermhemmeligheten , som ligger under Grunnleggende informasjon> Applegitimasjon.

Fungerer som din Bot

Nå har du legitimasjonen som er nødvendig for å ringe API-anrop og fungere som din bot. For å teste dette, skyte av en terminal og kjøre denne (med riktig 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 kanalen i det slanke arbeidsområdet ditt, bør du nå se en melding fra boten din! Du har nettopp laget en HTTP POST-forespørsel - ba en server om å legge ut en melding et sted.

Programmering av Bot

Vi ønsker å gjøre det ovennevnte programmatisk. Det er noen forskjellige måter du kan sette opp en slackbot. Jeg vil dekke følgende:

  • Utløses med jevne mellomrom (etter en tidsplan) for å si noe
  • / skråstrek-kommandoer

Den andre krever en server som kjører, mens den første ikke gjør det.

Planlagte meldinger

La oss si at du med jevne mellomrom vil sende en melding et sted - kanskje hver mandag morgen. Gå til tekstredigereren der du åpnet slackbot-tutorial.

Du bør se en fil scheduled.py. Ta en titt: sendMessageer en funksjon som utløser API-anropet for å slakke og legge ut en melding. Nederst ser du hovedmetoden: hva kjøres når du kjører skriptet. Her ser du noen ting å merke seg:

  • SLACK_BOT_TOKENhentes fra os.environ['SLACK_BOT_TOKEN']- hvordan? Kjør export SLACK_BOT_TOKEN="xoxb-your-token"i terminalen for å stille inn denne variabelen.
  • en planlegger brukes her, og det er en uendelig løkke som sjekker for hendelser på planleggeren. Som standard her har jeg planlagt at sendMessagefunksjonen skal ringes hvert minutt.

For å teste dette, gå tilbake til terminalen der du er i slackbot-tutorialkatalogen og kjør

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 utløses av omtale eller visse setninger. Dette krever at du kjører en server og lytter meldingene et sted.
  2. Du kan være konversasjon og kan bidra til tråder. Ta en titt på NLP for å komme i gang med en forståelig samtale! Word2Vec + TensorFlow eller Keras kan være et sted å starte. DialogFlow er også flott.
  3. Koble den sammen med noen andre API-er. Kanskje du vil være i stand til å samhandle med et Google-ark og kjøre noen beregninger. Det kan være lurt å sende andre brukere en melding basert på noen handlinger. Integrer knapper. Kanskje du vil utløse meldinger basert på noe annet.