Пишем бота для Slack на Python |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-08-04 17:20 Небольшой туториал, как сделать простого слэк-бота на Python, развернуть его на Heroku, подключить Travis CI за двадцать минут и начать делать что-то полезное. Heroku + Python Web App Установка хероку прекрасно описана тут нам потребуется всего три файла- requirements.txt - Procfile - runtime.txt В первом перечисляем все зависимости примерно так можно их сразу не писать, умный PyCharm сам подскажет, что мы что-то пропустили. Httplib2 понадобится нам чтобы посылать запросы для прохождения авторизации, Slacker — чтобы удобно работать со Slack API, а Flask — для приема запросов, это самый простой и безболезненный веб-фреймворк, требующий нулевой настройки. В runtime.txt указываем версию пайтона, которая нам нравится. В Procfile тоже ровно одна строка
Теперь мы готовы писать свое первое приложение, создаем app.py с таким содержимым
Пушим все на гитхаб, заходим на хероку и создаем новое приложение из публичного репозитория. Хероку самостоятельно выкачает коды, поставит зависимости из requirements.txt и запустит приложение согласно Procfile. Slack Все, с этого момента у нас есть бекенд по адресуhttps://YOUR_APP_NAME.herokuapp.com/webhookи можно создавать свое слэк приложение, которое будет *делать-что-то-полезное*. Осталось его валидировать для events API (то есть, самого полезного АПИ — АПИ оповещения нас о любых событиях). Слэк сам просто на наш ендпоинт особый challenge-request из которого нужно достать код и положить его в респонс. Теперь уже в настройках слэк-приложения в разделе Event Subscriptions выбираем нужные нам события и все. События будут падать на тот же адрес. Как только сделаете все, что хотите с входящими данными, нужно поддержать авторизацию других пользователей. Для этого нужен будет еще один эндпоинт, например /auth, на который слэк отправит запрос, как только новый пользователь захочет поставить себе ваше приложение. Получив такой запрос, нужно вытащить из него код и выслать POST-ом на slack.com/api/oauth.access вместе с кредами приложения, а на сам запрос ответить любым успешным ответом, или же редиректом на страничку, которую хотите показать пользователю после авторизации. Travis CI Бот готов. Осталось убедиться, что он работает. Приложение всегда можно запустить локально и поспамить запросами через curl, но толку от этого мало, поэтому сразу пишем юнит тесты и просим Тревиса следить за репозиторием. Проект в Тревисе создается почти так же интуитивно как в хероку, нужен только адрес репа, все остальное тревис сделает сам если создать еще один файл в корне проекта .travis.yml В секции script мы сообщаем тревису, что делать, после того как скачана последняя версия исходников. Эта команда (которую стоит почаще запускать локально) сама найдет юнит-тесты в нашем проекте и прогонит их.С этого момента Тревис и Хероку (если включено в настройках) следят за репозиторием и скачивают ваше приложение, разворачивают его и запускают тесты, присылают результаты их выполнения на почту. И вы почти готовы к продакшену, как только все заработает, нужно будет только отключить автоустановку сорцов в хероку, и перенастроить Тревис, чтобы он сам проводил деплой только тогда, когда тесты прошли успешно. Профит! Сылки на исходники лежат тут, а живой Тревис здесь. Сам бот доступен только коллегам родной компании, но я не исключаю выпуск его в паблик, если будет интерес. Удачи! Источник: habrahabr.ru Комментарии: |
|