Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for YDB
  • Начало работы
    • Все руководства
    • Развертывание веб-приложения
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Подключение к YDB из функции Yandex Cloud Functions на Python
    • Подключение к базе данных YDB из функции Yandex Cloud Functions на Node.js
    • Конвертация видео в GIF на Python
    • Разработка навыка Алисы и сайта с авторизацией
    • Миграция базы данных из Yandex Managed Service for MySQL® с помощью Yandex Data Transfer
    • Поставка данных из YDB в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных из YDB в Yandex Data Streams с помощью Yandex Data Transfer
    • Загрузка данных из Yandex Object Storage в YDB с помощью Yandex Data Transfer
    • Загрузка данных из YDB в Yandex Object Storage с помощью Yandex Data Transfer
    • Загрузка данных из YDB в Yandex Managed Service for ClickHouse® с помощью Yandex Data Transfer
    • Миграция данных из Yandex Managed Service for OpenSearch в YDB с помощью Yandex Data Transfer
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Поставка данных из Yandex Managed Service for PostgreSQL в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Передача событий Yandex Cloud Postbox в Yandex Data Streams и их анализ с помощью Yandex DataLens
    • Поставка данных из Yandex Managed Service for Apache Kafka® в Data Streams с помощью Yandex Data Transfer
    • Поставка данных из Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Сохранение потока данных Data Streams в Managed Service for ClickHouse®
    • Поставка данных из очереди Data Streams в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из очереди Data Streams в Managed Service for YDB с помощью Data Transfer
    • Захват изменений MySQL® и поставка в YDS
    • Захват изменений PostgreSQL и поставка в YDS
    • Интерактивная отладка функций Cloud Functions
    • Блокировка состояний Terraform с помощью Managed Service for YDB
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Сокращатель ссылок
    • Загрузка аудитных логов в MaxPatrol SIEM
  • Управление доступом
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Вопросы и ответы
  • Публичные материалы
  • Обучающие курсы

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте окружение
  • Создайте приложение и подключите его к Yandex Cloud
  • Зарегистрируйте Slack-приложение
  • Настройте связь между Slack и Yandex Cloud
  • Проверьте связь между Slack и Yandex Cloud
  • Получите Token и Secret для приложения
  • Создайте функции
  • Функция для обмена сообщениями
  • Функция для реагирования на команду
  • Отредактируйте API-шлюз
  • Добавьте команду в Slack
  • Проверьте работу Slack-бота
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Разработка Slack-бота

Как создать чат-бот для Slack с помощью YDB

Статья создана
Yandex Cloud
Обновлена 10 марта 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте окружение
  • Создайте приложение и подключите его к Yandex Cloud
    • Зарегистрируйте Slack-приложение
    • Настройте связь между Slack и Yandex Cloud
    • Проверьте связь между Slack и Yandex Cloud
  • Получите Token и Secret для приложения
  • Создайте функции
    • Функция для обмена сообщениями
    • Функция для реагирования на команду
  • Отредактируйте API-шлюз
  • Добавьте команду в Slack
  • Проверьте работу Slack-бота
  • Как удалить созданные ресурсы

В этом руководстве вы узнаете, как с помощью serverless-технологий создать бота для Slack, который будет выполнять команды в чате и отвечать на сообщения пользователей.

Смотреть видео на YouTube.

Чтобы создать бота:

  1. Подготовьте окружение.
  2. Создайте приложение и подключите его к Yandex Cloud.
  3. Получите Token и Secret для приложения.
  4. Создайте функции.
  5. Отредактируйте API-шлюз.
  6. Добавьте команды в Slack.
  7. Проверьте работу Slack-бота.

Перед началом работыПеред началом работы

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки чат-бота входят:

  • плата за использование API-шлюза (см. тарифы Yandex API Gateway);
  • плата за использование функций (см. тарифы Yandex Cloud Functions).

Подготовьте окружениеПодготовьте окружение

  1. Скачайте архив с файлами, необходимыми для создания бота.
  2. Если у вас еще нет каталога, создайте его.
  3. Создайте сервисный аккаунт с именем sa-slack и назначьте ему роль editor на ваш каталог.

