Кастомные таблицы

Кастомные таблицы

«После того, как бизнес-данные были централизованы и интегрированы, ценность базы данных больше, чем сумма ранее существовавших частей».
— Ларри Эллисон, основатель Oracle


Кастомные таблицы — удобное и практичное хранилище данных, которое вы можете использовать как составную часть решения, создаваемого на Metabot, так и как отдельный сервис, доступный по API из других приложений и платформ.

Кастомные таблицы от Metabot — это альтернатива (или дополнение) к таким продуктам как Google Sheets, AirTable и Notion, созданное специально для разработки приложений с бизнес-логикой.

Примеры использования:

Используя кастомные таблицы в сочетании с диалоговыми сценариями, JavaScript и API конструктором вы сможете создать фронтенд и бэкэнд, которая заменят вам мобильное приложение и серверный бэкэнд.

Таблицы незаменимы при реализации глубоких интеграций мессенджеров в процессы предприятия, диалогового интерфейса к системам предприятия и диалогового подключенного опыта (CCX) — таблицы используются для хранения данных для синхронизации систем.  

Обращаться к таблицам вы можете прямо в диалоговых сценариях вашего бота, через методы JS: вы сможете выполнять операции работы с таблицей, такие как, поиска записей, их редактирования, удаления.

Если вам необходимо обратиться к таблицам Metabot из внешних систем, для этого вы можете создать внутренние API эндпоинты.

С помощью плагина вы сможете расширить методы работы с таблицами, например, сделав прямые обращение к базе данных и вызов SQL.

Работа с SQL доступна на выделенном сервере и в on-premise коробочной версии.

Конструктор таблиц 

Конструктор таблиц находится в верхнем меню бота в разделе Таблицы:

Снимок экрана 2023-02-14 122655.png

Он предназначен для работы с таблицами, например, для создания таблиц, их форматирования и удаления.

Для создания таблицы необходимо нажать кнопку Создать:

Снимок экрана 2023-02-14 123312.png

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

image.png

Опция Синхронизация структуры доступна только администраторам платформы.

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

После создания таблицы появляются функции ее редактирования, удаления, создания полей и их обновления в БД:

image.png

Конструктор полей

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

Снимок экрана 2023-02-17 140114.png

Первым полем любой таблицы всегда является ID строки. Это поле создается автоматически при создании таблицы и не подлежит удалению. По этому полю вы сможете идентифицировать отдельные строки таблицы, а также искать и редактировать записи через JS.

Остальные необходимые поля можно добавить щелкнув по кнопке Создать:

Снимок экрана 2023-02-14 125805.png

В открывшемся окне Создание поля необходимо заполнить информацию о создаваемом поле:

image.png

В имени поля можно указывать только латиницу (только нижний регистр), цифры и подчеркивание.

Снимок экрана 2023-02-17 140408.png

После создания и настройки всех ячеек таблицы можно провести обновление таблицы в базе данных платформы. Для это необходимо в конструкторе таблиц нажать Обновить все поля в БД:

image.png

Это синхронизирует и обновит таблицу в базе данных, а так же сгенерирует ее JSON словарь (Структуру таблицы).

На текущий момент, в качестве базы данных платформа Metabot поддерживает PostgreSQL.

Формирование модели данных через текстовое описание мета-словаря на базе JSON в текущей версии не доступно. 

Просмотр и редактирование данных

После создания структуры таблицы можно вручную заполнить ее данными. Для этого необходимо зайти в Данные в конструкторе таблиц либо, если вы включали опцию Отображать в меню, то нажать на название таблицы в выпадающем списке раздела Таблицы верхнего меню бота.

image.png

Снимок экрана 2023-02-14 132358.png

После этого нажмите на кнопку Создать и добавьте необходимые данные.

кт.png

image.png

После создания запись появится в таблице. Записи так же можно редактировать и удалять.

По итогу у вас получится таблица, которая может выглядеть, например, так:

image.png

Данная таблица "Регионы" будет использоваться для примеров использования методов в Cправочнике функций JS.

Фильтры

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

При задании фильтров и нажатии на кнопку Применить фильтр будут выведены соответствующие записи в таблице:

image.png

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

Связи между таблицами

Представьте ситуацию: У вас есть интернет-магазин, и вам необходимо получить детальную информацию о заказе. Помимо базовых данных (таких как сумма и дата), вам нужны сведения о клиенте, товарах и их характеристиках. Раньше для этого требовалось писать сложные SQL-запросы или реализовывать дополнительную логику в коде.

Теперь в Metabot достаточно один раз настроить связи между сущностями через интерфейс. После этого вы можете обращаться к связанным данным в коде так же просто, как к обычным полям.

Преимущества такого подхода:

Создание связи

Связи между таблицами создаются при помощи JOIN полей.

JOIN поля создаются в меню Структура таблицы.

Без имени.png

Существует два способа создания JOIN поля:

Без имени.png

Без имени.png

Помимо уже названных полей в окне создания можно заполнить следующие поля:

image.png

image.png

image.png

В имени поля можно указывать только латиницу (только нижний регистр), цифры и подчеркивание.

 

НЕ включайте опцию Использовать данную связь при редактировании поля для нескольких связей одного и того же поля текущей таблицы. НЕ включайте данную опцию для JOIN полей второго уровня, так как у такого поля нет физического поля, для его редактирования в текущей таблице.

НЕ включайте опцию Создавать внешний ключ для связи для нескольких связей одного и того же поля текущей таблицы. НЕ включайте данную опцию для JOIN полей второго уровня.

После заполнения всех обязательных полей (Наименование, Заголовок в интерфейсе, Связываемая таблица, Алиас, Поле связываемой таблицы) нажмите на кнопку Сохранить. Поле появится в таблице Структура.

Если вы хотите создать несколько связей с одной и той же таблицей, добавьте уникальное для таблицы число в алиасе. Например: leads, leads2...

Записи в таблицах имеют кликабельные ссылки на записи, на которые они ссылаются. Поля с ссылками выделены синим цветом.

image.png

При выключении активности физического поля, связанные с ним RELATION поля продолжат отображаться в данных таблицы.

Так на скриншоте выше поле Лид содержит ссылку на соответствующую запись в системной таблице лидов, а поле Название ссылку на соответствующую запись о товаре.

image.png

При редактировании записи в ссылающейся таблице связанные поля изменяются с помощью выпадающих списков.

Без имени.png

Если что-то настроено некорректно, то при просмотре или редактировании записей таблицы может возникнуть ошибка 500. Попробуйте отключить лишние опции Использовать данную связь при редактировании поля и Создать внешний ключ, проверьте алиасы и имена полей. Если не получается исправить проблему, обратитесь в поддержку Metabot.

Уровни вложенности

Связанные поля имеют неограниченный уровень вложенности. Рассмотрим на примере:

Так будут выглядеть настройки данного поля:

image.png

В Поле текущей таблицы записывается не физическое поле таблицы, а поле доставаемое из таблицы лидов. В таких многоуровневых JOIN полях обязательно должны быть выключены опции Использовать данную связь при редактировании поля и Создать внешний ключ.

Пример

1. В вашем боте есть таблица заказов orders.

image.png

2. Вам требуется узнать id персоны лида через эту таблицу. Чтобы это сделать можно связать поле lead_id с системной таблицей лидов.

3. Для этого создается JOIN поле lead с типом RELATION описывающее связь между полем lead_id таблицы заказов и полем id в системной таблице лидов.

image.png

4. Теперь при обращении из JS методов вы можете обратиться к данным лида напрямую из таблицы заказов.

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