使用Azure Logic App通过HTTP Post(JSON)插入来自SurveyGizmo的响应

时间:2019-09-02 21:19:02

标签: json sql-server azure-logic-apps

SurveyGizmo提供了一个“ webhook”,可将数据以JSON或简单的形式发布到给定的URL。我需要将此数据插入Azure中的SQL Server数据库中。我可以获取触发器(帖子)来启动应用程序,但是很难从提交的JSON中提取数据。

我使用webhook.site来获取通过SurveyGizmo发送的JSON样本。我用它粘贴到触发器(HTTP请求)下的模式的“样本有效负载”中。我在示例中看到了数据,字段名称等,但是在第二步(即SQL Server的插入记录)中,我似乎无法从中获取值。我将在下面粘贴示例JSON。当我在SQL部分下选择“参数”时,看到的是动态内容下的很多“答案”选择。我在下面的示例中看到多次重复,因此我认为它只是无法正确读取模式,或者我需要写出模式。有什么想法吗?

{
  "is_test_data": null,
  "session_id": "1567451759_5d6d6a6f705997.66294551",
  "language": "English",
  "date_started": "2019-09-02 15:15:59 EDT",
  "link_id": null,
  "url_variables": [

  ],
  "ip_address": "99.85.42.146",
  "referer": "https:\/\/app.surveygizmo.com\/builder\/test\/id\/5147523",
  "user_agent": "Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/70.0.3538.102 Safari\/537.36 Edge\/18.18362",
  "response_time": null,
  "data_quality": [

  ],
  "survey_data": {
    "3": {
      "id": 3,
      "type": "TEXTBOX",
      "question": "Please enter your email address.\u00a0 Doing so will allow you to retrieve your individual report at a later date.",
      "section_id": 1,
      "answer": "adan13@example.net",
      "shown": true
    },
    "119": {
      "id": 119,
      "type": "HIDDEN",
      "question": "org",
      "section_id": 1,
      "answer": "",
      "answer_id": 0,
      "shown": true
    }
}

我希望例如通过选择“ ip_address”,该应用将插入“ 99.85.42.146”。但是我在选择的领域(“参数”)一无所获。

enter image description here

1 个答案:

答案 0 :(得分:0)

根据我的理解,SurveyGizmo将json数据发布到您的逻辑应用程序中,并且您的逻辑应用程序将接受json数据并将部分数据插入到SQL Server中。 首先,您使用下面的JSON模式创建一个http触发器:

{
    "properties": {
        "data_quality": {
            "type": "array"
        },
        "date_started": {
            "type": "string"
        },
        "ip_address": {
            "type": "string"
        },
        "is_test_data": {},
        "language": {
            "type": "string"
        },
        "link_id": {},
        "referer": {
            "type": "string"
        },
        "response_time": {},
        "session_id": {
            "type": "string"
        },
        "survey_data": {
            "properties": {
                "3": {
                    "properties": {
                        "answer": {
                            "type": "string"
                        },
                        "id": {
                            "type": "integer"
                        },
                        "question": {
                            "type": "string"
                        },
                        "section_id": {
                            "type": "integer"
                        },
                        "shown": {
                            "type": "boolean"
                        },
                        "type": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "119": {
                    "properties": {
                        "answer": {
                            "type": "string"
                        },
                        "answer_id": {
                            "type": "integer"
                        },
                        "id": {
                            "type": "integer"
                        },
                        "question": {
                            "type": "string"
                        },
                        "section_id": {
                            "type": "integer"
                        },
                        "shown": {
                            "type": "boolean"
                        },
                        "type": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                }
            },
            "type": "object"
        },
        "url_variables": {
            "type": "array"
        },
        "user_agent": {
            "type": "string"
        }
    },
    "type": "object"
}

然后使用所需的配置创建一个SQL服务器插入操作。 在此演示中,我在sql服务器中创建了一个简单表,我将从JSON中提取ip_address,然后将其保存到SQL服务器: enter image description here

enter image description here

由于已正确定义架构,因此您可以在此处选择所需的参数。

使用您提供的json数据保存并运行此逻辑应用,一切按预期进行: enter image description here enter image description here

如果您有任何不清楚的地方,请随时告诉我:)

嗨,迈克,如果您想使用自定义JSON数据测试此逻辑应用,则只需使用一些http客户端工具(例如邮递员或rest客户端)进行一些测试,如果触发,您将获得202代码成功: enter image description here

您可以在此处找到http触发网址: enter image description here

如您所见,当我发布json时,将插入一个新的IP记录:

enter image description here

顺便说一句,我现在没有自由职业者,那么我能提供什么帮助?