Parse Dynamic Property name in Azure Logic App

核能气质少年 提交于 2019-12-11 06:18:25

问题


I have been playing around with Azure Logic Apps and trying to retrieve a Pocket (ReadItLater) article so that I can create a new task in my preferred Task Manager. I have Two HTTP Connectors (one for Retrieve Operation using Pocket API and another post data to Todoist (my preferred task manager).

I can retrieve the Article and the response looks like (removed a few properties below for easy reading):

{
    "statusCode": 200,
    "headers": {
        "pragma": "no-cache",
        "status": "200 OK"
    },
    "body": {
        "status": 1,
        "complete": 1,
        "list": {
            "586327616": {
                "item_id": "586327616",
                "resolved_id": "586327616",
                "given_url": "http://kenwheeler.github.io/slick/?utm_source=hackernewsletter&utm_medium=email&utm_term=design&mc_cid=58c9499fa2&mc_eid=3aaf6c4e47",
                "given_title": "slick - the last carousel you'll ever need",
                "time_added": "1396652224",
                "time_updated": "1405156517",
                "resolved_title": "slick",
                "resolved_url": "http://kenwheeler.github.io/slick/?utm_source=hackernewsletter&utm_medium=email&utm_term=design&mc_cid=58c9499fa2&mc_eid=3aaf6c4e47",
                "excerpt": "Add slick.js before your closing <body> tag, after jQuery (requires jQuery 1.7 +) <script type=\"text/javascript\" src=\"slick/slick.min.",
                "word_count": "22"
            }
        }
    }
}

Now I want to parse the above response to retrieve individual article properties (i.e. resolved_title). The issue here is the object under the list "586327616" is dynamic and changes for every article, and I can't seem to parse this as an expression in Logic App. My current action in Logic App looks like:

    "postToTodoist": {
        "conditions": [
            {
                "expression": "@equals(outputs('getPocketArticles')['statusCode'], 200)"
            },
            {
                "dependsOn": "getPocketArticles"
            }
        ],
        "inputs": {
            "body": "@{outputs('getPocketArticles')['body']['list'][0]['resolved_title']}",
            "headers": {
                "Content-Type": "application/x-www-form-urlencoded"
            },
            "method": "POST",
            "repeat": {},
            "uri": "https://todoist.com/API/v6/add_item"
        },
        "type": "Http"
    }

For the expression I have tried converting the response to string, using coalesce and trying to access using an index, but nothing seem to work. In the error, it tells me what that the available property is i.e.:

{"code":"InvalidTemplate","message":"Unable to process template language expressions in action 'postToTodoist' inputs at line '1' and column '11': 'The template language expression 'coalesce(body('getPocketArticles')['list']).resolved_title' cannot be evaluated because property 'resolved_title' doesn't exist, available properties are '586327616'. Please see https://aka.ms/logicexpressions for usage details.'."}

I feel that it is not possible to construct an expression without knowing the name of the property, has anyone done something similar?

来源:https://stackoverflow.com/questions/37039961/parse-dynamic-property-name-in-azure-logic-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!