Hogyan készítsünk egy alapvető slackbotot: útmutató kezdőknek

Frissítés: a kód és az oktatóanyag június 28-án frissült a Slack API változásainak tükrözése érdekében .

Slackbots: Miért használja őket?

Mielőtt belekezdenénk a bejegyzés oktató részébe, nézzük meg, miért lehet ez érdemes projekt és eszköz.

A lazaság egyre népszerűbb eszköz az egész csapatot érintő kommunikációhoz. Úgy bővült, hogy beépítsen más, széles körben használt projektmenedzsment-eszközök, például a JIRA, a Google Drive és hasonlók beépülő moduljait. Bármely laza felhasználó tudja - minél többet tehet a beszélgetésen belül, annál jobb.

A slackbot gyakori felhasználási területe az egyszerű értesítőtől kezdve, amikor a feladat befejeződik (például egy teszt összeállításakor, vagy amikor az ebéd készen áll), az interaktív, gombon alapuló robotokig, amelyek a felhasználó akarata szerint hajtanak végre parancsokat. Beépíthet szavazási mechanizmusokat, társalgási botokat és még sok mást.

Python programozási környezet beállítása

Ha Windows felhasználó vagy, és még nem használtál pythonot, akkor telepítened kell. Linux / Mac felhasználók: A Unix Python-szal érkezik!

A telepítés után indítsa el a terminált és írja be a ( pythonvagy python3ha több telepítéssel rendelkezik) gépet, hogy megbizonyosodjon arról, hogy működik-e és van-e.

Ellenőrizze azt is, hogy van-e megfelelő szövegszerkesztője a kódhoz: a fenséges és az atom remek választás.

Opcionális: Hasznos lehet virtuális környezetben dolgozni - ez jó gyakorlat, ha sok függőség van.

pip install virtualenv virtualenv tutorial source tutorial/bin/activate

Ezenkívül meg kell forkolnia az oktatóanyag GitHub repóját és klónozni a helyi gépre, mivel ezt a kódot fogjuk használni az oktatóanyag keretrendszeréhez.

Ehhez lépjen a repóhoz, és kattintson Forka jobb felső sarokban. A villás repo legyen a / slackbot-tutorial . Nyomja Clone or downloadmeg a jobb oldalon található zöld gombot a statisztikai sáv alatt, és másolja az URL-t. Térjen vissza a terminálhoz a tároló klónozásához:

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

Slack Apps

A slackbot létrehozásának két módja van: önálló botok vagy Slack alkalmazások. Az alkalmazások a jövőben szélesebb funkcionalitást tesznek lehetővé, és ez a Slack által ajánlott útvonal a botfelhasználók létrehozásához.

Lépjen a //api.slack.com/apps oldalra, és kattintson Create New Appa jobb felső sarokban. Adjon neki egy nevet, és válasszon egy munkaterületet, ahol létrehozhat egy csatornát a bot teszteléséhez. Később bármikor átkonfigurálhatja a botot egy másik munkaterületre, vagy akár a Slack App Directory-ba is elküldheti.

Azt javaslom, hogy készítsen #test csatornát egy munkaterületen, amelyet csak fejlesztési célokra hoztak létre, vagy olyan csatornát, amelynek viszonylag kevés felhasználója van, aki nem bánná, ha tesztelne valamit odakinn.

Az első dolog, amit meg kell tennie, az a bot token megszerzése. Amikor eljut a fenti oldalra, kattintson a Botok elemre. Adjon hozzá néhány hatókört; ezek meghatározzák, hogy az alkalmazás bot-felhasználójának milyen engedélyei lesznek. Kezdésként csevegjen: írjonésim: írjvalószínűleg elég.

Most, hogy valóban megkapja a tokenjeit, OAuth & Permissionsa bal oldalsávra kell lépnie .

Itt képes lesz Install the App to the Workspacelétrehozni és létrehozni a szükséges tokeneket. Alapszabályként a bot-jelzők a következőkkel kezdődnekxoxb-.

Szüksége lesz az s igning titokra is , amely az Alapvető információk> Alkalmazás hitelesítő adatai alatt található.

Botként viselkedve

Most már rendelkezik az API-hívások kezdeményezéséhez és a botként történő működéshez szükséges hitelesítő adatokkal. Ennek kipróbálására indítson egy terminált, és futtassa (a megfelelő tokennel és csatornanévvel):

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

Ha laza munkaterületén arra a csatornára megy, akkor látnia kell egy üzenetet a botjától! Most küldött egy HTTP POST kérést - megkért egy szervert, hogy tegyen üzenetet valahova.

A bot programozása

A fentieket programszerűen szeretnénk megtenni. Néhány különféle módon állíthat be slackbotot. A következőkre terjedek ki:

  • Időnként (menetrend szerint) váltott ki valamit
  • / perjel parancsokat

A másodikhoz egy kiszolgáló fut, míg az első nem.

Ütemezett üzenetek

Tegyük fel, hogy időszakosan szeretne üzenetet küldeni valahova - talán minden hétfő reggel. Lépjen a szövegszerkesztőbe, ahol megnyílt slackbot-tutorial.

Látnia kellene egy fájlt scheduled.py. Vessen egy pillantást: sendMessageegy olyan funkció, amely elindítja az API hívást, hogy elernyedjen és üzenetet tegyen közzé. Alul látható a fő módszer: mi fut le, amikor futtatja a parancsfájlt. Itt látható néhány megjegyzendő dolog:

  • SLACK_BOT_TOKENkihúzzák os.environ['SLACK_BOT_TOKEN']- hogyan? Futtassa export SLACK_BOT_TOKEN="xoxb-your-token"a terminálon ennek a változónak a beállításához.
  • itt egy ütemezőt használnak, és van egy végtelen hurok, amely ellenőrzi az ütemező eseményeit. Alapértelmezés szerint itt ütemeztem a sendMessagefunkció hívását percenként.

Ennek teszteléséhez menjen vissza abba a terminálba, ahol a slackbot-tutorialkönyvtárban van, és futtassa

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. Actions/responses could be triggered by mentions or certain phrases. This requires running a server and listening the messages somewhere.
  2. You bot could be conversational, and might contribute to threads. Check out some NLP to get started on having intelligible conversation! Word2Vec + TensorFlow or Keras might be a place to start. DialogFlow is also great.
  3. Link it up with some other APIs. Maybe you want to be able to interact with a Google Sheet and run some calculations. You might want to send other users a message based on some actions. Integrate buttons. Perhaps you want to trigger messages based on something else.