如何使用Logic App将来自Twilio的短信添加到Azure表存储中

如何使用Logic App将来自Twilio的短信添加到Azure表存储中,twilio,azure-table-storage,azure-logic-apps,Twilio,Azure Table Storage,Azure Logic Apps,我能够通过Twilio网络钩子将文本消息接收到Logic应用程序中。 关于 现在我需要将该文本添加到Azure表中。 我添加了一个解析JSON操作 我应该在内容和模式中添加什么? 我发现,如果在内容框内单击,系统会提示我从标记中选择。我想身体就是那个 [更新] 现在我正试图直接插入实体,但我无法在设计器中完成此操作。 如何展开实体文本框以便将JSON放入? [更新2] 我发现我可以通过键入实体文本框来展开它。但是如何插入消息文本? [更新3] 下面是我如何插入实体的 我能够将一条记录放

我能够通过Twilio网络钩子将文本消息接收到Logic应用程序中。

关于 现在我需要将该文本添加到Azure表中。 我添加了一个解析JSON操作 我应该在内容和模式中添加什么?

我发现,如果在内容框内单击,系统会提示我从标记中选择。我想身体就是那个

[更新] 现在我正试图直接插入实体,但我无法在设计器中完成此操作。 如何展开实体文本框以便将JSON放入?

[更新2]

我发现我可以通过键入实体文本框来展开它。但是如何插入消息文本?

[更新3]

下面是我如何插入实体的

我能够将一条记录放入Azure存储表中。但我的短信正文在哪里

我可以看出运行时出现了问题

我想我需要从尸体中提取一具尸体,但我不知道如何提取

[更新4]

显示原始输入显示

{
    "host": {
        "connection": {
            "name": "/subscriptions/somenumbers/resourceGroups/mydomain.com.au/providers/Microsoft.Web/connections/azuretables"
        }
    },
    "method": "post",
    "path": "/Tables/TextMessages/entities",
    "body": {
        "Message": {
            "$content-type": "application/x-www-form-urlencoded",
            "$content": "VG9Db3VudHJ5PUFVJlRvU3RhdGU9JlNtc01lc3NhZ2VTaWQ9U000MTU4YzU1YmVkNDNjZDFiNWZmMTNiODZiNjIyNzkyNSZOdW1NZWRpYT0wJlRvQ2l0eT0mRnJvbVppcD0mU21zU2lkPVNNNDE1OGM1NWJlZDQzY2QxYjVmZjEzYjg2YjYyMjc5MjUmRnJvbVN0YXRlPSZTbXNTdGF0dXM9cmVjZWl2ZWQmRnJvbUNpdHk9JkJvZHk9VGFrZSsyJkZyb21Db3VudHJ5PUFVJlRvPSUyQjYxNDQ3NDA1NjEzJlRvWmlwPSZOdW1TZWdtZW50cz0xJk1lc3NhZ2VTaWQ9U000MTU4YzU1YmVkNDNjZDFiNWZmMTNiODZiNjIyNzkyNSZBY2NvdW50U2lkPUFDN2FhZTMxM2UwZmRlOGVkZjE5YzhjMGY5NjQ1MTgwNjYmRnJvbT0lMkI2MTQxOTU3NTQxNSZBcGlWZXJzaW9uPTIwMTAtMDQtMDE=",
            "$formdata": [
                {
                    "key": "ToCountry",
                    "value": "AU"
                },
                {
                    "key": "ToState",
                    "value": ""
                },
                {
                    "key": "SmsMessageSid",
                    "value": "SM4158c55bed43cd1b5ff13b86b6227925"
                },
                {
                    "key": "NumMedia",
                    "value": "0"
                },
                {
                    "key": "ToCity",
                    "value": ""
                },
                {
                    "key": "FromZip",
                    "value": ""
                },
                {
                    "key": "SmsSid",
                    "value": "SM4158c55bed43cd1b5ff13b86b6227925"
                },
                {
                    "key": "FromState",
                    "value": ""
                },
                {
                    "key": "SmsStatus",
                    "value": "received"
                },
                {
                    "key": "FromCity",
                    "value": ""
                },
                {
                    "key": "Body",
                    "value": "Take 2"
                },
                {
                    "key": "FromCountry",
                    "value": "AU"
                },
                {
                    "key": "To",
                    "value": "+61447405613"
                },
                {
                    "key": "ToZip",
                    "value": ""
                },
                {
                    "key": "NumSegments",
                    "value": "1"
                },
                {
                    "key": "MessageSid",
                    "value": "SM4158c55bed43cd1b5ff13b86b6227925"
                },
                {
                    "key": "AccountSid",
                    "value": "AC7aae313e0fde8edf19c8c0f964518066"
                },
                {
                    "key": "From",
                    "value": "+61419575415"
                },
                {
                    "key": "ApiVersion",
                    "value": "2010-04-01"
                }
            ]
        },
        "PartitionKey": "Twilio",
        "RowKey": "1d5a06ca-9dbd-4ba9-b514-77904710ffc3"
    }
}
[更新5]

