Kuidas ehitada põhiline lõtv robot: algajate juhend

Uuendus: kood ja õpetus värskendati 28. juunil, et kajastada Slack API muudatusi .

Slackbots: Miks neid kasutada?

Enne kui jõuame selle postituse juhendamisse, uurime, miks see võib olla väärt projekt ja tööriist.

Lõtvus on kogu meeskonda hõlmava suhtluse jaoks üha populaarsem tööriist. See on kasvanud hõlmama pistikprogramme teiste laialdaselt kasutatavate projektijuhtimistööriistade jaoks, nagu JIRA, Google Drive ja muud sarnased. Iga lõtv kasutaja teab - mida rohkem saate vestluse kaudu teha, seda parem.

Slackboti tavalised kasutusvõimalused ulatuvad lihtsast teatajast, kui ülesanne on lõpule jõudnud (näiteks testi loomine või kui teie lõunasöök on valmis) kuni interaktiivsete nupupõhiste robotiteni, mis täidavad käske kasutaja tahtmisel. Saate luua küsitlusmehhanisme, vestlusroboteid ja palju muud.

Püütoni programmeerimiskeskkonna seadistamine

Kui olete Windowsi kasutaja ja te pole varem Pythoni kasutanud, peate selle installima. Linuxi / Maci kasutajad: Unix on varustatud pythoniga!

Kui see on installitud, käivitage terminal ja tippige pythonvõi python3(kui teil on mitu installi), veendumaks, et see töötab ja on olemas.

Samuti kontrollige, kas teil on koodi jaoks hea tekstiredaktor: ülev ja aatom on suurepärased valikud.

Valikuline: Samuti võib olla kasulik töötada virtuaalses keskkonnas - see on hea tava, kui teil on palju sõltuvusi.

pip install virtualenv virtualenv tutorial source tutorial/bin/activate

Samuti peaksite õpetama GitHubi repo ja kloonima oma kohaliku masina, kuna me kasutame seda koodi selle õpetuse raamistikuna.

Selleks minge repo-sse ja klõpsake Forkparemas ülaosas. Kahvlik repo peaks olema / slackbot-tutorial . Vajutage Clone or downloadstatistika riba all paremal asuvat rohelist nuppu ja kopeerige URL. Hoidla kloonimiseks naaske terminali:

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

Lõdvad rakendused

Slackboti loomisel on kaks võimalust: eraldiseisvad robotid või Slack-rakendused. Rakendused võimaldavad edaspidi laiemat funktsionaalsust ja on Slacki soovitatav tee bot-kasutaja loomiseks.

Minge saidile //api.slack.com/apps ja vajutage Create New Appparemas ülanurgas. Pange sellele nimi ja valige tööruum, kus saate luua kanali, kus oma robotit testida. Võite alati oma bot uuesti mõne muu tööruumi jaoks ümber konfigureerida või isegi selle Slacki rakenduste kataloogi postitada.

Soovitan teha #test kanal loodavas tööruumis ainult arenduse eesmärgil või kanal, millel on suhteliselt vähe kasutajaid, kes ei pahandaks, et te midagi seal katsetate.

Esimene asi, mida soovite teha, on botimärgi hankimine. Kui jõuate ülaltoodud lehele, klõpsake nuppu Bots. Lisage mõned reguleerimisalad; need määravad, millised õigused teie rakenduse roboti kasutajal on. Alustuseks vestelge: kirjutagejaim: kirjutaon ilmselt piisav.

Nüüd, et oma märke tegelikult kätte saada, soovite minna OAuth & Permissionsvasakule küljeribale.

Siin saate Install the App to the Workspaceluua ja genereerida vajalikud märgid. Rusikareeglina algavad botimärgidxoxb-.

Samuti soovite s ignoreerivat saladust , mis asub jaotises Põhiteave> Rakenduse mandaadid.

Teie botina tegutsemine

Nüüd on teil API-kõnede tegemiseks ja robotina tegutsemiseks vajalikud mandaadid. Selle proovimiseks käivitage terminal ja käivitage see (õige loa ja kanali nimega):

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

Kui lähete oma lõdvas tööruumis sellele kanalile, peaksite nüüd nägema oma roboti sõnumit! Tegite just HTTP POST-päringu - palusite serveril kuhugi sõnumi postitada.

Boti programmeerimine

Me tahame ülaltoodut teha süstemaatiliselt. Slackboti seadistamiseks on mitu erinevat viisi. Ma käsitlen järgmist:

  • Käivitati perioodiliselt (ajakava järgi), et midagi öelda
  • / kaldkriipsu käsud

Teine eeldab, et töötab server, samas kui esimene ei tööta.

Ajastatud sõnumid

Oletame, et soovite perioodiliselt kuhugi sõnumit saata - võib-olla igal esmaspäeva hommikul. Minge tekstiredaktorisse, kus avasite end slackbot-tutorial.

Peaksite nägema faili scheduled.py. Heitke pilk: sendMessageon funktsioon, mis käivitab API kõne lõtvaks ja postitab sõnumi. Allosas näete peamist meetodit: mida käivitatakse skripti käivitamisel. Siin näete mõnda tähelepanuväärset:

  • SLACK_BOT_TOKENkust tõmmatakse os.environ['SLACK_BOT_TOKEN']- kuidas? export SLACK_BOT_TOKEN="xoxb-your-token"Selle muutuja määramiseks käivitage terminalis.
  • siin kasutatakse ajakava ja seal on lõpmatu tsükkel, mis kontrollib ajastaja sündmusi. Vaikimisi olen siin määranud sendMessagefunktsiooni kutsumise iga minut.

Selle proovimiseks minge tagasi terminali, kus olete slackbot-tutorialkataloogis, ja käivitage

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. Toimingud / vastused võivad käivitada mainimised või teatud fraasid. See nõuab serveri käivitamist ja sõnumite kuulamist kusagil.
  2. Teie robot võib olla jutukas ja aidata lõimedele kaasa. Tutvuge mõne NLP-ga, et alustada arusaadavat vestlust! Alustuseks võib olla Word2Vec + TensorFlow või Keras. DialogFlow on ka suurepärane.
  3. Linkige see mõne muu API-ga. Võib-olla soovite, et saaksite suhelda Google Sheetiga ja teha arvutusi. Mõne toimingu põhjal võiksite saata teistele kasutajatele sõnumi. Integreeri nupud. Võib-olla soovite käivitada sõnumid millelgi muul.