Як побудувати базовий слакбот: керівництво для початківців

Оновлення: код та підручник оновлено 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 repo та клонувати його на локальній машині, оскільки ми будемо використовувати цей код як основу для цього підручника.

Для цього перейдіть до репо та натисніть 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)

Слабкі програми

Існує два способи створити свій Slackbot: автономні боти або програми Slack. Програми надають широкий спектр функціональних можливостей і є рекомендованим маршрутом для створення користувача-бота.

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

Я рекомендую створити #test канал у робочій області, яку ви створюєте, лише для цілей розробки, або такий, у якому відносно мало користувачів, які не заперечували б проти тестування чогось там.

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

Тепер, щоб насправді отримати свої токени, ви захочете перейти OAuth & Permissionsна ліву бічну панель.

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

Вам також знадобиться секретний секрет , який знаходиться в розділі Основна інформація> Повноваження програми.

Діючи як ваш бот

Тепер у вас є облікові дані, необхідні для здійснення викликів 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-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 - інтерфейси, робити математику, і т.д. , а потім будує повідомлення до стовпа.

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

Для цього потрібно трохи більше налаштувати - поверніться до налаштувань програми> Команди Slash. Створити нову команду слеш, наприклад, /test. Для URL-адреси запиту вам потрібно буде або розгорнути цей веб-сервер (я використовую Heroku), або запустити локальний ngrokекземпляр, щоб протестувати його. Останній буде запускати його локально, і це найкраще для тестування. Ви можете brew install ngrokабо отримати його звідси.

У репозиторії початкового коду шукайте, slashCommand.pyщоб почати розуміти цей метод. Щоб запустити сервер, запустіть python server.py. URL-адресу запиту для введення в Slack буде вказано вашим ngrokекземпляром та @app.routeвашим кодом - це буде щось на зразок //a1234b5cde6f.ngrok.io/ slack / test (жирний шрифт надходить із маршруту, визначеного в коді). Ви повинні мати можливість протестувати команди косої риси у робочій області Slack. Спробуйте з навчального коду /test.

Рухатися вперед

Тепер у вас дуже простий Slackbot, який або працює за командою, або запускається раз у раз. Будьте креативні з тим, як ви ним користуєтесь! Подумайте, з чим ще можна пов’язати цей скелет, щоб зробити його більш корисним.

Інші способи реагування вашого бота

  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.