Вопрос

Опять про работу 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-сервиса".

 

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

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