我想我需要知道如何从@triggerBody()中获取body属性

[更新6]

我试过了

    "body": {
        "Message": "@triggerBody()['Body']",
        "PartitionKey": "Twilio",
        "RowKey": "@guid()"
    } 
但这会导致一个错误

[更新7]

我正在将HTTPRequest主体更改为使用JSON模式

"$content-type": "application/json",
而不是

 "$content-type": "application/x-www-form-urlencoded",
[后注] 我这样做是因为Azure显示了一条警告消息 “记住在您的请求中包含一个设置为application/json的Content-Type头”,不过这两种方式似乎都可以

[更新8]

当我使用Azure时,我能够在Azure中接收消息


“消息”:“@triggerFormDataValue('Body')”

根据命令,我更新了答案。

如果我们想向Azure表插入消息,我们可以通过直接输入json格式来构造表实体。更多详情请参考演示代码和屏幕截图

注意:Azure表实体需要PartionKey和Rowkey。

{
 "Message": "@triggerFormDataValue('Body')",
 "PartitionKey": "Twilio",
 "RowKey": "@guid()"
}

您也可以仅使用逻辑应用程序操作来完成此操作

您可以使用Parse JSON数据操作来解析来自Twilio响应的JSON。正如您在问题中提到的,Twilio响应的“主体”将成为解析JSON操作的内容

要为schema字段生成模式,可以单击“使用示例负载生成模式”链接。粘贴在Twilio响应中预期返回的JSON负载中,例如:

    {
        "message: "A message from twilio"
    }
然后,您可以使用Parse JSON操作的结果填充Azure表存储


可以通过解析JSON操作填充消息;分区密钥可以硬编码;RowKey可以基于表达式计算-
@guid()

这里需要注意的一点是Twilio webhook的内容类型不是application/json,因此不能使用parse json。它是application/x-www-url-formencoded。您仍然可以解析它,但需要使用表达式。如果打开表达式编辑器,则获取文本正文的方式如下:

triggerFormDataValue('正文')

来自的电话号码是

triggerFormDataValue('From')


您可以在触发器的输出中看到不同形式的片段。

谢谢。我更新了我的问题以显示Parse JSON数据操作,但不确定如何填充它。我更新了我的问题以反映我试图遵循您的答案。我已经更新了答案,我发现我们不需要使用Parse JSON操作,我们可以直接在插入实体操作中构造enity。我更新了我的问题,以显示我尝试使用插入实体操作。我无法复制你的屏幕截图。我想直接在insert entity操作中构造json在insert entity操作中的“消息文本”来自何处?在我的例子中,“消息文本”只是为了测试。在您的情况下,您可以从您提到的屏幕中的正文中获得它。您可以通过单击
显示原始输入
来检查错误请求屏幕截图中的
输入
。请参阅最新更新。我想我需要从“@triggerBody()”中提取正文。是否要获取正文值
获取2
?调查我需要的值存储在@triggerBody()中的body属性中。调查我在HTTP请求中将内容类型从
application/x-www-url-formencoded
更改为
application/json
,两者都起作用了。根据Update8,我能够在插入实体操作中使用“Message”:“@triggerFormDataValue('Body')”。我更改内容类型的原因是Azure中显示了一个小的弹出警告。“记住在请求中包含一个设置为application/json的内容类型标题”我在问题的Update7部分中放了一个屏幕截图。
    {
        "message: "A message from twilio"
    }