Опять про работу 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
![]()
ПОЧЕМУ ТАК?
Нравится
Олег,
в приложении действительно есть ошибка по работе с коллекциями, вложенными в другую коллекцию. Эта ошибка будет исправляться планово в последующих релизах.
На текущий же момент можем предложить несколько обходных вариантов:
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-сервиса".
Для этого достаточно реализовать один элемент чтения данных, и коллекцию из этого элемента передавать в элемент вызова веб-сервиса.
