Триггеры в Albato используются как способ получения данных из Агбис и передачи их в другие сервисы связок.
Их настройка в целом идентична запросам из настройки авторизации, но есть несколько нюансов. В качестве общего примера рассмотрим настройку на этой команде
Здесь обычно нужно добавить два поля - startDate и stopDate (название можно поменять), для того, чтобы задать промежуток, за который нужно получить данные. Тип данных - обычно string (см. документацию по команде).
Если в данных нам понадобятся массивы, для них нужно завести "Строковые секции" (на примере этой команды).
В ответе команды есть массивы Srvices и Payments - для них например и заведем секции
Уже внутри секции добавляются поля, которые используются в ней - по аналогии с обычными полями.
StopDate = new Date(); StopDate.setHours(StopDate.getHours() + parseInt(credential.timezone, 10)); const StartDate = new Date(StopDate.getTime() - 5 * 60 * 1000); // Функция для форматирования даты в "DD.MM.YYYY HH:mm" function formatDate(date) { const day = String(date.getDate()).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0'); // месяцы 0-11 const year = date.getFullYear(); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); return `${day}.${month}.${year} ${hours}:${minutes}`; } // Форматируем обе даты data.stopDate = formatDate(StopDate); data.startDate = formatDate(StartDate);
function decodeData(item) { if (Array.isArray(item)) { // Если это массив, обрабатываем каждый элемент item.forEach(decodeData); } else if (typeof item === 'object' && item !== null) { // Если это объект, проходим по его ключам for (const key in item) { if (Object.prototype.hasOwnProperty.call(item, key)) { const value = item[key]; if (typeof value === 'string') { // Если значение - строка, декодируем ее item[key] = decodeURIComponent(value); } else if (typeof value === 'object' && value !== null) { // Если значение - объект или массив, рекурсивно вызываем функцию decodeData(value); } } } } } // Запускаем декодирование для всего массива data decodeData(data);
Если у нас в ответе есть массивы (как в случае этой команды), для них указывается соответствующее поле сущности, после чего уже для него добавляем ключи из ответа, соответствующие полям строковой секции
Здесь важно добавить ошибку с типом ExpiredToken - именно она даёт сигнал Albato о необходимости сделать запрос на обновление токена
В качестве значения указываем data.error, условие - "равно", значение - 3 (такой код ответа нам приходит при просроченной сессии).