В данном кейсе — рассмотрим пример прямой интеграции с NocoDB с помощью сервисных блоков HTTP-запросов. Блок отправляет запрос на указанный адрес, описанный в документации api NocoDB и получает от него ответ. Данный пример кейса показывает, как можно интегрировать сервис, которого нет в списке сервисов MoreKIT
Данный способ подойдет в тех случаях, когда:
- В сервисе нет Oauth авторизации
- В сервисе не требуется поддерживать сессию подключения
Задача
Заполнить таблицу в базе данных NocoDB, когда сделка в amoCRM переходит на закрытый этап воронки
Если ранее контакт не фигурировал в базе данных — будет новая запись в таблице
Если у контакта ранее уже были записи в таблице — произойдет обновление строки таблицы
Подключение amoCRM
В MoreKit в разделе Сервисы — ищем в списке сервисов amoCRM, нажимаем на кнопку Добавить, произойдет перенаправление на страницу переадресации amoCRM, где необходимо выбрать нужную CRM, которую надо подключить в MoreKit


В amoCRM нам потребуется создать кастомное поле в карточке контакта, куда будет записываться ID записи таблицы. Он нужен для редактирования строки, если ранее запись по контакту уже была
Создание таблицы в NocoDB
Теперь создадим таблицу в NocoDB

В таблице будут следующие поля:
custom_field (текст)— поля для произвольных данныхlead_id (numeric)— будет хранить в себе id сделкиcontact_id (numeric)— будет хранить в себе id контакта amoCRMdate_closed (date YYYY-MM-DD)— будет хранить в себе дату закрытия сделки
Создание процесса в MoreKIT и установка триггера на закрытый этап в amoCRM
В MoreKIT создадим процесс с типом amoCRM DP. Данный процесс будет принимать данные с триггера воронки amoCRM, когда сделка будет переходить на нужный этап

После создания процесса — копируем ссылку из первоначального блока для установки триггера в amoCRM

Устанавливаем триггер в amoCRM

Теперь при перемещении сделки на закрытый этап воронки в MoreKIT придет событие с ID сделки
Выстраивание схемы в MoreKIT
Далее — выстроим логическую схему
Для настройки блоков HTTP запросов использовалась официальная API документация NocoDB cloud. Для данного процесса нужны методы:
- Create Table Records — запись данных в таблицу
- Update Table Records — обновление строки в таблице
В API документации NocoDB показан пример запроса, который нужно отправить для записи в таблицу. Здесь указывается URL (ссылка на нужный метод API), заголовок (либо "Authorization": "Bearer {token}", либо "xc-token": "{token}" (см. раздел про токены)


Запросы можно отправлять как просто параметрами (object), так и массивом параметров (array of objects). Для наглядности — обновление строки будет происходить массивом объектов, заполнение — одним объектом
Схема для данной задачи будет выглядеть следующим образом:

Для настройки блоков HTTP потребуется API ключ. Берем его из профиля NocoDB


Созданный токен нужен для авторизации запросов к NocoDB
Описание блоков схемы

#1 Найти сделки — ищем сделку по ID из входящих данных. Данный блок получит полные данные о сделке

#2 найти контакты — данный блок находит контакт из сделки

#7 Дата и время — данный блок переводит дату из формата Timestamp, который отдает amoCRM в формат YYYY-MM-DD, который требуется для записи в NocoDB

#3 Проверка — проверяет, заполнено ли техническое поле в карточке контакта. В данное поле будет записываться ID записи при новой записи. Наличие данного поля будет разделять схему на две логические ветки, обновление существующей записи в таблице, либо новая запись в таблицу

#8 HTTP запрос — данный блок отправит запрос на запись строки в NocoDB
Для ссылки на метод нужен ID таблицы, его можно взять из интерфейса NocoDB

URL:ссылка на метод, берем его из документации api NocoDB, метод Create Table Records. В поле ссылки потребуется ID таблицы. Берем его из NocoDBЗаголовки:Здесь нужен заголовок авторизации, либо"Authorization": "Bearer <token>", либо"xc-token": "<token>"Параметры:Ключ — заголовок таблицы, Значение — чем заполнить. Тип данных выбирайте в зависимости от того, какой был создан в таблице

#9 JSON декодировать — данный блок получит ответ от NocoDB, в котором будет Id записи

#10 Обновить контакт — после успешной записи в таблицу — заполняем в карточку контакта Id записи NocoDB. Данное значение потребуется, если нужно будет обновить строку

#5 Добавить в словарь — данный блок необходим для соблюдения формата запроса, который требуется для обновления строки в NocoDB (array of objects). При обычной записи в таблицу NocoDB принимает просто параметры в виде:
{
"Id": 2,
"lead_id": 12334,
"contact_id": 223344
}Но при обновлении строки покажем пример структуры, когда у нас массив объектов, т.е. должно получиться:
[
{
"Id": 2,
"lead_id": 12334,
"contact_id": 2284844
}
]
#6 Добавить в список — данный блок собирает словарь из блока #5 в массив. Структура отправляем данных будет соответствовать документации NocoDB из метода Update Table Records

#4 HTTP запрос — данный блок отправляет запрос на обновление строки. Собранный словарь в массиве передается в тело запроса
Проверка результата
В amoCRM создадим сделку с контактом, заполним кастомное поле и двинем сделку на закрытый этап, где расположен триггер

Двигаем сделку

В MoreKit должно было прийти событие

Как видим — все блоки успешно прошли. Если напротив блока HTTP запрос код ответа 200, значит все успешно
Проверяем теперь NocoDB

Строка в таблице успешно заполнена !
В карточку контакта также должен был записаться id записи

Теперь проверим, обновляется ли контакт. Создадим ему новую сделку и также закроем ее

Событие в MoreKIT также пришло, обновление строки прошло успешно

В таблице также строка обновилась

Подведем итоги
В данном кейсе рассмотрели, как можно выполнить интеграцию с сервисом NocoDB, используя API-документацию сервиса и блоки HTTP запросов в MoreKIT
Получилось выполнить запись строки в таблицу и обновить строку, задача успешно выполнена