- 22, Nov 2024
- #1
Мы расскажем вам, как сделать простого чат-бота с нуля, используя бессерверные вычисления.
Он может реагировать на команды и вести простой разговор, а на его основе можно создать собственного бота для разработки или технической поддержки.
Для создания бота нам понадобятся аккаунты в Яндекс.
Облаке и Slack.
Шаг 1. Создайте приложение в Slack.
Войдите в Slack и перейдите в панель .нажать на кнопку Создать приложение , выбирать С нуля .
Введите название нашего приложения — ServerlessBotApp и выберите рабочую область, для пользователей которой будет работать наш бот.
Теперь нам нужно дать нашему боту разрешение писать в чат. Перейдите в раздел OAuth & Permissions и в подразделе Bot Token Scopes нажмите кнопку Добавьте область OAuth .
После того, как мы дали разрешение, перейдите в раздел «Токены OAuth для вашей рабочей области» и нажмите кнопку Установить в рабочую область , а потом Позволять .
Бот установлен для нашей рабочей области, и Slack создал для него токен OAuth пользователя бота, который нам понадобится позже.
Шаг 2: создайте сервисный аккаунт в Яндекс.
Облаке На стороне Slack мы создали приложение, которое может писать в чат и которое можно подключить извне с помощью токена.
Теперь вам нужно создать точку доступа на стороне облака.
Сначала давайте создадим сервисную учетную запись.
Для этого перейдите в Консоль Яндекс.
Облака .
Перейдите в рабочий каталог и выберите пункт меню Сервисные аккаунты .
Создайте новую учетную запись службы Slack-bot и назначьте ей роль.
редактор .
После создания сервисного аккаунта в разделе Обзор получаем Идентификатор; в дальнейшем он будет использоваться в настройках API-шлюза.
Шаг 3. Создайте шлюз API для подключения облака и Slack.
В облачной консоли перейдите на панель управления каталогом и выберите API-шлюз.
нажать на кнопку Создайте шлюз API и создайте шлюз под названием for-slack-bot.
После публикации API-шлюза в спецификации появится раздел серверов с доменом сервиса.
Этот домен будет точкой входа в приложение.
Спецификация содержит правила вызова функций; каждый раз, когда мы создаем функцию, мы добавляем в спецификацию новый раздел.
Шаг 4. Реализуйте функцию, реагирующую на команду.
Теперь мы можем реализовать функционал, который будет доступен из чата Slack. Для этого сначала зайдите в панель Slack и получите токен и секрет. В раздел OAuth&Permissions копируем Bot User OAuthToken, в дальнейшем будем использовать это значение для переменной SLACK_BOT_TOKEN в облаке.
В разделе «Основная информация» в подразделе «Учетные данные приложения» скопируйте секрет подписи и позже используйте его как значение переменной.
SLACK_SIGNING_SECRET.
После этого зайдите в облачную консоль.
На панели управления текущего каталога выберите сервис Cloud Functions. нажать на кнопку Создать функцию .
Установите имя для-Slack-bot-привет-от-бессерверного .
Выберите среду выполнения, например python3.7. При создании функции мы по умолчанию получаем файл index.py. Создадим новый файл require.txt, в котором перечислим необходимые библиотеки.
Меняем содержимое автоматически созданного файла index.py на содержимое файла из репозиторий .
Укажите точку входа index.handler. Увеличьте время ожидания до 5 секунд. Укажите идентификатор и переменные учетной записи службы.
SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET .
нажать на кнопку Создать версию .
Наша функция готова, теперь нам нужно опубликовать ее через API-шлюз.
Для этого скопируйте идентификатор созданной функции и перейдите в дашборд, а из него в раздел API Gateway. Редактирование ранее созданного шлюза f или-сланк-бот.
Скопируйте раздел /hello-from-serverless из файла в спецификацию.
Мы заменяем IDYOURFUNCTIONHELLO к идентификатору созданной функции, и IDВАШ АККАУНТ — к идентификатору сервисного аккаунта.
Не меняя раздел серверов, скопируйте из него URL-адрес шлюза.
Сохраняем изменения, наша функция опубликована.
Шаг 4. Создайте команду в Slack.
На стороне Slack функция должна вызываться командой из чата.Давайте создадим эту команду.
На панели Slack выберите созданное приложение ServerlessBotApp. В разделе «Команды слэша» нажмите кнопку «Создать новую команду».
В поле «Команда» введите /привет-от-сервера.
В поле URL-адрес запроса вставьте ранее скопированный URL-адрес шлюза API, добавив к нему /привет-от-сервера .
Заполните краткое описание.
Нажмите Сохранять .
Следуя появившимся инструкциям, переустановите приложение Slack. В Workspace теперь есть возможность вызывать команду /привет-от-сервера .
После проверки команды мы получим сообщение от бота.
Шаг 5: создайте функцию для ответа на сообщения пользователя
Теперь наш бот может отвечать на команды, но на сообщения в чате отвечать по-прежнему не может. Давайте создадим для этого функцию.Перейдите в облачную консоль и создайте функцию для-slack-bot-светской беседы с той же средой выполнения Python3.7. Создайте файл require.txt, аналогичный предыдущему.
Мы меняем содержимое файла index.py по умолчанию на код из репозиторий .
Выберите учетную запись службы Slack-bot, укажите точку входа index.handler, увеличьте таймаут до 5 секунд, не забудьте указать переменные среды SLACK_BOT_TOKEN И SLACK_SIGNING_SECRET, со значениями как в функции for-slack-bot-hello-from-serverless. Нажмите кнопку Создать версию.
Скопируйте идентификатор функции.
Для реализации функционала нам нужно будет сделать эту функцию общедоступной, поэтому в разделе Обзор перемещаем ползунок в поле Общественная функция .
Теперь нам нужно опубликовать функцию через шлюз API. Для этого снова возвращаемся в раздел API Gateway. Редактирование ранее созданного шлюза для Slack-бота .
Замените раздел / аналогичным, содержащимся в файле.
для-slack-bot.yml , не забудьте заменить IDYOURFUNCTIONSMALLTALK к ранее скопированному идентификатору функции и IDВАШ АККАУНТ к идентификатору учетной записи службы.
Шаг 6. Настройте подписку на сообщения в Slack.
После создания функции и ее публикации нам необходимо настроить подписку на сообщения на стороне Slack. Возвращаемся на панель Slack и переходим в раздел «Подписки на события».Переместите ползунок «Включить события» во включенное положение.
Указываем адрес API Gateway в поле Request URL и ждем его появления Проверено .
В разделе «Подписаться на события бота» на той же странице нажмите кнопку «Добавить событие пользователя бота» и выберите message.im. Сохраните изменения.
Переустановите приложение, следуя появившимся инструкциям.
Наш бот умеет реагировать на сообщения пользователей «:wave Knock:» и «Knock Knock», проверим его работу в чате.
Мы создали бота, который может обрабатывать сообщения чата и отвечать на команды пользователя.
Его функционал можно расширить, например, используя базу данных Яндекса для хранения полученных сторонних данных или используя объектное хранилище для хранения необходимых файлов.
Оставляем полезные ссылки на Serverless-каналы и сообщества по всему миру и в России, где можно найти еще больше полезных примеров использования функций:
- Бессерверные архитектуры для мобильных и веб-приложений
- Бессерверная экосистема Яндекса
- без сервера
- Бессерверная Москва
Облака, чтобы узнавать еще больше новостей и историй об IT и бизнесе.
Другие истории, которые активно читают наши подписчики:
- Перфокарты, лунная программа «Аполлон» и эпоха больших данных: рассказываем о важном из истории хранения данных
- Как мы сделали мобильное приложение для управления серверами в один клик
- Бессерверные вычисления: почему некоторые разработчики упускают суть?