Как да изградите основен Slackbot: Ръководство за начинаещи

Актуализация: кодът и урокът са актуализирани на 28 юни, за да отразят промените в Slack API .

Slackbots: Защо да ги използвам?

Преди да влезем в учебната част на тази публикация, нека да разгледаме защо това може да бъде достоен проект и инструмент.

Slack е все по-популярен инструмент за общуване в целия екип. Отглежда се за включване на приставки за други широко използвани инструменти за управление на проекти, като JIRA, Google Drive и подобни. Всеки отпуснат потребител знае - колкото повече можете да направите от разговора, толкова по-добре.

Често срещаните приложения за Slackbot варират от обикновен известител за това, кога дадена задача е завършена (като тестова компилация или когато обядът ви е готов) до интерактивни, базирани на бутони ботове, които изпълняват команди по желание на потребителя. Можете да изградите механизми за анкетиране, разговорни ботове и други.

Настройване на среда за програмиране на python

Ако сте потребител на Windows и не сте използвали python преди, ще трябва да го инсталирате. Потребители на Linux / Mac: Unix идва с python!

След като бъде инсталиран, задействайте терминала си и напишете pythonили python3(ако имате няколко инсталации), за да се уверите, че работи и е там.

Също така проверете дали имате добър текстов редактор за код: sublime и atom са чудесен избор.

По избор: Може да е полезно да работите и във виртуална среда - това е добра практика, когато имате много зависимости.

pip install virtualenv virtualenv tutorial source tutorial/bin/activate

Също така трябва да разклоните репо на GitHub и клонирането на урока към вашата локална машина, тъй като ние ще използваме този код като рамка за този урок.

За да направите това, отидете до репото и кликнете Forkгоре вдясно. Раздвоеният репо трябва да бъде / slackbot-tutorial . Натиснете зеления Clone or downloadбутон вдясно под лентата със статистически данни и копирайте URL адреса. Върнете се в терминала, за да клонирате хранилището:

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

Има два начина да създадете своя Slackbot: самостоятелни ботове или Slack приложения. Приложенията позволяват по-широк набор от функционалности напред и е препоръчителният маршрут на Slack за създаване на потребител на бот.

Отидете на //api.slack.com/apps и натиснете Create New Appгоре вдясно. Дайте му име и изберете работно пространство, където можете да създадете канал, в който да тествате вашия бот. Винаги можете да преконфигурирате своя бот за друго работно пространство по-късно или дори да го публикувате в директорията на приложения Slack.

Препоръчвам да направите #test канал в работно пространство, което създавате само за целите на разработката, или такъв, който има сравнително малко потребители, които не биха имали нищо против да тествате нещо там.

Първото нещо, което ще искате да направите, е да вземете бот токена. Когато стигнете до горната страница, щракнете върху Ботове. Добавете няколко обхвата; те определят какви разрешения ще има потребителят на бота на вашето приложение. За да започнете, чат: пишетеиim: пишивероятно са достатъчни.

Сега, за да получите вашите жетони, ще искате да отидете OAuth & Permissionsв лявата странична лента.

Тук ще можете да Install the App to the Workspaceгенерирате необходимите символи. Като правило, бот жетоните започват сxoxb-.

Също така ще искате s igning secret , която се намира в Основна информация> Удостоверения за приложения.

Действайки като ваш бот

Сега имате идентификационните данни, необходими за извършване на API повиквания и да действате като ваш бот. За да тествате това, задействайте терминал и го стартирайте (с правилния токен и име на канал):

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

Ако отидете на този канал в работното си пространство, сега трябва да видите съобщение от вашия бот! Току-що направихте HTTP POST заявка - помолихте сървър да публикува някъде съобщение.

Програмиране на бота

Искаме да направим горното програмно. Има няколко различни начина, по които можете да настроите Slackbot. Ще разгледам следното:

  • Задейства се периодично (по график), за да каже нещо
  • / наклонени команди

Вторият изисква сървър, работещ, докато първият не.

Планирани съобщения

Да предположим, че искате периодично да изпращате съобщение някъде - може би всеки понеделник сутрин. Отидете до текстовия редактор, където сте отворили slackbot-tutorial.

Трябва да видите файл scheduled.py. Погледнете: sendMessageе функция, която задейства извикването на API за отпускане и публикува съобщение. В долната част ще видите основния метод: какво се изпълнява, когато стартирате скрипта. Тук ще видите няколко неща, които трябва да отбележите:

  • SLACK_BOT_TOKENе изтеглен от os.environ['SLACK_BOT_TOKEN']- как? Изпълнете export SLACK_BOT_TOKEN="xoxb-your-token"във вашия терминал, за да зададете тази променлива.
  • тук се използва планировчик и има безкраен цикъл, който проверява за събития в планировчика. По подразбиране тук съм насрочил sendMessageфункцията да се извиква всяка минута.

За да тествате това, върнете се в терминала, където сте в slackbot-tutorialдиректорията, и стартирайте

export SLACK_BOT_TOKEN="xoxb-your-token" python scheduled.py

Трябва да видите печата на дневниците. Уверете се, че сте променили channel=#testкода на името на тестовия си канал (ако е различно) и сте добавили бота си (в канала на слак, напишете /invite @botname. Оставете го да работи за няколко минути и гледайте как съобщенията се показват в Slack!

Това, разбира се, е супер основно изпълнение на насрочен подател на съобщение - всъщност можете да направите това само със slackbot /remind #test “Hello, Slack!” every Monday at 9am.

Най- истинската сила тук е, че можете да заместите в някоя функция за sendMessage, деблокирането на силата на взаимодействие с външни услуги чрез API, правиш математика и т.н., и след това изграждане на съобщение да публикувате.

Косови команди

Това изисква малко повече настройка - върнете се в настройките на приложението> Косови команди. Създайте нова команда наклонена черта: например /test,. За URL адреса на заявката ще трябва или да разположите този уеб сървър (използвам Heroku), или да стартирате локален ngrokекземпляр, за да го тествате. Последният ще го стартира локално и е най-подходящ за тестване. Можете да brew install ngrokго получите от тук.

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.