Вопрос

Опять про работу web-service. Пустые данные. Баг или кривые руки?

Отправляется JSON такого формата. Запускаю из дизайнера процессов
 

{
  "from": {
    "email": "info@mail.com",
    "name": "Flight confirmation"
  },
  "subject": "test subject",
  "content": [
    {
      "type": "html",
      "value": "Hello Lionel, Your flight for Barcelona is confirmed."
    }
  ],
  "personalizations": [
    {
      "to": [
       {
          "email": "someemail@gmail.com",
          "name": "111"
        }
 
      ]
    }
  ]
}

Данные  в процессе заполнены 

Но в отправленном запросе - в полях "to" - null


ПОЧЕМУ ТАК?

Нравится

3 комментария

Олег,

в приложении действительно есть ошибка по работе с коллекциями, вложенными в другую коллекцию. Эта ошибка будет исправляться планово в последующих релизах.
 
На текущий же момент можем предложить несколько обходных вариантов:
1. Если предполагается, что email-адреса будут лежать в БД, то можно использовать элемент "Чтение данных", который возвращает коллекцию. Эту коллекию можно замапить на входящую коллекцию элемента "Вызов web-сервиса".
2. Если значение параметра статично, можно задать значение по-умолчанию для параметра web-сервиса.
3. Можно добавить в процесс параметр-коллекцию и в скрипт-таске заполнить эту коллекцию данными. Этот параметр-коллекцию можно замапить на входящую коллекцию элемента "Вызов web-сервиса".
 
Ниже код скрипт-таска для варианта 3, также прикрепил скриншоты с параметрами БП.

var personalizationsList = new CompositeObjectList<CompositeObject>();
var email =  new CompositeObject();
email["value"] = "test@test.com";
personalizationsList.Add(email);
Set<CompositeObjectList<CompositeObject>>("Personalizations", personalizationsList);
return true;

 

 


 

OLeg1020,

Для более старых версий рекомендую воспользоваться вариантом 1:

1. Если предполагается, что email-адреса будут лежать в БД, то можно использовать элемент "Чтение данных", который возвращает коллекцию. Эту коллекию можно замапить на входящую коллекцию элемента "Вызов web-сервиса".

 

Для этого достаточно реализовать один элемент чтения данных, и коллекцию из этого элемента передавать в элемент вызова веб-сервиса.

Показать все комментарии