Чат-боты (боты) — это практичный способ взаимодействия с сервисами чата, такими как Slack. Если вы никогда раньше не создавали чат-бота, эта статья содержит простое руководство по началу работы с тем, как создать своего первого чат-бота с помощью Python и Slack API.
Мы создаем вашу среду разработки, получаем токен чат-бота для Slack API и разрабатываем простого чат-бота на Python.
Инструменты, которые нам нужны
Для нашего чат-бота, который мы называем StarterBot, требуется Python и Slack API. Чтобы запустить наш код Python, нам нужно:
Питон 2 или Питон 3
pip и virtualenv для обработки зависимостей приложений Python
Бесплатная учетная запись Slack с доступом к API или вы можете зарегистрироваться в команде Slack Developer Hangout.
Официальная кодовая база клиента Python Slack, созданная командой Slack.
Тестовый токен Slack API
Документация Slack API полезна при создании этого руководства.
Весь код в этом руководстве находится в общедоступном репозитории slack-starterbot и открыт под лицензией MIT.
Создайте нашу среду
Теперь мы знаем, какие инструменты нужны нашему проекту, поэтому давайте настроим нашу среду разработки. Сначала перейдите в терминал (или командную строку в Windows) и перейдите в каталог, в котором вы хотите сохранить проект. В этом каталоге создайте новый virtualenv, чтобы изолировать зависимости нашего приложения от других проектов Python.
Активируйте виртуальную среду:
Теперь ваша подсказка должна выглядеть как на скриншоте:
Командная строка для виртуального окружения активированного starterbot. Эта официальная вспомогательная библиотека API клиента Slack создана Slack для отправки и получения сообщений через каналы Slack. Установите библиотеку slackclient с помощью этой команды pip:
Когда команда pip завершится, вы должны увидеть вывод, подобный этому, и вернуться к приглашению.
Результат установки slackclient с pip в уже активированном virtualenv Нам также нужно получить токен доступа для нашего проекта Slack, чтобы наш чат-бот мог использовать его для подключения к Slack API.
Slack API обмена сообщениями в реальном времени (RTM)
Slack позволяет программам получать доступ к своим каналам обмена сообщениями через веб-API. Перейдите на эту страницу веб-API Slack, чтобы зарегистрироваться для создания собственного проекта Slack. Вы также можете войти в существующую учетную запись, для которой у вас есть права администратора.
После входа в систему с помощью кнопки входа в правом верхнем углу страницы веб-API вы попадете на страницу пользователя чат-бота.
Настройте страницу пользователя чат-бота Назовите своего чат-бота «starterbot» и нажмите кнопку «Добавить интеграцию с ботом».
Добавьте интеграцию с ботом и назовите его «starterbot». Страница перезагрузится, и вы увидите вновь сгенерированный токен доступа. Вы также можете изменить логотип на свой собственный дизайн. Например, этот флаг «Full Stack Python», который я дал.
Скопируйте и вставьте токен доступа для вашего нового чат-бота Slack и нажмите кнопку «Сохранить интеграцию» внизу страницы. Теперь ваш чат-бот готов к подключению к Slack API.
Распространенной практикой среди разработчиков Python является вывод секретного токена в качестве переменной среды. Выходное имя токена Slack — SLACK_BOT_TOKEN:
Что ж, теперь нам разрешено использовать этот Slack API в качестве чат-бота.
Нам нужна дополнительная информация для создания нашего чат-бота: идентификатор нашего чат-бота. Далее мы напишем короткий скрипт для получения этого идентификатора из Slack API.
Получите идентификатор нашего чат-бота
Пришло время, наконец, написать код Python! Давайте разогреемся, написав короткий скрипт Python, чтобы получить идентификатор StarterBot. Этот идентификатор зависит от проекта Slack.
Нам нужен этот идентификатор, который используется для аутентификации нашего приложения при анализе сообщений, отправленных StarterBot из Slack RTM. Наш скрипт также проверит правильность установки нашей переменной среды SLACK_BOT_TOKEN.
Создайте новый файл с именем printbotid.py и заполните следующий код:
Наш код импортирует SlackClient и создает его экземпляр с установленной нами переменной среды SLACK_BOT_TOKEN. Когда скрипт выполняется с помощью команды python, мы перечисляем всех пользователей Slack, обращаясь к Slack API, и получаем идентификатор, соответствующий имени «satrterbot».
Нам нужно запустить этот скрипт только один раз, чтобы получить идентификатор чат-бота.
Скрипт печатает простую строку вывода, когда он запускается, давая нам идентификатор чат-бота.
Используйте скрипт Python в своем проекте Slack для печати идентификатора чат-бота Slack. Скопируйте уникальный идентификатор, напечатанный этим скриптом. И выведите идентификатор как переменную среды BOT_ID.
Этот скрипт нужно запустить только один раз, чтобы получить идентификатор чат-бота. Теперь мы можем использовать этот идентификатор в нашем приложении Python, где запущен StarterBot.
Кодирование нашего StarterBot
Теперь у нас есть все необходимое для написания кода StarterBot. Создайте новый файл с именем starterbot.py, содержащий следующий код.
Импорты для os и SlackClient кажутся нам знакомыми, потому что мы уже использовали их в theprintbotid.py.
С нашими импортированными зависимостями мы можем использовать их для получения значений переменных среды и создания экземпляра клиента Slack.
Этот код создает экземпляр клиента SlackClient с переменной среды SLACK_BOT_TOKEN, которую мы выводим.
Клиент Slack подключается к Slack RTM API WebSocket, а затем зацикливается при анализе сообщений от firehose. Функция с именем handle_command решает, что делать, если StarterBot получает какое-либо сообщение.
Затем добавьте две функции для анализа вывода Slack и обработки команды.
Функция parse_slack_output принимает сообщения от Slack и определяет, отправлены ли они нашему StarterBot. Сообщение начинается с прямой команды на наш идентификатор чат-бота, который затем обрабатывается нашим кодом. В настоящее время просто отправляет сообщение через конвейер Slack, в котором пользователю предлагается написать еще немного кода Python!
Вот как выглядит вся программа в целом (вы также можете посмотреть файл на GitHub):
Теперь, когда у нас есть наш код, мы можем запустить наш код StarterBot с помощью python starterbot.py.
Создайте новый канал в Slack, когда StarterBot запущен и подключен к выходному каналу API, и пригласите StarterBot или пригласите StarterBot в существующий канал.
Создайте новый канал в интерфейсе Slack и пригласите StarterBot теперь отдавать команды StarterBot в вашем канале.
Отправляйте команды StarterBot в свой канал Slack. Если у вас возникли проблемы с получением ответов от чат-бота, вам может потребоваться внести изменения. Как написано в этом руководстве выше, одна из строк AT_BOT = ":" требует двоеточия после "@starter" (имя, которое вы даете своему собственному чат-боту). Удалите : с конца строки AT_BOT. Кажется, что Slack требует двоеточия после @ имени человека, но это кажется немного неуместным.
конец
Что ж, теперь у вас есть простой чат-бот, и вы можете добавлять любые функции, которые хотите создать, во многих местах кода.
Мы смогли многого добиться, используя Slack RTM API и Python. Посмотрите, что еще вы можете узнать из этих статей:
Подключите постоянную реляционную базу данных или серверную часть NoSQL, такую как PostgreSQL, MySQL или SQLite, для хранения и извлечения пользовательских данных.
Добавьте еще один канал для взаимодействия с чат-ботом, например текстовые сообщения или телефонные звонки.
Интеграция с другими веб-API, такими как GitHub, Twilio или api.ai.
Оригинал: fullstackpython.com
Перевод: http://linux.cn
Переводчик: jiajia9linuxer
Источник: Разработка Python.
End