Kuinka rakentaa perus slackbot: aloittelijan opas

Päivitys: koodi ja opetusohjelma päivitettiin 28. kesäkuuta vastaamaan Slack API -muutoksia .

Slackbots: Miksi käyttää niitä?

Ennen kuin pääsemme tämän viestin opetusosaan, katsotaanpa, miksi tämä voi olla arvokas projekti ja työkalu.

Slack on yhä suositumpi työkalu koko joukkueen laajuiseen viestintään. Se on kasvanut sisällyttämään laajennuksia muille laajalti käytetyille projektinhallintatyökaluille, kuten JIRA, Google Drive ja vastaavat. Jokainen löysä käyttäjä tietää - mitä enemmän voit tehdä keskustelun sisällä, sitä parempi.

Slackbotin yleiset käyttötavat vaihtelevat yksinkertaisesta ilmoittajasta, kun tehtävä on valmis (kuten testirakenne tai kun lounas on valmis) interaktiivisiin painikkeisiin perustuviin botteihin, jotka suorittavat komentoja käyttäjän tahdosta. Voit rakentaa kyselymekanismeja, keskustelurobotteja ja paljon muuta.

Python-ohjelmointiympäristön määrittäminen

Jos olet Windows-käyttäjä ja et ole aiemmin käyttänyt pythonia, sinun on asennettava se. Linux / Mac-käyttäjät: Unixin mukana tulee python!

Kun se on asennettu, käynnistä pääte ja kirjoita pythontai python3(jos sinulla on useita asennuksia) varmistaaksesi, että se toimii ja on siellä.

Tarkista myös, että sinulla on hyvä koodieditori: sublime ja atom ovat upeita valintoja.

Valinnainen: Voi olla myös hyödyllistä työskennellä virtuaaliympäristössä - se on hyvä käytäntö, kun sinulla on paljon riippuvuuksia.

pip install virtualenv virtualenv tutorial source tutorial/bin/activate

Sinun tulisi myös haarata opetusohjelma GitHub-repo ja kloonata paikalliselle koneellesi, koska käytämme kyseistä koodia tämän opetusohjelman kehykseksi.

Voit tehdä tämän siirtymällä takaisinmyyntiin ja napsauttamalla Forkoikeassa yläkulmassa. Haarautuneen repon tulisi olla / slackbot-tutorial . Clone or downloadNapsauta tilastopalkin oikealla puolella olevaa vihreää painiketta ja kopioi URL-osoite. Palaa päätelaitteeseen kloonataksesi arkiston:

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

Löysät sovellukset

Slackbotin luomisessa on kaksi tapaa: erilliset botit tai Slack-sovellukset. Sovellukset mahdollistavat laajemman valikoiman toimintoja tulevaisuudessa, ja se on Slackin suosittelema reitti botin käyttäjän luomiseen.

Siirry osoitteeseen //api.slack.com/apps ja paina Create New Appoikeassa yläkulmassa. Anna sille nimi ja valitse työtila, jossa voit luoda kanavan testataksesi botin. Voit aina määrittää botin uudelleen toiseen työtilaan myöhemmin tai jopa lähettää sen Slack-sovellushakemistoon.

Suosittelen, että teet #test-kanavan työtilaan, jonka luot vain kehitystarkoituksiin, tai sellaisen, jolla on suhteellisen vähän käyttäjiä, jotka eivät välitä siitä, että testaat jotain siellä.

Ensimmäinen asia, jonka haluat tehdä, on saada botti-tunnus. Kun pääset edelliselle sivulle, napsauta Botit. Lisää joitain laajuuksia; nämä määrittävät sovelluksesi botin käyttäjällä olevat käyttöoikeudet. Aloita keskustelu: kirjoitajaim: kirjoitaovat todennäköisesti tarpeeksi.

Nyt, jotta saat tosiasiallisesti tunnuksesi, sinun on mentävä OAuth & Permissionsvasemmalle sivupalkille.

Täällä voit Install the App to the Workspaceluoda ja luoda tarvittavat tunnukset. Nyrkkisääntönä botti-tunnukset alkavatxoxb-.

Haluat myös s syttyvän salaisuuden , joka sijaitsee kohdassa Perustiedot> Sovellustiedot.

Toimiminen bottina

Nyt sinulla on tarvittavat tunnistetiedot API-puheluiden soittamiseen ja bottina toimimiseen. Testaa tämä käynnistämällä pääte ja suorittamalla tämä (oikealla tunnuksella ja kanavan nimellä):

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

Jos siirryt kanavalle löysässä työtilassa, sinun pitäisi nyt nähdä bottiesi viesti! Teit juuri HTTP POST -pyynnön - pyysit palvelinta lähettämään viestin jonnekin.

Botin ohjelmointi

Haluamme tehdä yllä mainitun järjestelmällisesti. Slackbotin voi asettaa muutamalla eri tavalla. Käsittelen seuraavaa:

  • Käynnistettiin säännöllisesti (aikataulun mukaan) sanomaan jotain
  • / kauttakomennot

Toinen vaatii palvelimen käynnissä, kun taas ensimmäinen ei.

Ajoitetut viestit

Oletetaan, että haluat lähettää ajoittain viestin jonnekin - ehkä joka maanantai-aamu. Siirry tekstieditoriin, johon avasit 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. Toiminnot / vastaukset voivat laukaista maininnat tai tietyt lauseet. Tämä edellyttää palvelimen käyttämistä ja viestien kuuntelua jonnekin.
  2. Botti voi olla keskusteleva ja saattaa vaikuttaa ketjuihin. Tutustu NLP: hen aloittaaksesi ymmärrettävän keskustelun! Word2Vec + TensorFlow tai Keras voivat olla paikka aloittaa. DialogFlow on myös hieno.
  3. Yhdistä se joihinkin muihin sovellusliittymiin. Ehkä haluat pystyä olemaan vuorovaikutuksessa Google Sheetin kanssa ja suorittamaan laskelmia. Haluat ehkä lähettää muille käyttäjille viestin joidenkin toimintojen perusteella. Integroi painikkeet. Ehkä haluat käynnistää viestejä johonkin muuhun perustuen.