Создайте приложение и подключите его к Yandex CloudСоздайте приложение и подключите его к Yandex Cloud

Зарегистрируйте Slack-приложениеЗарегистрируйте Slack-приложение

  1. Авторизуйтесь в Slack. Чтобы создать бота, у вас должны быть права на управление рабочим пространством.

  2. Создайте приложение:

    1. Нажмите кнопку Create an App.
    2. Выберите From scratch.
    3. В поле App Name введите имя приложения: ServerlessBotApp.
    4. Выберите доступное рабочее пространство и нажмите Create App.
  3. Выдайте разрешения приложению ServerlessBotApp:

    1. В меню управления приложением выберите пункт Features → OAuth & Permissions.
    2. В разделе Scopes → Bot Token Scopes нажмите кнопку Add an OAuth Scope и добавьте разрешения: chat:write, commands, im:history.
  4. Установите приложение: в меню управления приложением выберите пункт Settings → Install App и нажмите Install to Workspace → Allow.

Настройте связь между Slack и Yandex CloudНастройте связь между Slack и Yandex Cloud

  1. Создайте функцию с именем for-slack-bot-challenge. Убедитесь, что она приватная.

  2. Создайте версию функции:

    1. Укажите следующие параметры:

      • Среда выполнения — python312.
      • Точка входа — index.handler.
      • Таймаут — 5.
      • Сервисный аккаунт — созданный ранее сервисный аккаунт sa-slack.
    2. Создайте файл index.py и вставьте в него содержимое файла 0_for-slack-bot-challenge.py из архива.

  3. Создайте API-шлюз:

    1. Укажите имя for-slack-bot.

    2. В поле Спецификация добавьте в параметр paths конфигурацию метода POST:

      paths:
        /:
          get:
            x-yc-apigateway-integration:
              type: dummy
              content:
                '*': Hello, World!
              http_code: 200
              http_headers:
                Content-Type: text/plain
          post:
            x-yc-apigateway-integration:
              type: cloud_functions
              function_id: <идентификатор_функции>
              service_account_id: <идентификатор_сервисного_аккаунта>
              operationId: slack-challenge
      

      Где:

      • function_id — идентификатор функции for-slack-bot-challenge.
      • service_account_id — идентификатор сервисного аккаунта sa-slack.

Проверьте связь между Slack и Yandex CloudПроверьте связь между Slack и Yandex Cloud

  1. Скопируйте служебный домен API-шлюза for-slack-bot.
  2. Выберите приложение ServerlessBotApp.
  3. В меню управления приложением выберите пункт Features → Event Subscriptions.
  4. Включите опцию Enable Events.
  5. В поле Request URL вставьте адрес API-шлюза и дождитесь появления записи Verified.
  6. В разделе Subscribe to bot events нажмите кнопку Add Bot User Event и выберите событие message.im.
  7. Нажмите кнопку Save Changes.

Получите Token и Secret для приложенияПолучите Token и Secret для приложения

Выберите приложение ServerlessBotApp:

  1. В меню управления приложением выберите пункт Settings → Basic Information.
  2. Скопируйте значение поля Signing Secret из раздела App Credentials: оно будет использоваться для переменной окружения SLACK_SIGNING_SECRET.
  3. В меню управления приложением выберите пункт Features → OAuth & Permissions.
  4. В разделе OAuth Tokens for Your Workspace скопируйте значение поля Bot User OAuth Token: оно будет использоваться для переменной окружения SLACK_BOT_TOKEN.

Создайте функцииСоздайте функции

С помощью функций можно настраивать реакции бота на действия пользователей в чате. В руководстве будут созданы функции:

  • Для обмена сообщениями между ботом и пользователем.
  • Для получения реакции бота в ответ на простую команду.

Функция для обмена сообщениямиФункция для обмена сообщениями

  1. Создайте функцию с именем for-slack-bot-small-talk. Убедитесь, что она приватная.

  2. Создайте версию функции:

    1. Укажите следующие параметры:

      • Среда выполнения — python312.
      • Точка входа — index.handler.
      • Таймаут — 5.
      • Сервисный аккаунт — созданный ранее сервисный аккаунт sa-slack.
    2. Создайте файл requirements.txt и укажите в нем библиотеки:

      slack_sdk
      slack_bolt
      boto3
      
    3. Создайте файл index.py и вставьте в него содержимое файла 1_for-slack-bot-small-talk.py из архива.

    4. Добавьте переменные окружения:

      • SLACK_BOT_TOKEN.
      • SLACK_SIGNING_SECRET.

