Создайте свою собственную команду слэша в Slack
Slack — это удобный и популярный инструмент, который вы можете улучшить с помощью собственных команд, адаптированных к вашей организации.
Slack — это инструмент, который позволяет командам общаться и сотрудничать. Одной из его ключевых особенностей является использование косой черты. Эти команды запускают определенные действия или интеграции внутри платформы.
Хотя Slack предоставляет вам несколько встроенных слэш-команд, вы можете создавать собственные команды, используя API Slack. Затем вы можете настроить пользовательскую команду для выполнения определенной задачи, когда ее запускает пользователь.
Зачем создавать собственную команду слэша в Slack?
Встроенные слэш-команды Slack могут не соответствовать конкретным потребностям вашей команды или организации. Создавая собственные команды с косой чертой, вы можете создать более персонализированный опыт для своей команды. Это, в свою очередь, повышает вовлеченность команды.
Настройка приложения Slack
Для этого вам необходимо освоить основы использования Slack. Войдите в свою учетную запись Slack в браузере и создайте новое рабочее пространство. Вы будете использовать это рабочее пространство для тестирования своих приложений, прежде чем использовать их в рабочем пространстве своей команды.
Откройте другую вкладку и перейдите на веб-сайт Slack API.
Нажмите кнопку Создать приложение. На следующей открывшейся странице выберите вариант создания приложения С нуля.
Назовите приложение и выберите рабочую область, в которой оно будет работать.
Нажмите кнопку Создать приложение. Это перенаправит вас на страницу, содержащую основную информацию о вашем приложении.
В разделе функций перейдите к функции OAuth и разрешения, затем прокрутите вниз до пункта Области применения токенов бота. Добавьте область действия chat:write для своего приложения. Эта область позволит вашему приложению отправлять сообщения в рабочую область.
Прокрутите страницу до раздела Токены OAuth для вашей рабочей области и нажмите кнопку Установить в рабочую область.
На следующей появившейся странице нажмите кнопку Разрешить. Приложение будет установлено в вашем рабочем пространстве.
Создание пользовательской команды слэша с использованием Slack API
После настройки приложения Slack вам необходимо создать специальную команду для задачи, которую вы хотите выполнить. Например, команда слэша, которая возвращает пользователю шутку. Перейдите к функции Slash Commands. Нажмите кнопку Создать новую команду.
Заполните Команда, URL-адрес запроса и Краткое описание команды, которую вы хотите создать. URL-адрес запроса — это конечная точка, на которую Slack отправляет запрос POST, когда пользователь запускает команду. Используйте URL-адрес локального хоста в качестве заполнителя; вы измените этот URL позже.
Нажмите Сохранить. Когда вы сохраняете, Slack автоматически добавляет область команд для вашего приложения. Эта область позволяет вашему приложению добавлять ярлыки и команды с косой чертой, которые могут использовать люди в вашем рабочем пространстве. Изменение областей потребует переустановки приложения. Нажмите кнопку переустановить приложение.
На следующей странице нажмите «Разрешить переустановку приложения на рабочем месте».
Настройка поведения команды Slash
Запустите любую среду разработки Python. Создайте новую виртуальную среду. Создайте новый файл Python и новый файл .env. На терминале выполните следующую команду, чтобы установить необходимые библиотеки.
pip install python-dotenv requests Flask slack-bolt
Библиотека python-dotenv позволит вам загружать переменные среды в файл .env. Библиотека requests позволяет отправлять HTTP-запросы, а Flask обрабатывает входящие HTTP-запросы и возвращает ответы. Slack-bolt обрабатывает входящие запросы Slack.
Откройте файл .env и создайте две переменные среды. Назовите их BOT_TOKEN и SIGNING_SECRET соответственно. Перейдите на веб-сайт Slack API. В разделе Основная информация вашего приложения скопируйте секрет подписи и используйте его для инициализации переменной BOT_TOKEN. Перейдите к функции OAuth и разрешения и скопируйте токен OAuth пользователя бота. Используйте его для инициализации переменной SIGNING_SECRET.
Токен бота — это уникальный идентификатор, который аутентифицирует ваше приложение с помощью API Slack при выполнении вызовов API. Секрет подписи проверяет, что входящие запросы к вашему приложению поступают из Slack.
Полный исходный код доступен в репозитории GitHub.
Импортируйте необходимые библиотеки и модули.
import os
from pathlib import Path
from dotenv import load_dotenv
import requests
from flask import Flask, request, jsonify
from slack_bolt import App
from slack_bolt.adapter.flask import SlackRequestHandler
Создайте новый экземпляр приложения Flask.
app = Flask(__name__)
Загрузите переменные среды из файла .env с помощью функции load_dotenv().
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
Создайте новый экземпляр приложения Slack, используя класс App из библиотеки slack_bolt.
slack_app = App(
token=os.environ['BOT_TOKEN'],
signing_secret=os.environ['SIGNING_SECRET']
)
Создайте функцию-обработчик маршрута, которая обрабатывает входящие запросы к конечной точке /slack/command. Когда конечная точка получает запрос POST, она анализирует данные тела запроса. Затем он проверяет, является ли команда /joke. Если да, он вызывает функцию get_joke() и возвращает Slack ответ JSON с результатом выполнения команды.
@app.route("/slack/command", methods=["POST"])
def command():
# Parse request body data
data = request.form
# Call the appropriate function based on the slash command
if data["command"] == "/joke":
message = get_joke()
else:
message = f"Invalid command: {data['command']}"
# Return response to Slack
return jsonify({"text": message})
Создайте функцию, которая отправляет запрос GET в API icanhazdadjoke для получения случайной шутки в формате JSON. Затем он возвращает шутку в виде строки.
def get_joke():
url = "https://icanhazdadjoke.com/"
headers = {"Accept": "application/json"}
response = requests.get(url, headers=headers, timeout=5)
joke = response.json()["joke"]
return joke
Создайте новый экземпляр объекта SlackRequestHandler, который будет обрабатывать входящие запросы от Slack.
handler = SlackRequestHandler(slack_app)
Проверьте, запускается ли сценарий напрямую, и если да, запустите приложение Flask на порту 5000.
if __name__ == "__main__":
# Start the Flask app on port 5000
app.run(port=5000, debug=True)
Запустите программу, чтобы запустить сервер, работающий на локальном хосте.
Чтобы программа могла взаимодействовать со Slack, вам нужен URL-адрес, к которому она может получить доступ через Интернет. Загрузите и запустите ngrok. Программное обеспечение ngrok позволяет вам создать безопасный общедоступный URL-адрес, который туннелирует трафик на веб-сервер, работающий на вашем компьютере.
Выполните следующую команду, чтобы получить общедоступный URL-адрес:
ngrok http 5000
На изображении ниже показан общедоступный URL-адрес ngrok, выделенный белым.
Скопируйте URL-адрес и перейдите на веб-сайт Slack API. Нажмите на функцию Команды с косой чертой. Отредактируйте команду /joke и замените заполнитель URL-адреса запроса своим общедоступным URL-адресом. Добавьте /slack/events в конце URL-адреса, чтобы указать на вашу конечную точку.
Перейдите в свою рабочую область, затем введите и отправьте команду /joke. В ответ вы должны увидеть шутку:
Ознакомьтесь с другими функциями Slack
Slack предлагает множество функций, помимо команд Slash. Ознакомление с этими функциями позволит вам понять, как они работают.
Затем вы можете найти способы настроить их в соответствии с требованиями вашего рабочего пространства. Это повысит продуктивность вашей команды.