мета-данные страницы
  •  

Действия

Действия имеют два смысла в рамках интеграции с Альбато:

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

В целом, настройка действий происходит аналогично настройке триггеров

Но т.к. обычно действия представляют собой передачу данных В Агбис, т.е. один нюанс, связанный с тем, что мы должны передать данные в URLEncoded-формате. Обычно эти данные должны быть в теле как JSON (в разделе триггеров уже было упомянуто, что Albato не умеет "из коробки" сочетать JSON и URLEncoded), поэтому обычно на вкладке Request нужно настроить preScript для осуществления URLEncoded:

if(data){
  Object.entries(data).forEach(([key, value]) => {
    if(value){
      data[key] = encodeURI(value)
    }
  })
}

Ну и не всегда нужно делать URLDecode при обработке ответа. Тут уже смотреть по контексту команды. Если всё же нужно, ниже продублирован код:

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);

Назад