Кейс: Обработка и принятие группы заявок в Mini-App с базой данных в NocoDB
В данной статье мы разбираем и разрабатываем удобный интерфейс для обработки заявок от пользователей с прямой интеграцией PuzzleBot - NocoDB.
Поиграться можно тут - https://t.me/infoazizbot?start=applic
Если вы не предпочитаете NocoDB, то их можно спокойно заменить на Google таблицы. Структура будет та же.
Разработка
Разработка происходит непосредственно в рамках сервиса PuzzleBot.
Получить бесплатный бонус +7 дней к Креативному тарифу можно по ссылке https://puzzlebot.top/?r=Fmo8Tuss
NocoDB
Настраиваем интеграцию с NocoDB в настройках вашего бота. Откройте Настройки > Интеграции > NocoDB и введите токен от вашего аккаунта. Подробнее.
Создаём новую базу данных с произвольным названием. У меня она будет называться "Статьи". В ней создаём таблицу с произвольным названием. У меня она будет называться "Заявки".
Открываем таблицу "Заявки" и создаём в ней следующие столбцы:
- user_id – число
- name – текст
- about – длинный текст
PuzzleBot
Переменные
- Создаём текстовую переменную about.
- Создаём три интегрированные переменные NocoDB с почти одинаковой структурой:
1. Создаём переменную get_id с типом “Интегрированная”. В качестве интеграции выбираем "NocoDB".
Выбираем свой аккаунт, базу данных и таблицу.
В качестве столбца для вывода выбираем user_id.
2. Создаём переменные get_name и get_about аналогичным образом, меняя только столбец для вывода на name и about соответственно.
Конструктор
1. Создаём мини-приложение с названием "Оставить заявку" (название произвольное). В нём создаём форму ввода с запросом любой дополнительной информации, например портфолио обратившегося.
В дополнительных настройках формы ввода включаем галочку "Дублировать в переменную" и указываем переменную about.
Можно собирать любую информацию на ваше усмотрение.
Действия:
- В действиях мини-приложения добавляем “Создать строку NocoDB”. Выбираем тот же аккаунт, базу данных и таблицу. В поля user_id, name, about вводим переменные {{USER_ID_TEXT}}, {{FIRST_NAME_AND_LAST_NAME_TEXT}} и {{about}} соответственно.
- Добавляем действие “Отправить команду или условие” и вводим название той команды, которая будет отправляться вам при поступлении новой заявки. В дополнительных настройках ставим галочку “Выполнить другому пользователю” и указываем свой @username.
2. Создаём мини-приложение “Просмотр заявки” (название произвольное).В мини-приложении добавляем произвольные блоки, которые будут отображать значения переменных {{get_id}}, {{get_name}} и {{get_about}}.Создаём блок “Клавиатура” и выбираем тип “Фиксированная”. Создаём две кнопки: “Принять” и “Отклонить” — разных цветов, и пока ничего больше не меняем.
3. Создаём два условия "Принять заявку" и "Отклонить заявку"В обоих условиях в качестве проверки указываем "Без проверки"В действиях создаём "Отправить команду или условие", где вводим название команды "Заявка принята" и "Заявка отклонена" для двух условий соответственно.В доп настройках действия ставим галочку на "Выполнить другому пользователю", а в появившееся поле вводим переменную {{get_id}}
В обоих условиях добавляем действие "Удалить строку NocoDB", в качестве фильтров используем соответствие user_id = {{get_id}}
В обоих условиях добавляем действие "Отправить команду или условие" и вводим "Следующая заявка" (это условие мы создадим позже)
4. Создаём условие "Следующая заявка"
В проверке добавляем правило "Проверка переменной", где мы проверяем наличие значения у переменной {{get_id}}
В действиях указываем "Переход к мини-приложению" и вводим мини-приложение "Просмотр заявки"
Для случая, если правило выполнено не будет, можем добавить переход к мини-приложению в котором говорится, что все заявки просмотрены.
5. Возвращаемся к мини-приложению "Просмотр заявки" > "Клавиатура". В кнопках "Принять" и "Отклонить" выбираем действие "Переход к команде или условию" и вводим условие "Принять заявку" и "Отклонить заявку" соответственно.
Публикуем изменения и наслаждаемся результатом! 💙
Автор: @RDGlessons