Функция для реагирования на командуФункция для реагирования на команду

  1. Создайте функцию с именем for-slack-bot-hello-from-serverless. Убедитесь, что она приватная.

  2. Создайте версию функции:

    1. Укажите следующие параметры:

      • Среда выполнения — python312.
      • Точка входа — index.handler.
      • Таймаут — 5.
      • Сервисный аккаунт — созданный ранее сервисный аккаунт sa-slack.
    2. Создайте файл requirements.txt и укажите в нем библиотеки:

      slack_sdk
      slack_bolt
      boto3
      
    3. Создайте файл index.py и вставьте в него содержимое файла 2_for-slack-bot-hello-from-serverless.py из архива.

    4. Добавьте переменные окружения:

      • SLACK_BOT_TOKEN.
      • SLACK_SIGNING_SECRET.

Отредактируйте API-шлюзОтредактируйте API-шлюз

Чтобы бот начал отвечать на сообщения пользователей, созданные функции необходимо связать с приложением. Для этого отредактируйте спецификацию API-шлюза for-slack-bot и добавьте в параметр paths конфигурации метода POST:

  /:
    post:
      x-yc-apigateway-integration:
        type: cloud_functions
        function_id: <идентификатор_функции_1>
        service_account_id: <идентификатор_сервисного_аккаунта>
        operationId: small-talk
  /hello-from-serverless:
    post:
      x-yc-apigateway-integration:
        type: cloud_functions
        function_id: <идентификатор_функции_2>
        service_account_id: <идентификатор_сервисного_аккаунта>
        operationId: hello-from-serverless

Где:

  • service_account_id — идентификатор сервисного аккаунта sa-slack.
  • <идентификатор_функции_1> — идентификатор функции for-slack-bot-small-talk.
  • <идентификатор_функции_2> — идентификатор функции for-slack-bot-hello-from-serverless.

Добавьте команду в SlackДобавьте команду в Slack

С помощью команд можно настраивать действия бота в чате. Команды начинаются с символа /, и их список всегда виден пользователю.

Примечание

Команда не будет работать, если для нее не настроен соответствующий метод в API-шлюзе.

  1. Выберите приложение ServerlessBotApp.

  2. В меню управления приложением выберите пункт Features → Slash Commands и нажмите Create New Command.

  3. Добавьте команду для функции for-slack-bot-hello-from-serverless:

    • В поле Command введите /hello-from-serverless.
    • В поле Request URL вставьте адрес url из спецификации API-шлюза for-slack-bot, дополнив его адресом команды /hello-from-serverless.
    • В поле Short descriptions введите любое краткое описание команды.
    • Нажмите Save.
  4. Переустановите приложение: в меню управления приложением выберите пункт Settings → Install App и нажмите Reinstall to Workspace → Allow.

  5. Включите отправку сообщений: в меню управления приложением выберите пункт Features → App Home и в разделе Show Tabs включите опцию Allow users to send Slash commands and messages from the messages tab.

Проверьте работу Slack-ботаПроверьте работу Slack-бота

Откройте клиент Slack и в разделе Apps выберите чат с ботом ServerlessBotApp.

  1. Чтобы проверить функцию for-slack-bot-small-talk:
    • Отправьте в чат сообщение :wave:. Бот должен ответить: Hi there, @<username>!.
    • Отправьте в чат сообщение knock knock. Бот должен ответить: Who's there?.
  2. Чтобы проверить функцию for-slack-bot-hello-from-serverless, отправьте в чат команду /hello-from-serverless. Бот должен ответить: Thanks!.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  • удалите API-шлюз;
  • удалите функции.

Была ли статья полезна?

Предыдущая
Развертывание веб-приложения
Следующая
Разработка Telegram-бота
Проект Яндекса
© 2025 ООО «Яндекс.Облако»