Приложения логики Azure отправляют сообщение JSON в ServiceBus

Я хочу отправить JSON в Azure ServiceBus из приложения логики, но у меня возникают проблемы с правильным форматированием (я думаю). Приложение логики получает информацию из элемента списка SharePoint Online, поэтому я могу получить к нему доступ в приложении логики как к динамическому контенту. Предположим, что для этого поста шаблон JSON выглядит так:

{ Title: '', CreatedBy:'' }

Теперь в конструкторе приложений логики я установил для типа содержимого значение «text / plain», чтобы обеспечить обработку кодировки (как описано в здесь), а затем добавил шаблон выше в поле« Содержание ». Это выглядит так в конструкторе приложений логики (представление кода), чего я и ожидал:

"ContentData": "@{base64('{ Title: '', CreatedBy:'' }')}"

Если я вернусь к дизайнеру и между одинарными кавычками для «Заголовка» добавлю поле из своего динамического содержимого, дизайнер (представление кода) будет выглядеть так:

"ContentData": "@{base64(concat('{ Title: '',triggerBody()?['Title'],'', CreatedBy:'' }'))}"

При попытке сохранить выдает следующую ошибку:

Не удалось сохранить приложение логики MyLogicApp. Ошибка проверки шаблона: 'Действие шаблона' Send_message 'в строке' 1 'и столбце' 163728 'недопустимо: "Не удалось проанализировать выражение языка шаблона' base64 (concat ('{Title:' ', triggerBody ()? [ 'Title'], '', CreatedBy: ''} '))': ожидаемый токен 'RightParenthesis' и фактический 'Identifier'. ". '.

Мне кажется, что ошибка подсказывает мне проблему, но я не могу ее понять. Может кто-нибудь помочь мне с правильным форматированием, пожалуйста?

Из статьи, на которую я ссылался выше, я тоже пробовал это, но получил ту же ошибку:

"ContentData": "@{base64(concat('{ Title: '', string(triggerBody()?['Title']),'', CreatedBy:'' }'))}"

Изменить: я забыл добавить, что нашел эта статья, в которой рекомендуется добавить decodeBase64 при работе с JSON и приложениями логики. Не уверен, что это актуально, поскольку я не разбираюсь с ServiceBus.


person feganmeister    schedule 15.11.2016    source источник


Ответы (1)


Удалось найти решение методом проб и ошибок. Если было виновато мое хитрое форматирование, поэтому я обновлял, как я решил, в надежде, что кто-то еще сочтет это полезным.

Представление кода приложения логики должно выглядеть так:

"ContentData": "@{base64('{ Title: {triggers().outputs.body.Title}, CreatedBy: {triggers().outputs.body.CreatedBy} }')}"

Поле Content в представлении конструктора приложений логики должно выглядеть следующим образом:

{ Title: {triggers().outputs.body.Title}, CreatedBy: {triggers().outputs.body.CreatedBy} }

Я бы с удовольствием разместил несколько цитирований или вспомогательных статей, но я пока не смог их найти - был бы признателен, если бы у кого-нибудь были какие-либо полезные ресурсы по отправке сообщений в служебную шину через приложения логики, чтобы добавить их в этот пост. Спасибо!

person feganmeister    schedule 17.11.2016