Kaip sukurti pagrindinį „slackbot“: vadovas pradedantiesiems

Atnaujinimas: kodas ir mokymo programa atnaujinti birželio 28 d., Kad atspindėtų „Slack“ API pakeitimus .

„Slackbots“: kam juos naudoti?

Prieš pradėdami mokomąją šio įrašo dalį, pažvelkime, kodėl tai gali būti vertas projektas ir įrankis.

„Slack“ yra vis populiaresnis įrankis bendrauti visoje komandoje. Į ją įtraukta kitų plačiai naudojamų projektų valdymo įrankių, tokių kaip JIRA, „Google Drive“ ir panašių, papildinių. Bet kuris atsainus vartotojas žino - kuo daugiau galite padaryti iš pokalbio, tuo geriau.

„Slackbot“ įprastas naudojimas apima paprastą pranešėją, kai užduotis yra baigta (pvz., Bandomoji versija arba kai jūsų pietūs yra paruošti), iki interaktyvių mygtukais pagrįstų robotų, vykdančių komandas vartotojo valia. Galite sukurti apklausos mechanizmus, pokalbių robotus ir dar daugiau.

Python programavimo aplinkos nustatymas

Jei esate „Windows“ vartotojas ir anksčiau nenaudojote „python“, turėsite jį įdiegti. „Linux“ / „Mac“ vartotojai: „Unix“ yra su „python“!

Įdiegę, suaktyvinkite terminalą ir įveskite pythonarba python3(jei turite kelis įrenginius), kad įsitikintumėte, jog jis veikia ir yra.

Taip pat patikrinkite, ar turite gerą kodo teksto redaktorių: didingas pasirinkimas ir atomas yra puikus pasirinkimas.

Pasirenkama: taip pat gali būti naudinga dirbti virtualioje aplinkoje - tai gera praktika, kai turite daug priklausomybių.

pip install virtualenv virtualenv tutorial source tutorial/bin/activate

Taip pat turėtumėte šakoti mokymo programą „GitHub“ ir klonuoti prie vietinio kompiuterio, nes mes naudosime šį kodą kaip šios mokymo programos pagrindą.

Norėdami tai padaryti, eikite į repo ir spustelėkite Forkviršuje dešinėje. Šakinis atpirkimas turėtų būti / slackbot-tutorial . Paspauskite žalią Clone or downloadmygtuką dešinėje po statistikos juosta ir nukopijuokite URL. Grįžkite į terminalą, kad klonuotumėte saugyklą:

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“

Kuriant „slackbot“ yra du būdai: atskiri robotai arba „Slack“ programos. Programos ateityje leidžia naudotis įvairesnėmis funkcijomis ir yra „Slack“ rekomenduojamas būdas sukurti roboto vartotoją.

Eikite į //api.slack.com/apps ir paspauskite Create New Appviršuje dešinėje. Suteikite jam pavadinimą ir pasirinkite darbo sritį, kurioje galėsite sukurti kanalą, kuriame išbandysite savo robotą. Vėliau visada galėsite perkonfigūruoti savo robotą kitai darbo sričiai arba netgi paskelbti „Slack App Directory“.

Rekomenduoju sukurti # testo kanalą darbo vietoje, kurią sukūrėte tik kūrimo tikslais, arba tokią, kurioje yra palyginti nedaug vartotojų, kurie neprieštarautų, kad jūs ką nors išbandytumėte ten.

Pirmas dalykas, kurį norėsite padaryti, yra gauti roboto prieigos raktą. Kai pateksite į anksčiau pateiktą puslapį, spustelėkite „Bots“. Pridėkite keletą taikymo srities; tai nustato, kokius leidimus turės jūsų programos roboto vartotojas. Norėdami pradėti, kalbėkite: rašykiteirAš: rašautikriausiai pakanka.

Dabar, norėdami iš tikrųjų gauti savo žetonus, norėsite pereiti į OAuth & Permissionskairę šoninę juostą.

Čia galėsite sukurti Install the App to the Workspaceir sugeneruoti reikiamus žetonus. Kaip taisyklė, botų žetonai prasidedaxoxb-.

Taip pat norėsite užsidegančios paslapties , esančios skiltyje Pagrindinė informacija> Programos prisijungimo duomenys.

Veikdamas kaip jūsų botas

Dabar jūs turite kredencialus, reikalingus API skambučiams atlikti ir veikti kaip jūsų robotas. Norėdami tai išbandyti, suaktyvinkite terminalą ir paleiskite jį (nurodydami teisingą prieigos raktą ir kanalo pavadinimą):

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

Jei eisite į tą kanalą savo darbo vietoje, dabar turėtumėte pamatyti pranešimą iš savo roboto! Jūs ką tik pateikėte HTTP POST užklausą - paprašėte serverio kažkur paskelbti pranešimą.

Programavimas Bot

Mes norime tai padaryti aukščiau. Yra keli skirtingi būdai, kaip nustatyti „slackbot“. Aš apžvelgsiu šiuos dalykus:

  • Periodiškai (pagal grafiką) suaktyvėjo, norėdamas ką nors pasakyti
  • / pasvirojo brūkšnio komandos

Antrajam reikia serverio, o pirmajam - ne.

Suplanuoti pranešimai

Tarkime, norite periodiškai siųsti žinutę kur nors - galbūt kiekvieną pirmadienio rytą. Eikite į teksto rengyklę, kurioje atsidarėte 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. Veiksmus / atsakymus gali sukelti paminėjimai ar tam tikros frazės. Tam reikia paleisti serverį ir kažkur klausytis pranešimų.
  2. „Bot“ gali būti pokalbis ir gali prisidėti prie gijų kūrimo. Norėdami pradėti suprantamą pokalbį, patikrinkite keletą NLP! Pradėti gali būti „Word2Vec“ + „TensorFlow“ arba „Keras“. „DialogFlow“ taip pat puikus.
  3. Susiekite jį su kai kuriomis kitomis API. Galbūt norite bendrauti su „Google“ skaičiuokle ir atlikti keletą skaičiavimų. Atsižvelgdami į kai kuriuos veiksmus, galbūt norėsite nusiųsti kitiems vartotojams pranešimą. Integruoti mygtukus. Galbūt norite suaktyvinti pranešimus remdamiesi kažkuo kitu.